您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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的依賴.
一個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支持發送多個目標
○ 下載
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入門知識點有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。