一、安裝jdkhtml
須要1.6以上版本
參考文章 https://segmentfault.com/a/11...java
二、下載flumenode
從官網下載壓縮包:http://flume.apache.org/downl...linux
選擇apache-flume-1.8.0-bin.tar.gz,選擇鏡像地址開始下載,如:wget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
apache
三、解壓並安裝segmentfault
tar -zxvf apache-flume-1.8.0-bin.tar.gz
mv apache-flume-1.8.0-bin /opt/flume-1.8.0
(放到想要安裝的目錄下,目錄名保存爲flume-1.8.0,如/opt)四、配置併發
修改配置文件:vi /opt/flume-1.8.0/conf/flume.conf
tcp
此配置文件,配置了兩個source:s1和s2,一個channel,一個sink。s1監聽目錄/data/log目錄,並把信息寫入c1,s2監聽本機全部ip(0.0.0.0)的80端口,信息也寫入c1,k1從c1讀取數據,寫入flume的日誌。
配置項名稱 | 做用 | 舉例 |
agent1 | flume節點名稱,啓動時經過參數命令-name指定 | |
agent1.sources | 監聽的源,能夠有多個,空格隔開便可,用於收集數據併發送到channel | agent1.sources=s1 s2 |
agent1.channels | 臨時通道,能夠有多個,空格隔開,存放source收集的數據,sink從這裏讀取數據 | agent1.channels=c1 |
agent1.sinks | 接收器,能夠有多個,空格隔開,從channel讀取數據,併發送給目標 (好比kafka 或者hdfs或者另外一個flume) | agent1.sinks=k1 |
agent.sources.s1.type | 源的類型,s1是源名稱,能夠是目錄、日誌文件、或者監聽端口等。 經常使用的source的類型包括avro、exec、netcat、spooldir和syslog等. 具體請參考官網http://flume.apache.org/Flume... | agent.sources.s1.type=spooldir agent.sources.s2.type=avro |
agent1.sources.s1.channels | 監聽數據要寫入的channel名稱 | agent1.sources.s1.channels=c1 |
agent1.channels.c1.type | 通道的類型,c1爲通道名稱,此處memory表示爲經常使用的memory-channel, 同時也有其餘類型的channel,如JDBC、file-channel、custom-channel等, 具體請參考官網http://flume.apache.org/Flume... | agent1.channels.c1.type=memory |
agent1.sinks.k1.type | 接收器類型,k1爲接收器名稱,此處logger表示直接寫入日誌, 經常使用的包括avro、logger、HDFS、Hbase以及file-roll等, 具體參考官網http://flume.apache.org/Flume... | agent1.sinks.k1.type=logger |
五、啓動ide
/opt/flume-1.8.0/bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name agent1 -Dflume.root.logger=INFO,console
參數 | 做用 | 舉例 |
–conf 或 -c | 指定配置文件夾,包含flume-env.sh和log4j的配置文件 | –conf conf |
–conf-file 或 -f | 配置文件地址 | --conf-file conf/flume.conf |
–name 或 -n | agent(flume節點)名稱 | --name agent1 |
六、錯誤說明oop
設置爲avro 時,可能會出現這樣的錯誤。好比:flume接收avro,client發送tcp,可把avro改成netcat
sink讀不到數據:
若兩個sink讀取同一個c1 同一個消息,每次只有一個sink讀取成功。 channel 的內容只輸出一次,同一個event 若是sink1 輸出,sink2 不輸出;若是sink1 輸出,sink1 不輸出。 最終 sink1+sink2=channel 中的數據 
一、Caused by: java.lang.NullPointerException:Excepted timestamp in the Flume event headers, but it was null...
解決辦法:
有三種解決辦法:(重啓生效)
二、org.apache.hadoop.security.AccessControlException: Permission denied: user=flume, access=WRITE, inode="/flume":hdfs:supergroup:drwxr-xr-xr...
解決辦法:
三、Configuration must specify a spooling derectory