FLume
核心概念
一个 flume 就是一个 agent。agent 由三部分组成。可以灵活配置
下载安装
下载 bin 包,下载就可使用。绿色软件。
1
| http://www.apache.org/dyn/closer.lua/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
|
配置 JAVA_HOME 环境变量。用 java 1.8 jdk。
快速开始 文档
完整文档 点击
参考
Troubleshooting
使用Flume拉取到HDFS中的文件格式错乱
这是因为HDFS Sink的配置中,hdfs.writeFormat属性默认为 “Writable” 会将原先的文件的内容序列化成HDFS的格式,应该手动设置成 hdfs.writeFormat=”text”; 并且 hdfs.fileType 默认是 “SequenceFile” 类型的,是将所有 event 拼成一行,应该该手动设置成 hdfs.fileType=”DataStream”,这样就可以是一行一个event,与原文件格式保持一致
所以啊,要多看文档啊。 有时候英文文档感觉描叙不到位。等我找时间翻译下这个文档。
后台启动
可以用 nohup bin/flume-ng agent -n agent -c conf -f conf/flume-conf.properties > /dev/null &
但是生产环境还是用 supervisor 来管理吧
实战1 配置本机的 HDFS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # 命名 tcm.channels = ch-tcm tcm.sources = src-tcm tcm.sinks = sink-tcm # 配置 agent 的 channels tcm.channels.ch-tcm.type = file tcm.channels.ch-tcm.checkpointDir = /channels/checkpoint tcm.channels.ch-tcm.dataDirs = /channels/data
# 配置 agent 的 sources tcm.sources.src-tcm.type = spooldir tcm.sources.src-tcm.spoolDir = /home/wwwroot/hadoop/flume-1.8.0/input/sources # 配置 sinks tcm.sinks.sink-tcm.type = hdfs tcm.sinks.sink-tcm.hdfs.path = /hadoop-2.9.0/flume/%y-%m-%d # 使用本机时间配置 tcm.sinks.sink-tcm.hdfs.useLocalTimeStamp = true tcm.sinks.sink-tcm.hdfs.inUsePrefix = . # 保留源文件的格式 tcm.sinks.sink-tcm.hdfs.writeFormat = Text # 配置成一行一个 event 认是“SequenceFile”类型的,是将所有event拼成一行,应该该手动设置成hdfs.fileType=“DataStream”,这样就可以是一行一个event, 与原文件格式保持一致 tcm.sinks.sink-tcm.hdfs.fileType = DataStream
# 通过 channel 链接 sources 和 sinks tcm.sources.src-tcm.channels = ch-tcm tcm.sinks.sink-tcm.channel = ch-tcm
|
启动
bin/flume-ng agent --conf conf/ -f conf/flume.conf -Dflume.root.logger=INFO,console -n tcm
实战2 应用服务器上的数据传到 hadoop 的 namenode 服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| # namenode 配置 conf/33.10.conf # 命名 tcm.channels = ch-tcm tcm.sources = src-tcm tcm.sinks = sink-tcm
# 配置 agent 的 channels tcm.channels.ch-tcm.type = file tcm.channels.ch-tcm.checkpointDir = /channels/checkpoint tcm.channels.ch-tcm.dataDirs = /channels/data
# 配置 agent 的 sources tcm.sources.src-tcm.type = avro tcm.sources.src-tcm.bind = 0.0.0.0 tcm.sources.src-tcm.port = 4545
# 配置 sinks tcm.sinks.sink-tcm.type = hdfs tcm.sinks.sink-tcm.hdfs.path = /hadoop-2.9.0/flume/%y-%m-%d # 使用本机时间配置 tcm.sinks.sink-tcm.hdfs.useLocalTimeStamp = true tcm.sinks.sink-tcm.hdfs.inUsePrefix = . # 保留源文件的格式 tcm.sinks.sink-tcm.hdfs.writeFormat = Text # 配置成一行一个 event 认是“SequenceFile”类型的,是将所有event拼成一行,应该该手动设置成hdfs.fileType=“DataStream”,这样就可以是一行一个event,与原文件格式保持一致 tcm.sinks.sink-tcm.hdfs.fileType = DataStream
# 通过 channel 链接 sources 和 sinks tcm.sources.src-tcm.channels = ch-tcm tcm.sinks.sink-tcm.channel = ch-tcm
# 启动命令 bin/flume-ng agent -c conf/ -f conf/33.10.conf -Dflume.root.logger=INFO,console -n tcm
# ================================================================ # 应用服务器 192.168.33.10 conf/f2.conf # 命名 agent.sources = src_test10 agent.channels = ch_test10 agent.sinks = sink_test10
# 配置 channel agent.channels.ch_test10.type = memory agent.channels.ch_test10.capacity = 10000 # 配置 source agent.sources.src_test10.type = spooldir agent.sources.src_test10.spoolDir = /tmp/flume agent.sources.src_test10.deserializer.maxLineLength = 2048 agent.sources.src_test10.interceptors = i2 agent.sources.src_test10.interceptors.i2.type = host agent.sources.src_test10.interceptors.i2.hostHeader = hostname # 配置 sinks agent.sinks.sink_test10.type = avro agent.sinks.sink_test10.channel = ch_test10 agent.sinks.sink_test10.hostname = 192.168.33.33 agent.sinks.sink_test10.port = 4545
# chanel 链接 source 和 sink agent.sources.src_test10.channels = ch_test10 agent.sinks.sink_test10.channel = ch_test10
## 启动 bin/flume-ng agent -c conf/ -f conf/f2.conf -Dflume.root.logger=INFO,console -n agent
|