Hadoop之Flume详解
1、日志采集框架Flume
1.1 Flume介紹
Flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。
Flume可以采集文件,socket數(shù)據(jù)包等各種形式源數(shù)據(jù),又可以將采集到的數(shù)據(jù)輸出到HDFS、hbase、hive、
kafka等眾多外部存儲系統(tǒng)中
一般的采集需求,通過對flume的簡單配置即可實(shí)現(xiàn)
Flume針對特殊場景也具備良好的自定義擴(kuò)展能力,因此,flume可以適用于大部分的日常數(shù)據(jù)采集場景
1.2 運(yùn)行機(jī)制
1、 Flume分布式系統(tǒng)中最核心的角色是agent,flume采集系統(tǒng)就是由一個個agent所連接起來形成
2、 每一個agent相當(dāng)于一個數(shù)據(jù)傳遞員(Source 到 Channel 到 Sink之間傳遞數(shù)據(jù)的形式是Event事件;
Event事件是一個數(shù)據(jù)流單元。) ,內(nèi)部有三個組件:
a) Source:采集源,用于跟數(shù)據(jù)源對接,以獲取數(shù)據(jù)
b) Sink:下沉地,采集數(shù)據(jù)的傳送目的,用于往下一級agent傳遞數(shù)據(jù)或者往最終存儲系統(tǒng)傳遞數(shù)據(jù)
c) Channel:angent內(nèi)部的數(shù)據(jù)傳輸通道,用于從source將數(shù)據(jù)傳遞到sink
1.3 采集案例
1、采集目錄到HDFS
采集需求:某服務(wù)器的某特定目錄下,會不斷產(chǎn)生新的文件,每當(dāng)有新文件出現(xiàn),就需要把文件采集到HDFS中去
根據(jù)需求,首先定義以下3大要素
1) 采集源,即source——監(jiān)控文件目錄 : spooldir
2) 下沉目標(biāo),即sink——HDFS文件系統(tǒng) : hdfs sink
3) source和sink之間的傳遞通道——channel,可用file channel 也可以用內(nèi)存channel
配置文件編寫:
# 配置source組件
agent1.sources.source1.type = spooldir
agent1.sources.source1.spoolDir = /home/hadoop/logs/
# 配置sink組件
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path =hdfs://hdp-node-01:9000/weblog/flume-collection/%y-%m-%d/%H-%M
agent1.sinks.sink1.hdfs.filePrefix = access_log
Channel參數(shù)解釋:
capacity:默認(rèn)該通道中最大的可以存儲的event數(shù)量
trasactionCapacity:每次最大可以從source中拿到或者送到sink中的event數(shù)量
keep-alive:event添加到通道中或者移出的允許時間
2、采集文件到HDFS
采集需求:比如業(yè)務(wù)系統(tǒng)使用log4j生成的日志,日志內(nèi)容不斷增加,需要把追加到日志文件中的數(shù)據(jù)實(shí)時采集到hdfs
根據(jù)需求,首先定義以下3大要素
1) 采集源,即source——監(jiān)控文件內(nèi)容更新 : exec ‘tail -F file’
2) 下沉目標(biāo),即sink——HDFS文件系統(tǒng) : hdfs sink
3) Source和sink之間的傳遞通道——channel,可用file channel 也可以用 內(nèi)存channel
# Describe/configure tail -F source1
agent1.sources.source1.type = exec
agent1.sources.source1.command = tail -F /home/hadoop/logs/access_log
agent1.sources.source1.channels = channel1
# Describe sink1
agent1.sinks.sink1.type = hdfs
#a1.sinks.k1.channel = c1
agent1.sinks.sink1.hdfs.path =hdfs://hdp-node-01:9000/weblog/flume-collection/%y-%m-%d/%H-%M
agent1.sinks.sink1.hdfs.filePrefix = access_log
?
轉(zhuǎn)載于:https://www.cnblogs.com/atomicbomb/p/9904867.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop之Flume详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Little_things】jsp+M
- 下一篇: BusyBox telnet配置