亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
884
2022-05-28
基本原理
簡介
Flume是一個分布式、可靠和高可用的海量日志聚合系統,支持在系統中定制各類數 據發送方,用于收集數據;同時,Flume提供對數據進行簡單處理,并寫入各種數據 接受方(可定制)的能力。Flume有如下幾個特點:
● 收集、聚合事件流數據的分布式框架
● 通常用于log數據
● 采用ad-hoc方案(多跳,無中心控制節點方案)
● 聲明式配置,可以動態更新配置
● 提供上下文路由功能
● 支持負載均衡和故障轉移
● 完全的可擴展
結構
Flume Agent由Source、Channel、Sink組成,如圖1-31所示,模塊說明如表1-4所 示。
圖 1-31 Flume 結構圖 1
表 1-4 模塊說明
Flume也可以配置成多個Source、Channel、Sink,如圖1-32所示:
圖 1-32 Flume 結構圖 2
Flume還支持多個Flume Agent級聯,如圖1-33所示。
圖 1-33 Flume 級聯結構圖
原理
Agent之間的可靠性
Agent之間數據交換流程如圖1-34所示
圖 1-34 Agent 數據傳輸流程
Flume采用基于Transactions的方式保證數據傳輸的可靠性,當數據從一個Agent 流向另外一個Agent時,兩個Transactions已經開始生效。發送Agent的Sink首先 從Channel取出一條消息,并且將該消息發送給另外一個Agent。如果接受消息的 Agent成功地接受并處理消息,那么發送Agent將會提交Transactions,標識一次 數據傳輸成功可靠地完成。
當接收Agent接受到發送Agent發送的消息時,開始一個新的Transactions,當該 數據被成功處理(寫入Channel中),那么接收Agent提交該Transactions,并向 發送Agent發送成功響應。
如果在某次提交(commit)之前,數據傳輸出現了失敗,將會再次開始上一次 Transactions,并將上次發送失敗的數據重新傳輸。因為commit操作已經將 Transactions寫入了磁盤,那么在進程故障退出并恢復業務之后,仍然可以繼續上 次的Transactions。
與組件的關系
與 HDFS 的關系
當用戶配置HDFS作為Flume的Sink時,HDFS就作為Flume的終數據存儲系統, Flume將傳輸的數據全部按照配置寫入HDFS中。
與 HBase 的關系
當用戶配置HBase作為Flume的Sink時,HBase就作為Flume的終數據存儲系統, Flume將傳輸的數據全部按照配置寫入HBase中。
增強特性
提升傳輸速度
可以配置將指定的行數作為一個Event,而不僅是一行,提高了代碼的執行效率以及減 少寫入磁盤的次數。
傳輸超大二進制文件
Flume根據當前內存情況,自動調整傳輸超大二進制文件的內存占用情況,不會導致 Outofmemory出現。
支持定制傳輸前后準備工作
Flume支持定制腳本,指定在傳輸前或者傳輸后執行指定的腳本,用于執行準備工 作。
管理客戶端告警
Flume通過MonitorServer接收Flume客戶端告警,并上報Manager告警管理中心。
Hadoop FusionInsight
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。