flume安裝和介紹

 1、安裝
一、flume-ng-1.5.0-cdh5.3.6.tar.gz 下載
連接:https://pan.baidu.com/s/1AWPGP2qnY6_VpYr_iSnJ3w 密碼:tiog
二、對flume進行解壓縮:tar -zxvf flume-ng-1.5.0-cdh5.3.6.tar.gz
三、對flume目錄進行重命名:mv apache-flume-1.5.0-cdh5.3.6-bin flume
四、配置相關的環境變量java

vi ~/.bashrc
export FLUME_HOME=/usr/local/bigdata/flume
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
source ~/.bashrc

五、修改配置文件 flume-conf.properties
進入conf目錄下,添加以下,下面agent監聽指定文件夾,並上傳到HDFS上去:數據庫

root@spark1:/usr/local/bigdata/flume# cd ./conf
touch flume-conf.properties
vim flume-conf.properties
#agent1
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/usr/local/bigdata/flume_logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
#channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/usr/local/bigdata/flume_logs_tmp_cp
agent1.channels.channel1.dataDirs=/usr/local/bigdata/flume_logs_tmp
#sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://spark1:9000/flume_logs
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d

建立本地文件夾apache

mkdir /usr/local/bigdata/flume_logs
mkdir /usr/local/bigdata/flume_logs_tmp_cp
mkdir /usr/local/bigdata/flume_logs_tmp
hdfs dfs -mkdir /flume_logs

六、修改配置文件vim

cp flume-env.sh.template flume-env.sh
vim flume-env.sh

添加java完整路徑緩存

export JAVA_HOME=/usr/local/bigdata/jdk

啓動flumebash

flume-ng agent -n agent1 -c conf -f /usr/local/bigdata/flume/conf/flume-conf.properties -Dflume.root.logger=DEBUG,console

七、測試

在 /usr/local/bigdata/flume_logs 目錄下建立一個文件,flume會自動上傳到hdfs中
查看hdfs目錄服務器

root@spark1:/usr/local/bigdata/flume_logs# hdfs dfs -lsr /flume_logs
lsr: DEPRECATED: Please use 'ls -R' instead.
-rw-r--r--   3 root supergroup         25 2018-09-17 15:03 /flume_logs/2018-09-17.1537167831660
-rw-r--r--   3 root supergroup         11 2018-09-17 15:07 /flume_logs/2018-09-17.1537168036300

 查看日誌文件分佈式

root@spark1:/usr/local/bigdata/flume_logs# hdfs dfs -text /flume_logs/2018-09-17.1537167831660

hello flume 
hello word

2、flume介紹

1. Flume OG(original generation, 2009年7月):分佈式日誌收集系統,有Master概念,依賴於Zookeeper,分爲agent, collector, storage三種角色

2. Flume NG(next generation, 2011年10月):代碼重構,功能精簡,去掉master, collector角色,專一數據的收集與傳遞測試

3.spa

 

 

4.Flume Flow:

Flow:數據採集流程·

Event:消息處理的最小單位,帶有一個可選的消息頭

Agent:一個獨立的Flume進程,包含組件Source. Channel, Sink

Source: 以event爲單位接收信息,並確保信息被推送(push)到channel .

Channel:緩存信息,確保信息在被sink處理前不會丟失,

Sink:從channel中拉取(pull)並處理信息 .

Interceptor: event攔截器,能夠修改或丟棄event

處理流程:source以event爲單位從數據源接收信息,而後保存到一個或多個channel中 (能夠通過一個或多個interceptor的預處理) , sink從channel中拉取並處理信息(保存,丟棄或傳遞到下一個agent) ,而後通知channel刪除信息

5.Source

Avro:監聽地址接收avro信息

Thrift:監聽地址,接收thrift信息

JMS:監聽JMS地址,接收jms信息

Exec:監聽命令輸出,如tail-fxx.log

Spooling Directory:監聽放置到指定文件夾下的新文件,讀取文件中的內容,

Kafka:監聽kafka服務器,接收kafka消息

自定義:自定義的source

6.channel

Memory Channel:Event數據存儲在內存中。處理速度快,可是不能保證信息的持久化,並且容量受限於內存大小。

File Channel:Event數據存儲在磁盤文件中。處理速度通常,可是能夠保證信息不會丟失,,容量也幾乎無限制.

JDBC Channel:Event數據存儲在持久化存儲中,當前Flume Channel內置支持Derby

Spillable Memory Channel :Event數據存儲在內存中和磁盤上,當內存隊列滿了,會持久化到磁盤文件,(當前爲試驗性的,不建議生產環境使用)

自定義Channel:實現Custom Channel

7.sink

HDFS:數據寫入HDFS

Hive:數據寫入Hive數據

Logger:寫入日誌文件

Avтo:數據被轉換成Avro Event,而後發送到配置的RPC端口上,

Thrift:數據被轉換成Thrift Event,而後發送到配置的RPC端口上.

HBase:數據寫入HBase數據庫

ElasticSearch:數據發送到Elastic Search搜索服務器(集羣)

Kafka:數據發送到Kafka

Null:丟棄到全部數據

Custom:自定義Sink實現

相關文章
相關標籤/搜索