Flume框架基础
* Flume框架基礎
框架簡介:
** Flume提供一個分布式的,可靠的,對大數據量的日志進行高效收集、聚集、移動的服務,Flume只能在Unix環境下運行。
** Flume基于流式架構,容錯性強,也很靈活簡單,主要用于在線實時的引用分析。
宏觀認知:
** Flume、Kafka用來實時進行數據收集,Spark、Storm用來實時處理數據,impala用來實時查詢。
Flume架構圖:
如果所示,Flume架構只有一個Agent角色節點,該角色節點由Source、Channel、Sink組成。
簡單介紹一下各個組成部分的功能:
Source:Source用于采集數據,Source是產生數據流的地方,同時Source會將產生的數據流傳輸到Channel,這個有點類似于Java IO部分的Channel。
Channel:用于橋接Sources和Sinks,類似于一個隊列。
Sink:從Channel收集數據,將數據寫到目標源(可以是下一個Source,也可以是HDFS或者HBase)
數據傳輸單元:Event
** Event是Flume數據傳輸的基本單元
** Flume以事件的形式將數據從源頭送至目的地
** Envent由可選的header和載有數據的一個byte array構成,載有的數據對于flume是不透明的,header容納了key-value鍵值對的無需集合,key在某個集合內唯一,header還可以在上下文路由中拓展使用。
Flume傳輸過程:
如下圖所示,source監控某個文件,文件產生新的數據,拿到該數據后,將數據封裝在一個Event中,并put到channel后commit提交,channel隊列先進先出,sink去channel隊列中拉取數據,然后寫入到hdfs或者HBase中。
* 安裝Flume
** 下載地址傳送門:鏈接:http://pan.baidu.com/s/1eSOOKam 密碼:ll6r
** 拷貝,解壓,不贅述了
** 配置文件
將conf目錄下的flume-env.sh(重命名template文件就行了)文件的JAVA_HOME配置一下,依然不贅述了
** 命令使用
$ bin/flume-ng,出現如下圖所示內容:
解釋:
--conf:指定配置目錄
--name:指定Agent名稱
--conf-file:指定具體的配置文件
* 案例
例1:使用flume監聽某個端口,將端口寫入的數據輸出
Step1、修改配置文件
$ cp -a conf/flume-conf.properties.template conf/flume-telnet.conf,變更為如下內容:
注意最后兩個channel一個有s,一個沒有解釋:
r1:即源,監控的數據源,resource的縮寫
k1:即 sink縮寫
c1:即channel縮寫
Step2、安裝telnet命令
由于默認沒有該命令,我們來使用yum命令安裝一下,注意進入root用戶
# yum -y install telnet
Step3、運行flume端口監控
$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-telnet.conf -Dflume.root.logger==INFO,console
分別指定name,配置文件目錄,配置文件,以及輸出類型和位置。
運行如圖:
Step4、測試
另開一個CRT到z01的界面
執行命令:
$ netstat -an | grep 44444,用于檢查44444端口是否已經被flume成功監聽,如圖:
$ telnet localhost 44444,用于連接本機44444端口,進行數據發送(此處也可是使用其他命令,比如netcat等),此處在另一個窗口中進行telnet命令,原來執行flume的那個窗口查看數據是否成功監聽到,測試如圖:
發送端:
監聽端:
如圖所示,測試成功。如果需要退出telnet,使用ctrl+]鍵,再輸入quit即可。
例2:某個系統框架的日志文件到HDFS
Step1、修改配置文件
更多參數配置的含義,請參看官文:http://flume.apache.org/FlumeUserGuide.html#hdfs-sink
$ cp -a conf/flume-telnet.conf conf/flume-apache-log.conf,變更為如下內容:
知識補充:
Step2、安裝httpd
# yum -y install httpd
(注:httpd是Apache HTTP服務器的主程序。被設計為一個獨立運行的后臺進程,它會建立一個處理請求的子進程或線程的池)
Step3、啟動httpd服務
centOS 7:
# systemctl start httpd.service
centOS 6:
# service httpd start
Step4、修改/var/log目錄下的httpd文件夾的權限,以便于訪問
# chmod 755 /var/log/httpd/
# vi /var/www/html/index.html,隨便寫點什么,如圖:
Step5、執行如下 命令后,使用瀏覽器訪問網頁,查看產生的日志
$ tail -f /var/log/httpd/access_log,多次訪問后,如圖所示:
(瀏覽器打開:192.168.122.200,根據自己的配置IP訪問即可。)
Step6、拷貝Flume所依賴的Hadoop的jar到自己的lib目錄
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/lib/hadoop-auth-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/lib/commons-configuration-1.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce1/lib/hadoop-hdfs-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/hadoop-common-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
拷貝完成后,flume的lib目錄如下:
Step7、啟動Hadoop相關服務后,執行flume-ng命令
$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log.conf
(尖叫提示:如果想讓flume-ng命令在后臺運行,不持續占用終端的操作,可以在命令的末尾加上&符號,即:
$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log.conf &)
檢查flume的log日志,沒有確認沒有ERROR或者WARN錯誤后,刷新index.html頁面,即可看到日志已經遷移至HDFS集群,如圖:
以上便實現了Flume的日志收集,其他收集大同小異,大家可自行參照官方文檔中的參數設置。
* 總結
flume就是一個流式的,日志采集框架,就像是一個掛在后臺的收集器一樣,實時監聽你需要收集的文件或者目錄。
個人微博:http://weibo.com/seal13
QQ大數據技術交流群(廣告勿入):476966007
作者:Z盡際
鏈接:https://www.jianshu.com/p/e71643e6546e
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
轉載于:https://www.cnblogs.com/wzlbigdata/p/8277668.html
總結
- 上一篇: 教师计算机考试取得模块,2015年教师称
- 下一篇: Django (八) 中间件验证码富文