共計 3448 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 Flume 入門知識點有哪些,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1、Flume 是什么?
○ Flume 是由 cloudera 開發的實時日志收集系統
○ 核心概念是由一個叫做 Agent(代理節點) 的 java 進程運行在日志收集節點
○ Flume 在 0.94.0 版本以前(包含 0.94.0 版本) 稱為 Cloudera Flume OG, 由于 0.94.0 版本以前存在各種缺陷, 因此不得不重新設計 Flume 并更名為 Apache Flume NG(1.0.0 開始)
○ Flume NG VS Flume OG
– 目前版本都是 Flume NG(1.0.0 版本之后)
架構方面:
□ Flume OG 有三種角色的節點:代理節點 agent、收集節點 collector、主節點 master
□ agent 負責從各個數據源收集日志數據、將收集到的數據集中到 collector, 再由 collector 節點匯總存入到 HDFS. 而 master 負責管理 agent\collector 的活動
□ agent、collector 都稱為 node,node 的角色根據配置的不同分為邏輯節點和物理節點, 對于邏輯節點的區分、配置、使用非常復雜.
□ agent、collector 由 source、sink 組成, 表示當前節點的數據從 source 傳送到 sink
以上相對于 Flume NG 來說:
□ Flume NG 只有一種角色節點:代理節點 agent
□ 沒有 collector、master 節點, 這是最核心的變化.
□ 去除邏輯節點和物理節點的概念和內容
□ agent 節點的組成發生變化, 由 source、sink、channel 三個組件組成
Zookeeper 方面:
□ Flume OG 的穩定性依賴 zookeeper, 它需要 zookeeper 對其多類節點的工作進行管理, 雖然 OG 可以使用內存的方式對各類節點進行管理, 但需要用戶忍受機器出現故障時信息丟失的出現.
□ Flume NG 的節點角色數量由原來的 3 個縮減為 1 個, 不存在多類角色的問題, 所以不再需要 zookeeper 對各類節點協調的作用, 由此脫離了對 zookeeper 的依賴.
2、Flume 的三個組件
一個 Agent 進程包含了三個組件:Source 組件、Channel 組件、Sink 組件,Source 組件負責收集日志文件并發送給 Channel 組件,Channel 組件形成一個管道, 再由 Sink 組件讀取 Channel 組件中的日志文件并發送給其他目標或者文件系統
Source 組件:專門收集日志文件,可以處理各種類型的日志數據,如:Avro、Thrift、Exec、JMS、Spooling Directory、Twitter、Kafka、NetCat、Sequence Generator、Syslog、HTTP、Stress、Legacy、Custom(自定義格式)、Scribe
Channel 組件:專門用于存放臨時文件,存儲的位置可以是 Memory、JDBC、Kafka、File、Spillable Memory、Pseudo Transaction、Custom(自定義)
Sink 組件:專門用于發送存放在 Channel 組件中的數據,發送的目標包括:HDFS、Hive、Logger、Thrift、IRC、File Roll、Null、HBase、MorphlineSolr、ElasticSearch、Kite Dataset、Kafka、Custom(自定義)
Note:
○ 具體各種使用請參官方文檔:http://flume.apache.org/FlumeUserGuide.html#flume-sink-processors
○ Channel 中的數據只有在 Sink 組件發送成功后才會被刪除
○ 在整個數據的傳輸過程中流動的是 event,event 可以理解為是 flume 中數據傳輸的基本單位,event 表現為一條條的數據, 其事務保證是 event 級別.
○ flume 支持多級 flume 的 agent, 支持扇入(fan-in)\ 扇出(fan-out)
Note:
○ Sink 支持發送多個目標
3、Flume 的安裝與配置
○ 下載
apache-flume-1.6.0-bin.tar.gz
JDK 版本:1.6+
○ 解壓 FLUME_HOME
tar -zxvf apache-flume-1.6.0-bin.tar.gz
○ 安裝 JDK、配置 JAVA_HOME、FLUME_HOME.
vi /etc/profile
export FLUME_HOME=/home/app/flume
export PATH=.:$FLUME_HOME/bin
○ 一個簡單的例子, 監控 /home/data/logs 目錄, 一旦有發現文件立即上傳到 hdfs 中
□ 首先編寫一個配置文件, 文件名為:example.conf
#agent1 表示代理名稱
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1 #Spooling Directory 是監控指定文件夾中新文件的變化,一旦新文件出現,就解析該文件內容,然后寫入到 channle。寫入完成后,標記該文件已完成或者刪除該文件。 # 配置 source1
agent1.sources.source1.type=spooldir
# 指定監控的目錄
agent1.sources.source1.spoolDir=/home/data/logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
# 配置 sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://master:9000/flume/data
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
# 配置 channel1
agent1.channels.channel1.type=file
#channel 數據存放的備份目錄
agent1.channels.channel1.checkpointDir=/home/data/channel_data.backup
#channel 數據存放目錄
agent1.channels.channel1.dataDirs=/home/data/channel_data
□ 將 example.conf 文件放到 $FLUME_HOME/conf 文件夾下
□ 啟動 agent 進程命令:需要指定 agent 的名字、指定配置目錄和配置文件
官方格式:
bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template
在例子中編寫成如下↓↓
bin/flume-ng agent -n agent1 -c conf -f conf/example.conf -Dflume.root.logger=DEBUG,console
-Dflume.root.logger=DEBUG,console 是在控制臺打印信息
□ 重新打開一個終端,上傳一個文件到 /home/data/logs
□ /home/data/logs 中的文件被更名為.COMPLETED, 查看 HDFS 文件存在, 配置完畢
關于“Flume 入門知識點有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。