天天看點

Flume的初步認識

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架構圖如下

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的初步認識

配置檔案

啟動語句

Flume的初步認識

大概流程

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既能夠實作斷點續傳,又可以保證資料不丢失,還能夠進行實時監控。|

Flume的初步認識