標籤:channels lang 安裝 action 檔案 伺服器 顯示 runner zookeeper
如果說大資料中分布式收集日誌用的是什麼,你完全可以回答Flume!(面試小心問到哦)
首先說一個複製本伺服器檔案到目標伺服器上,需要目標伺服器的ip和密碼:
命令: scp filename ip:目標路徑
一 概述
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日誌採集、彙總和傳輸的系統,Flume支援在日誌系統中定製各類資料發送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。
Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力 Flume提供了從console(控制台)、RPC(Thrift-RPC)、text(檔案)、tail(UNIX tail)、syslog(syslog日誌系統,支援TCP和UDP等2種模式),exec(命令執行)等資料來源上收集資料的能力。
當前Flume有兩個版本Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng。由於Flume-ng經過重大重構,與Flume-og有很大不同,使用時請注意區分。
Flume-og採用了多Master的方式。為了保證配置資料的一致性,Flume引入了ZooKeeper,用於儲存配置資料,ZooKeeper本身可保證配置資料的一致性和高可用,另外,在配置資料發生變化時,ZooKeeper可以通知Flume Master節點。Flume Master間使用gossip協議同步資料。
Flume-ng最明顯的改動就是取消了集中管理配置的 Master 和 Zookeeper,變為一個純粹的傳輸工具。Flume-ng另一個主要的不同點是讀入資料和寫出資料現在由不同的背景工作執行緒處理(稱為 Runner)。 在 Flume-og 中,讀入線程同樣做寫出工作(除了故障重試)。如果寫出慢的話(不是完全失敗),它將阻塞 Flume 接收資料的能力。這種非同步設計使讀入線程可以順暢的工作而無需關注下遊的任何問題。
Flume以agent為最小的獨立運行單位。一個agent就是一個JVM。單agent由Source、Sink和Channel三大組件構成。
二 啟動Flume叢集
1‘ 首先,啟動Hadoop叢集(詳情見前部落格)。
2’ 其次,(剩下的所有步驟只需要在master上操作就可以了)安裝並配置Flume任務,內容如下:
將Flume 安裝包解壓到/usr/cstor目錄,並將flume目錄所屬使用者改成root:root。
tar -zxvf flume-1.5.2.tar.gz -c /usr/cstor
chown -R root:root /usr/cstor/flume
3‘ 進入解壓目錄下,在conf目錄下建立test.conf檔案並添加以下配置內容:
1 #定義agent中各組件名稱 2 agent1.sources=source1 3 agent1.sinks=sink1 4 agent1.channels=channel1 5 # source1組件的配置參數 6 agent1.sources.source1.type=exec 7 #此處的檔案/home/source.log需要手動產生,見後續說明 8 agent1.sources.source1.command=tail -n +0 -F /home/source.log 9 # channel1的配置參數10 agent1.channels.channel1.type=memory11 agent1.channels.channel1.capacity=100012 agent1.channels.channel1.transactionCapactiy=10013 # sink1的配置參數14 agent1.sinks.sink1.type=hdfs15 agent1.sinks.sink1.hdfs.path=hdfs://master:8020/flume/data16 agent1.sinks.sink1.hdfs.fileType=DataStream17 #時間類型18 agent1.sinks.sink1.hdfs.useLocalTimeStamp=true19 agent1.sinks.sink1.hdfs.writeFormat=TEXT20 #檔案首碼21 agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d-%H-%M22 #60秒滾動產生一個檔案23 agent1.sinks.sink1.hdfs.rollInterval=6024 #HDFS塊副本數25 agent1.sinks.sink1.hdfs.minBlockReplicas=126 #不根據檔案大小滾動檔案27 agent1.sinks.sink1.hdfs.rollSize=028 #不根據訊息條數滾動檔案29 agent1.sinks.sink1.hdfs.rollCount=030 #不根據多長時間未收到訊息滾動檔案31 agent1.sinks.sink1.hdfs.idleTimeout=032 # 將source和sink 綁定到channel33 agent1.sources.source1.channels=channel134 agent1.sinks.sink1.channel=channel1
4‘ 然後,在HDFS上建立/flume/data目錄:
cd /usr/cstor/hadoop/bin
./hdfs dfs -mkdir /flume
./hdfs dfs -mkdir /flume/data
5‘ 最後,進入Flume安裝的bin目錄下
cd /usr/cstor/flume/bin
6‘ 啟動Flume,開始收集日誌資訊。
./flume-ng agent --conf conf --conf-file /usr/cstor/flume/conf/test.conf --name agent1 -Dflume.root.logger=DEBUG,console
!!!>>運行此命令有時候會出現一個許可權問題,此時需要用命令 chmod o+x flume-ng
如果正常運行,最後悔顯示 started,
三 收集日誌
1’ 啟動成功之後需要手動產生訊息源即設定檔中的/home/source.log,使用如下命令去不斷的寫入文字到/home/source.log中:
2‘ 到此就可以去查看產生結果:
小結:
這隻是配置Flume,然後簡單的讀寫日誌。想要深入下去,還要收集更複雜,更龐大的日誌。
大資料【八】Flume部署