一.flume概覽
1.概述:
Flume是一種分佈式,可靠且可用的服務,用於有效地收集,聚合和移動大量日誌數據。它具有基於流數據流的簡單靈活的架構。它具有可靠的可靠性機制和許多故障 轉移和恢復機制,具有強大的容錯性。它使用簡單的可擴展數據模型,允許在線分析應用程序。
2.大數據架構
- 數據採集(爬蟲\日誌數據\flume)
- 數據存儲(hdfs/hive/hbase(nosql))
- 數據計算(mapreduce/hive/sparkSQL/sparkStreaming/flink)
- 數據可視化
3.Flume基於流式架構,容錯性強,也很靈活簡單。
4.Flume、Kafka用來實時進行數據收集,Spark、Flink用來實時處理數據,impala用來實時查詢。
二.flume角色
1.source
- 數據源,用戶採集數據,source產生數據流,同時會把產生的數據流傳輸到channel。
2.channel
- 傳輸通道,用於橋接source和sink
3.sink
- 下沉,用於收集channel傳輸的數據,將數據源傳遞到目標源
4.event
- 在flume中使用事件作爲傳輸的基本單元
5.Flume常用的Type
(1)source
名稱 | 含義 | 注意點 |
---|---|---|
avro | avro協議的數據源 | 主要用於agent to agent之間的連接 |
exec | unix命令 | 可以命令監控文件 tail -F |
spooldir | 監控一個文件夾 | 不能含有子文件夾,不監控windows文件夾,處理完文件不能再寫數據到文件 ,文件名不能衝突 |
TAILDIR | 既可以監控文件也可以監控文件夾 | 支持斷點續傳功能, 重點使用這個 |
netcat | 監聽某個端口 | |
kafka | 監控卡夫卡數據 |
(2)sink
名稱 | 含義 | 注意點 |
---|---|---|
kafka | 寫到kafka中 | |
HDFS | 將數據寫到HDFS中 | |
logger | 輸出到控制檯 | |
avro | avro協議 | 配合avro source使用 |
(3)channel:
名稱 | 含義 | 注意點 |
---|---|---|
memory | 存在內存中 | |
kafka | 將數據存到kafka中 | |
file | 存在本地磁盤文件中 |
6.flume的啓動參數
(1)命令
參數 | 描述 |
---|---|
help | 打印幫助信息 |
agent | 運行一個Flume Agent |
avro-client | 運行一個Avro Flume 客戶端 |
version | 顯示Flume版本。 |
(2)全局選項
參數 | 描述 |
---|---|
–conf,-c | 在目錄使用配置文件。指定配置文件放在什麼目錄 |
–classpath,-C | 追加一個classpath |
–dryrun,-d | 不真正運行Agent,而只是打印命令一些信息。 |
–plugins-path | 插件目錄列表。默認:$FLUME_HOME/plugins.d |
-Dproperty=value | 設置一個JAVA系統屬性值。 |
-Xproperty=value | 設置一個JAVA -X的選項。 |
(3)Agent選項
參數 | 描述 |
---|---|
–conf-file ,-f <file> | 指定配置文件,這個配置文件必須在全局選項的–conf參數定義的目錄下。(必填) |
–name,-n <name> | Agent的名稱(必填) |
–help,-h | 幫助 |
日誌相關:
- -Dflume.root.logger=INFO,console
該參數將會把flume的日誌輸出到console,爲了將其輸出到日誌文件(默認在FLUME_HOME/logs),可以將console改爲LOGFILE形式,具體的配置可以修改$FLUME_HOME/conf/log4j.properties
- -Dflume.log.file=./wchatAgent.logs
該參數直接輸出日誌到目標文件
(4)Avro客戶端選項
參數 | 描述 |
---|---|
–rpcProps,-P | 連接參數的配置文件。 |
–host,-H | Event所要發送到的Hostname。 |
–port,-p | Avro Source的端口。 |
–dirname |
Avro Source流到達的目錄。 |
–filename,-F | Avro Source流到達的文件名。 |
–headerFile,-R | 設置一個JAVA -X的選項。 |
啓動Avro客戶端要麼指定–rpcProps,要麼指定–host和–port
三.Flume傳輸過程:
source監控某個文件或數據流,數據源產生新的數據,拿到該數據後,將數據封裝在一個Event中,並put到channel後commit提交,channel隊列先進先出,sink去channel隊列中拉取數據,然後寫入到HDFS中。