天天看點

Hadoop完全分布式安裝Flume應用場景操作步驟

應用場景

按照 搭建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”,檢視效果。

注:再次上傳的檔案名,不能和之前的檔案名相同,否則報錯了!

繼續閱讀