您好,登錄后才能下訂單哦!
這篇文章主要講解了“Flume如何部署”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Flume如何部署”吧!
Flume是Cloudera提供的一個高可用、高可靠、分布式的海量日志采集、聚合和傳輸的系統。Flume支持在日志系統中定制各類數據發送方用于收集數據,同時Flume提供對數據的簡單處理,并將數據處理結果寫入各種數據接收方的能力。
Flume作為Cloudera開發的實時日志收集系統,受到了業界的認可與廣泛應用。2010年11月Cloudera開源了Flume的第一個可用版本0.9.2,這個系列版本被統稱為Flume-OG,重構后的版本統稱為Flume-NG。改動的另一原因是將 Flume 納入 Apache 旗下,Cloudera Flume改名為Apache Flume成為Apache核心項目。
Flume(水道)以agent為最小的獨立運行單位。一個agent就是一個JVM。單agent由Source、Sink和Channel三大組件構成,如下圖:
Flume的數據流由事件(Event)貫穿始終。事件是Flume的基本數據單位,它攜帶日志數據(字節數組形式)并且攜帶有頭信息,這些Event由Agent外部的Source生成,當Source捕獲事件后會進行特定的格式化,然后Source會把事件推入(單個或多個)Channel中。可以把Channel看作是一個緩沖區,它將保存事件直到Sink處理完該事件。Sink負責持久化日志或者把事件推向另一個Source。以下是Flume的一些核心概念:
組件 | 功能 |
---|---|
Agent | 使用JVM 運行Flume。每臺機器運行一個agent,但是可以在一個agent中包含多個sources和sinks。 |
Client | 生產數據,運行在一個獨立的線程。 |
Source | 從Client收集數據,傳遞給Channel。 |
Sink | 從Channel收集數據,運行在一個獨立線程。 |
Channel | 連接 sources 和 sinks ,這個有點像一個隊列。 |
Events | 可以是日志記錄、 avro 對象等。 |
hadoop用戶下 1) 下載 wgte http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0.tar.gz cdh6.7對應文檔: http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0/ 2) 解壓到~/app,檢查用戶和用戶組 tar -xzvf flume-ng-1.6.0-cdh6.7.0.tar.gz -C ~/app/ 3) 添加到系統環境變量 vim ~/.bash_profile export FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh6.7.0-bin export PATH=$FLUME_HOME/bin:$PATH source ~/.bash_profile 4) 配置flume的jdk路徑 $FLUME_HOME/conf/flume-env.sh cp flume-env.sh.template flume-env.sh export JAVA_HOME=/usr/java/jdk1.8.0_45
配置flume加載的配置文件:
#從指定的網絡端口上采集日志到控制臺輸出 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = netcat a1.sources.r1.bind = 0.0.0.0 a1.sources.r1.port = 44444 # Describe the sink a1.sinks.k1.type = logger # Use a channel which buffers events in memory a1.channels.c1.type = memory # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
啟動flume:
./flume-ng agent \ --name a1 \ --conf $FLUME_HOME/conf \ --conf-file /home/hadoop/script/flume/telnet-flume.conf \ -Dflume.root.logger=INFO,console \ -Dflume.monitoring.type=http \ -Dflume.monitoring.port=34343
-Dflume.root.logger=INFO,console -- 日志級別
-Dflume.monitoring.type=http -- http輸出日志
-Dflume.monitoring.port=34343 -- http 端口
未安裝telnet,先安裝telnet命令
[root@locahost ~]#yum install -y telnet-server [root@locahost ~]#yum install -y telnet 由于telnet服務也是由xinetd守護的,所以安裝完telnet-server,要啟動telnet服務就必須重新啟動xinetd [root@locahost ~]#service xinetd restart
結果測試:
[root@hadoop001 ~]# telnet localhost 44444 Trying ::1... Connected to localhost. Escape character is '^]'. asd OK asd OK asd OK asd OK
控制臺日志輸出:
(LoggerSink.java:94)] Event: 數據流事件 有,由【headers】【body】構成,分別為字節數組+內容
2018-08-09 19:20:21,272 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog 2018-08-09 19:20:21,338 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] jetty-6.1.26.cloudera.4 2018-08-09 19:20:21,391 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Started SelectChannelConnector@0.0.0.0:34343 2018-08-09 19:29:15,336 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D asd. } 2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D asd. } 2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D asd. } 2018-08-09 19:29:15,338 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D asd. }
http輸出:
名稱 | 含義 | 注意點 |
---|---|---|
avro | avro協議的數據源 | |
exec | unix命令 | 可以命令監控文件 tail -F |
spooldir | 監控一個文件夾 | 不能含有子文件夾,不監控windows文件夾 處理完文件不能再寫數據到文件 文件名不能沖突 |
TAILDIR | 既可以監控文件也可以監控文件夾 | 支持斷點續傳功能,重點使用這個 |
netcat | 監聽某個端口 | |
kafka | 監控卡夫卡數據 |
名稱 | 含義 | 注意點 |
---|---|---|
kafka | 寫到kafka中 | |
HDFS | 將數據寫到HDFS中 | |
logger | 輸出到控制臺 | |
avro | avro協議 | 配合avro source使用 |
名稱 | 含義 | 注意點 |
---|---|---|
memory | 存在內存中 | |
kafka | 將數據存到kafka中 | |
file | 存在本地磁盤文件中 |
感謝各位的閱讀,以上就是“Flume如何部署”的內容了,經過本文的學習后,相信大家對Flume如何部署這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。