應用場景
按照 搭建hadoop完全分布式叢集博文 搭建完hadoop叢集後,發現hadoop完全分布式叢集自帶了HDFS,MapReduce,Yarn等基本的服務,一些其他的服務元件需要自己重新安裝,比如Hive,Hbase,sqoop,zookeeper,spark等,這些元件叢集模式都在前面相關博文中有介紹,今天我們需要安裝另外一個元件,它就是日志采集工具Flume。
操作步驟
1. Flume介紹
Cloudera 開發的分布式日志收集系統 Flume,是 hadoop 周邊元件之一。其可以實時的将分布在不同節點、機器上的日志收集到 hdfs 中。Flume 初始的發行版本目前被統稱為 Flume OG(original generation),屬于 cloudera。但随着 FLume 功能的擴充,Flume OG 代碼工程臃腫、核心元件設計不合理、核心配置不标準等缺點暴露出來,尤其是在 Flume OG 的最後一個發行版本 0.94.0 中,日志傳輸不穩定的現象尤為嚴重,這點可以在 BigInsights 産品文檔的 troubleshooting 闆塊發現。為了解決這些問題,2011 年 10 月 22 号,cloudera 完成了 Flume-728,對 Flume 進行了裡程碑式的改動:重構核心元件、核心配置以及代碼架構,重構後的版本統稱為 Flume NG(next generation);改動的另一原因是将 Flume 納入 apache 旗下,cloudera Flume 改名為 Apache Flume。
2. Flume1.7.0下載下傳
Flume1.7.0安裝包下載下傳位址 Flume其他版本下載下傳位址
- 注意:
- 下載下傳完安裝包後,将Flume的安裝包上傳到主節點的opt目錄下
3. Flume1.7.0解壓縮和更換目錄
# cd /opt
# tar -xzvf apache-flume-1.7.0-bin.tar.gz
# mv apache-flume-1.7.0-bin flume1.7.0
# chmod 777 -R /opt/flume1.7.0 #給目錄授權
4. 配置環境變量
# vim /etc/profile
export FLUME_HOME=/opt/flume1.7.0
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$FLUME_HOME/bin
# source /etc/profile
5. 測試使用
5.1 添加flume-conf.properties配置檔案
# cd /opt/flume1.7.0/conf
# vim flume-conf.properties
# a.conf: A single-node Flume configuration
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /opt/log
a1.sources.r1.fileHeader = true
a1.sources.r1.deserializer.outputCharset=UTF-8
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hadoop0:9000/log
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat=Text
a1.sinks.k1.hdfs.maxOpenFiles = 1
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 1000000
a1.sinks.k1.hdfs.batchSize = 100000
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000000
a1.channels.c1.transactionCapacity = 100000
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
5.2 建立目錄并授權
# mkdir /opt/log
# chmod 777 -R /opt/log
注:hdfs的log目錄,不用手動去建立,它會自動生成的
5.3 運作
# cd /opt/flume1.7.0/
# bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name a1 -Dflume.root.logger=INFO,console
5.4 運作效果
指令執行後,它會存在一個程序,一直在監聽目錄,是以會一直開着!
效果就是:當你在/opt/log目錄下添加了txt文檔後,HDFS中的log目錄下會生成一個檔案,将txt中的内容拷貝到HDFS的log中,當再傳入一個檔案時,Flume會将txt中的内容添加到已建立的檔案後面!如果關閉這個flume agent,重新開啟一個,那麼HDFS的log中,會重新生成一個檔案進行收集!
5.5 測試
在/opt/log目錄下,上傳一個a1.txt文檔,裡面寫着“北京歡迎您,test1”,在/opt/log/目錄下重新整理,看到a1.txt檔案,立馬改變成為a1.txt.COMPLETED,檢視HDFS的log目錄,發現增加了一個檔案,檢視其中内容。
當在/opt/log目錄下,再上傳一個a2.txt文檔,裡面寫着“北京歡迎您,test2”,檢視效果。
注:再次上傳的檔案名,不能和之前的檔案名相同,否則報錯了!