flume的概念和基本使用

2021-07-25 18:44:54 字數 2900 閱讀 4910

flume是乙個分布式的、可靠的、可用的以及高效的對大量資料日誌進行收集、聚集、移動資訊的服務。flume是乙個可容錯的、健壯的並且非常簡單的流式資料框架,他只需要簡單配置source、channel以及sink後,編寫一條命令就可實時採集資料。

agent的三個組成部分為:source、channel和sink。

source:用於採集資料,source是產生資料流的地方,同時,source會將產生的資料傳輸到channel上。

channel:連線source和sink,類似佇列

筆者使用的hadoop版本是cdh-5.3.6,所以選擇的flume對應版本是flume-ng-1.5.0-cdh.5.3.6,這裡簡單介紹下,flume大的版本可以分為flume-og和flume-ng,其中og中的o筆者以前以為是old的意思,但是看了官方介紹是orginal的意思,ng的n也不是new 的意思,而是next(下一代)的意思,兩個版本的差別還是比較大的。其中0.9x版本以前是flume-og,1.x以後的版本是flume-ng。
基本使用:

基本使用就是簡單的從source讀訊息到sink

flume基本使用的簡單架構如下:

場景1:從本地檔案到本地檔案

source:hive.log (某個日誌檔案)

channel:mem(記憶體通道)

sink:log(另乙個日誌檔案)

配置檔案:

執行後:

場景2:從本地檔案到本地檔案,使用file channel

source:hive.log (某個日誌檔案)

channel:filechannel

sink:log(另乙個日誌檔案)

配置檔案:

執行:

場景3:從本地檔案到hdfs

source:hive.log (某個日誌檔案)

channel:mem(記憶體通道)

sink:hdfs

同時,需要把hadoop下面的commons-configuration-1.6.jar、hadoop-auth-2.5.0-cdh5.3.6.jar、hadoop-common-2.5.0-cdh5.3.6.jar和hadoop-hdfs-2.5.0-cdh5.3.6.jar拷貝到flume_home\lib下面

配置檔案:

執行結果不再贅述。
1.flume向hdfs傳輸資料時,有可能產生很多小的檔案,這在企業中肯定是不行的,hdfs要求儲存檔案越大越好,至少是128m,如何設定flume中hdfs的sink?

2.使用flume把資料匯入hive表中,如果hive使用的是分割槽表,比如按照年、月、日分割槽,那麼如何把每天的資料匯入到對應的日期目錄下,此時如何配置flume中的hdfs的sink?

3.如何在指定的資料夾過濾掉一些不需要的檔案,例如以***開頭或者.***結尾的檔案?

解決上述幾個問題就需要了解sink的一些其他配置,

1) 在sink中,通過sourcename.sinks.sinkname.hdfs.rollsize可以設定輸出檔案的最大大小,例如我們可以設定10k,那麼配置就是:

sourcename.sinks.sinkname.hdfs.rollsize=102400

2)在sink中,可以通過系統時間來進行動態資料夾的生成,例如我們期望按照每小時來分割槽,那麼分割槽目錄是:

2014-10-12/01

/02...

/24該需求可以通過sourcename.sinks.sinkname.path引數來配置,那麼上面需求的配置就是:

sourcename.sinks.sinkname.path=/flume/events/%y-%m-%d/%h

(注意:,其中1和2會有衝突,例如我們設定檔案大小為128m,但是我們分割槽時按照分鐘來分割槽,那麼有可能1分鐘的資料沒有128m,那麼檔案大小肯定不會是128m)

3)如果期望過濾掉指定檔名的檔案,那需要通過配置source中的sourcename.sinks.sinkname.ignorepattern來設定,如果期望過濾掉.tmp結尾的檔案,那麼配置如下:

sourcename.sinks.sinkname.ignorepattern=([^]*\.tmp)

那麼最終的flume的配置檔案如下:

flume的基本使用就介紹到這裡。

Flume 基本使用

配置agent init a1.sources s1 a1.channels c1 a1.sinks k1 sources 1 動態監控單個日誌檔案 a1.sources.s1.type exec a1.sources.s1.command tail f opt cdh5.7.6 hive 1.1....

Flume 學習筆記 2 基本概念

data flow data flow描述了資料從產生,傳輸 處理並最終寫入目標的一條路徑。多個資料流被組合成logical node用來傳輸或聚合他們收到的資料。logical node又組合鏈來填充資料流。邏輯節點通過配置檔案組織。下圖中實線為資料流。agent 從資料來源收集資料和生成日誌,並...

flume的原理和使用

flume是cloudera公司的一款高效能 高可能的分布式日誌收集系統。flume的核心是把資料從資料來源收集過來,再送到目的地。為了保證輸送一定成功,在送到目的地之前,會先快取資料,待資料真正到達目的地後,刪除自己快取的資料。flume傳輸的資料的基本單位是event,如果是文字檔案,通常是一行...