Flume的概述
Flume基礎架構
Flume入門案列
實作步驟
實時監控檔案
監控單個檔案,并且輸出到控制台
監控單個檔案,并且上傳到HDFS
監控一個檔案夾,上傳至HDFS
監控多個追加檔案
Flume的定義
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統.Flume基于流式架構,靈活簡單。
Flume的優點
1、可以和任意存儲程序內建。
2、輸入的的資料速率大于寫入目的存儲的速率,flume會進行緩沖,減小hdfs的壓力。
3、flume中的事務基于channel,使用了兩個事務模型(sender + receiver),確定消息被可靠發送。
4、Flume使用兩個獨立的事務分别負責從soucrce到channel,以及從channel到sink的事件傳遞。一旦事務中所有的資料全部成功送出到channel,那麼source才認為該資料讀取完成。同理,隻有成功被sink寫出去的資料,才會從channel中移除
Flume架構圖如下
Source是資料的源頭
Channel是通道,傳輸資料
Sink是消費資料
使用Flume監聽一個端口,收集該端口資料,并且列印到控制台
安裝netcat工具:<code>yum install -y nc</code>
判斷44444端口是否被占用:<code>netstat -tunlp | grep 44444</code>
使用netcat指令開啟服務端:<code>nc -lk 44444</code>
使用netcat指令開啟用戶端:<code>nc 127.0.0.1 44444</code>
在flume目錄下建立job,在job目錄下建立Flume Agent配置檔案flume-netcat-logger.conf
在配置檔案下添加以下内容
注意:sinks隻能綁定一個channels,一個channels可以綁定多個sinks
7. flume的測試
配置檔案
啟動語句
大概流程
注意:Flume想要将資料輸出到HDFS,必須持有Hadoop相關jar包
commons-configuration-1.6.jar
hadoop-auth-2.7.2-jar
hadoop-common-2.7.2.jar
hadoop-hdfs-2.7.2.jar
commons-io-2.4.jar
htrace-core-3.1.0-incubating.jar
啟動
運作指令
Exec source 适用于監控一個實時追加的檔案,但不能保證資料不丢失;SpooldirSource能夠保證資料不丢失,且能夠實作斷點續傳,但延遲較高,不能實時監控;而TaildirSource既能夠實作斷點續傳,又可以保證資料不丢失,還能夠進行實時監控。|