今天補充一篇關于Flume的部落格,前面在講解高可用的Hadoop平台的時候遺漏了這篇,本篇部落格為大家講述以下内容:
Flume NG簡述
單點Flume NG搭建、運作
高可用Flume NG搭建
Failover測試
截圖預覽
下面開始今天的部落格介紹。
Flume NG是一個分布式,高可用,可靠的系統,它能将不同的海量資料收集,移動并存儲到一個資料存儲系統中。輕量,配置簡單,适用于各種日志收集,并支援Failover和負載均衡。并且它擁有非常豐富的元件。Flume NG采用的是三層架構:Agent層,Collector層和Store層,每一層均可水準拓展。其中Agent包含Source,Channel和Sink,三者組建了一個Agent。三者的職責如下所示:
Source:用來消費(收集)資料源到Channel元件中
Channel:中轉臨時存儲,儲存所有Source元件資訊
Sink:從Channel中讀取,讀取成功後會删除Channel中的資訊
下圖是Flume NG的架構圖,如下所示:

圖中描述了,從外部系統(Web Server)中收集産生的日志,然後通過Flume的Agent的Source元件将資料發送到臨時存儲Channel元件,最後傳遞給Sink元件,Sink元件直接把資料存儲到HDFS檔案系統中。
我們在熟悉了Flume NG的架構後,我們先搭建一個單點Flume收集資訊到HDFS叢集中,由于資源有限,本次直接在之前的高可用Hadoop叢集上搭建Flume。
場景如下:在NNA節點上搭建一個Flume NG,将本地日志收集到HDFS叢集。
在搭建Flume NG之前,我們需要準備必要的軟體,具體下載下傳位址如下所示:
安裝
首先,我們解壓flume安裝包,指令如下所示:
配置
環境變量配置内容如下所示:
flume-conf.properties
<a></a>
flume-env.sh
注:配置中的目錄若不存在,需提前建立。
啟動指令如下所示:
注:指令中的agent1表示配置檔案中的Agent的Name,如配置檔案中的agent1。flume-conf.properties表示配置檔案所在配置,需填寫準确的配置檔案路徑。
之後,成功上傳後本地目的會被标記完成。如下圖所示:
在完成單點的Flume NG搭建後,下面我們搭建一個高可用的Flume NG叢集,架構圖如下所示:
圖中,我們可以看出,Flume的存儲可以支援多種,這裡隻列舉了HDFS和Kafka(如:存儲最新的一周日志,并給Storm系統提供實時日志流)。
Flume的Agent和Collector分布如下表所示:
名稱
HOST
角色
Agent1
10.211.55.14
Web Server
Agent2
10.211.55.15
Agent3
10.211.55.16
Collector1
10.211.55.18
AgentMstr1
Collector2
10.211.55.19
AgentMstr2
圖中所示,Agent1,Agent2,Agent3資料分别流入到Collector1和Collector2,Flume NG本身提供了Failover機制,可以自動切換和恢複。在上圖中,有3個産生日志伺服器分布在不同的機房,要把所有的日志都收集到一個叢集中存儲。下面我們開發配置Flume NG叢集
在下面單點Flume中,基本配置都完成了,我們隻需要新添加兩個配置檔案,它們是flume-client.properties和flume-server.properties,其配置内容如下所示:
flume-client.properties
注:指定Collector的IP和Port。
flume-server.properties
注:在另一台Collector節點上修改IP,如在NNS節點将綁定的對象有nna修改為nns。
在Agent節點上啟動指令如下所示:
注:指令中的agent1表示配置檔案中的Agent的Name,如配置檔案中的agent1。flume-client.properties表示配置檔案所在配置,需填寫準确的配置檔案路徑。
在Collector節點上啟動指令如下所示:
注:指令中的a1表示配置檔案中的Agent的Name,如配置檔案中的a1。flume-server.properties表示配置檔案所在配置,需填寫準确的配置檔案路徑。
下面我們來測試下Flume NG叢集的高可用(故障轉移)。場景如下:我們在Agent1節點上傳檔案,由于我們配置Collector1的權重比Collector2大,是以Collector1優先采集并上傳到存儲系統。然後我們kill掉Collector1,此時有Collector2負責日志的采集上傳工作,之後,我們手動恢複Collector1節點的Flume服務,再次在Agent1上次檔案,發現Collector1恢複優先級别的采集工作。具體截圖如下所示:
Collector1優先上傳
HDFS叢集中上傳的log内容預覽
Collector1當機,Collector2擷取優先上傳權限
重新開機Collector1服務,Collector1重新獲得優先上傳的權限
下面為大家附上HDFS檔案系統中的截圖預覽,如下圖所示:
HDFS檔案系統中的檔案預覽
上傳的檔案内容預覽
在配置高可用的Flume NG時,需要注意一些事項。在Agent中需要綁定對應的Collector1和Collector2的IP和Port,另外,在配置Collector節點時,需要修改目前Flume節點的配置檔案,Bind的IP(或HostName)為目前節點的IP(或HostName),最後,在啟動的時候,指定配置檔案中的Agent的Name和配置檔案的路徑,否則會出錯。
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!
<b></b><b></b><b></b><b></b>
聯系方式:
溫馨提示:請大家加群的時候寫上加群理由(姓名+公司/學校),友善管理者稽核,謝謝!