Flume集群部署
安装Flume与基础环境
下载、解压Flume
cd /export/softwarewget -P /export/software/ https://repo.huaweicloud.com/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gzsudo tar -zxvf /export/software/apache-flume-1.9.0-bin.tar.gz -C /export/servers/cd /export/serverssudo mv /export/servers/apache-flume-1.9.0-bin /export/servers/flume配置环境变量
编辑 /etc/profile文件
sudo vim /etc/profile添加以下内容:
#Flume环境变量export FLUME_HOME=/export/servers/flumeexport PATH=$PATH:$FLUME_HOME/bin使配置生效
source /etc/profile配置flume-env.sh
sudo chown -R hadooper:hadooper /export/servers/flume/cd $FLUME_HOME/confcp flume-env.sh.template flume-env.shsudo vi flume-env.sh添加以下内容:
export JAVA_HOME=/export/servers/jdk分发配置文件
scp -r /export/servers/flume hadoop02:/tmp/scp /etc/profile hadoop02:/etcscp -r /export/servers/flume hadoop03:/tmp/scp -r /etc/profile hadoop03:/etc进入hadoop02:
sudo cp -r /tmp/flume /export/serverscd /export/serverssudo chown -R hadooper:hadooper /export/servers/flume/rm -r /tmp/flume进入hadoop03:
sudo cp -r /tmp/flume /export/serverscd /export/serverssudo chown -R hadooper:hadooper /export/servers/flume/rm -r /tmp/flume分发完成后进入两个节点中使配置生效
source /etc/profile验证安装
每个节点上执行 flume-ng version。如果正确显示版本信息,则基础安装成功

配置故障转移模式集群节点
故障转移模式和多层数据流模式二选一进行配置即可!
故障转移模式(建议配置) hadoop01:agent-node,负责采集日志。 hadoop02:collector1-node,接收数据,高优先级。 hadoop03:collector2-node,接收数据,备用优先级。
故障转移模式配置 hadoop01 (agent-node)
cd /$FLUME_HOME/conf/创建配置文件
touch agent-failover.confvi /$FLUME_HOME/conf/agent-failover.conf内容如下:
# 定义组件名称agent1.sources = r1agent1.channels = c1agent1.sinks = k1 k2agent1.sinkgroups = g1
# 配置 Source:监控日志文件agent1.sources.r1.type = execagent1.sources.r1.command = tail -F /export/servers/flume/weblog.logagent1.sources.r1.channels = c1
# 配置 Channel:使用内存通道agent1.channels.c1.type = memoryagent1.channels.c1.capacity = 10000agent1.channels.c1.transactionCapacity = 10000
# 配置第一个 Sink(指向主 Collector)agent1.sinks.k1.type = avroagent1.sinks.k1.hostname = hadoop02agent1.sinks.k1.port = 52020agent1.sinks.k1.channel = c1
# 配置第二个 Sink(指向备用 Collector)agent1.sinks.k2.type = avroagent1.sinks.k2.hostname = hadoop03agent1.sinks.k2.port = 52021agent1.sinks.k2.channel = c1
# 配置 Sink Group 和故障转移策略agent1.sinkgroups.g1.sinks = k1 k2agent1.sinkgroups.g1.processor.type = failoveragent1.sinkgroups.g1.processor.priority.k1 = 10agent1.sinkgroups.g1.processor.priority.k2 = 5agent1.sinkgroups.g1.processor.maxpenalty = 10000故障转移模式配置 hadoop02、hadoop03
分别在每个 Collector 节点上创建配置文件
cd $FLUME_HOME/conf/touch collector-hdfs.confvi /$FLUME_HOME/conf/collector-hdfs.conf添加内容如下: 故障转移模式hadoop02:
# 定义组件collector1.sources = r1collector1.channels = c1collector1.sinks = k1
# 配置 Source:监听 Avro 端口collector1.sources.r1.type = avrocollector1.sources.r1.bind = 0.0.0.0collector1.sources.r1.port = 52020collector1.sources.r1.channels = c1
# 配置 Channelcollector1.channels.c1.type = memorycollector1.channels.c1.capacity = 10000collector1.channels.c1.transactionCapacity = 10000
# 配置 Sink:写入 HDFScollector1.sinks.k1.type = hdfscollector1.sinks.k1.channel = c1collector1.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/collector1.sinks.k1.hdfs.filePrefix = events-collector1.sinks.k1.hdfs.fileType = DataStreamcollector1.sinks.k1.hdfs.writeFormat = Textcollector1.sinks.k1.hdfs.rollInterval = 3600collector1.sinks.k1.hdfs.rollSize = 0collector1.sinks.k1.hdfs.rollCount = 0collector1.sinks.k1.hdfs.useLocalTimeStamp = true故障转移模式hadoop03:
# 定义组件collector2.sources = r1collector2.channels = c1collector2.sinks = k1
# 配置 Source:监听 Avro 端口collector2.sources.r1.type = avrocollector2.sources.r1.bind = 0.0.0.0collector2.sources.r1.port = 52021collector2.sources.r1.channels = c1
# 配置 Channelcollector2.channels.c1.type = memorycollector2.channels.c1.capacity = 10000collector2.channels.c1.transactionCapacity = 10000
# 配置 Sink:写入 HDFScollector2.sinks.k1.type = hdfscollector2.sinks.k1.channel = c1collector2.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/collector2.sinks.k1.hdfs.filePrefix = events-collector2.sinks.k1.hdfs.fileType = DataStreamcollector2.sinks.k1.hdfs.writeFormat = Textcollector2.sinks.k1.hdfs.rollInterval = 3600collector2.sinks.k1.hdfs.rollSize = 0collector2.sinks.k1.hdfs.rollCount = 0collector2.sinks.k1.hdfs.useLocalTimeStamp = true启动故障转移模式集群与测试
注:此步骤为故障转移模式的启动与测试! 故障转移模式:
故障转移模式启动 Collector 服务
在hadoop02和hadoop03上执行: hadoop02:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n collector1 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &hadoop03:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n collector2 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &故障转移模式启动 Agent 服务
在hadoop01上执行:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n agent1 -c conf -f $FLUME_HOME/conf/agent-failover.conf -Dflume.root.logger=INFO,console &故障转移模式测试数据流
在 hadoop01 上创建测试日志文件
echo "Test message 1 - $(date)" >> /export/servers/flume/weblog.log
echo "Test message 2 - $(date)" >> /export/servers/flume/weblog.logAgent 日志:应该显示事件被采集和发送 Collector1 (hadoop02) 日志:应该显示接收到数据并写入 HDFS Collector2 (hadoop03) 日志:作为备用,暂时不应接收数据 检查 HDFS 上是否生成了数据文件
hdfs dfs -ls hdfs://mycluster/flume/events/echo "=== 最新数据内容 ==="hdfs dfs -cat hdfs://mycluster/flume/events/*/*.tmp | tail -10故障转移模式测试故障转移功能
在 hadoop02 上停止 Flume Collector
ps aux | grep flume | grep collector1kill [进程ID]在 hadoop01 上创建测试日志文件
echo "Test message 1 - $(date)" >> /export/servers/flume/weblog.log
echo "Test message 2 - $(date)" >> /export/servers/flume/weblog.log观察 Agent 日志是否显示切换到 k2 (hadoop03) 确认 hadoop03 开始接收数据并写入 HDFS
配置多层数据流模式集群节点
故障转移模式和多层数据流模式二选一进行配置即可!
多层数据流模式 hadoop01:agent1-node,负责采集日志。 hadoop02:agent2-node, collector1-node,负责采集日志,接收1,2节点数据, hadoop03:agent3-node, collector2-node,负责采集本节点日志,接收本节点数据
多层数据流模式配置hadoop02、hadoop03
多层数据流模式hadoop02: 在/export/servers/flume/conf路径下创建一个collector-hdfs.conf文件
cd /export/servers/flume/conftouch collector-hdfs.confvi collector-hdfs.conf并添加以下内容:
# 定义组件collector1.sources = r1collector1.channels = c1collector1.sinks = k1
# 配置 Source:监听 Avro 端口collector1.sources.r1.type = avrocollector1.sources.r1.bind = 0.0.0.0collector1.sources.r1.port = 52020collector1.sources.r1.channels = c1
# 配置 Channelcollector1.channels.c1.type = memorycollector1.channels.c1.capacity = 10000collector1.channels.c1.transactionCapacity = 10000
# 配置 Sink:写入 HDFScollector1.sinks.k1.type = hdfscollector1.sinks.k1.channel = c1collector1.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/collector1.sinks.k1.hdfs.filePrefix = events-collector1.sinks.k1.hdfs.fileType = DataStreamcollector1.sinks.k1.hdfs.writeFormat = Textcollector1.sinks.k1.hdfs.rollInterval = 3600collector1.sinks.k1.hdfs.rollSize = 0collector1.sinks.k1.hdfs.rollCount = 0collector1.sinks.k1.hdfs.useLocalTimeStamp = true多层数据流模式hadoop03: 在/export/servers/flume/conf路径下创建一个collector-hdfs.conf文件
cd /export/servers/flume/conftouch collector-hdfs.confvi collector-hdfs.conf并添加以下内容:
# 定义组件collector2.sources = r1collector2.sinks = k1collector2.channels = c1
# 配置 Avro Source - 使用不同的端口(如 52021)collector2.sources.r1.type = avrocollector2.sources.r1.bind = 0.0.0.0collector2.sources.r1.port = 52021collector2.sources.r1.channels = c1# 添加时间戳拦截器collector2.sources.r1.interceptors = i1collector2.sources.r1.interceptors.i1.type = timestampcollector2.sources.r1.interceptors.i1.preserveExisting = false
# 配置 HDFS Sink - 使用不同的 HDFS 路径collector2.sinks.k1.type = hdfscollector2.sinks.k1.channel = c1collector2.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/collector2.sinks.k1.hdfs.filePrefix = events-collector2.sinks.k1.hdfs.round = truecollector2.sinks.k1.hdfs.roundValue = 10collector2.sinks.k1.hdfs.roundUnit = minutecollector2.sinks.k1.hdfs.rollInterval = 3600collector2.sinks.k1.hdfs.rollSize = 0collector2.sinks.k1.hdfs.rollCount = 0collector2.sinks.k1.hdfs.batchSize = 1000collector2.sinks.k1.hdfs.fileType = DataStream
# 配置 Memory Channelcollector2.channels.c1.type = memorycollector2.channels.c1.capacity = 1000collector2.channels.c1.transactionCapacity = 1000多层数据流模式为每个 Agent 节点创建单独的配置文件
多层数据流模式hadoop01: 进入/export/servers/flume/conf/目录
cd /export/servers/flume/conf/创建新配置文件
touch agent-node1.confvim agent-node1.conf并添加以下内容:
# 定义组件名称agent1.sources = r1agent1.channels = c1agent1.sinks = k1
# 配置 Source:监控日志文件agent1.sources.r1.type = execagent1.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop01.logagent1.sources.r1.channels = c1
# 配置 Channel:使用内存通道agent1.channels.c1.type = memoryagent1.channels.c1.capacity = 10000agent1.channels.c1.transactionCapacity = 10000
# 配置第一个 Sink(指向主 Collector)agent1.sinks.k1.type = avroagent1.sinks.k1.hostname = hadoop02agent1.sinks.k1.port = 52020agent1.sinks.k1.channel = c1分别进入hadoop02、hadoop03修改配置文件:
多层数据流模式hadoop02:
cd /export/serverssudo chown -R hadooper:hadooper /export/servers/flume/cd /export/servers/flume/confvi agent-node2.conf文件内容如下:
# 定义组件名称agent2.sources = r1agent2.channels = c1agent2.sinks = k1
# 配置 Source:监控日志文件agent2.sources.r1.type = execagent2.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop02.logagent2.sources.r1.channels = c1
# 配置 Channel:使用内存通道agent2.channels.c1.type = memoryagent2.channels.c1.capacity = 10000agent2.channels.c1.transactionCapacity = 10000
# 配置第一个 Sink(指向主 Collector)agent2.sinks.k1.type = avroagent2.sinks.k1.hostname = hadoop02agent2.sinks.k1.port = 52020agent2.sinks.k1.channel = c1多层数据流模式hadoop03:
cd /export/serverssudo chown -R hadooper:hadooper /export/servers/flume/cd /export/servers/flume/confvi agent-node3.conf文件内容如下:
# 定义组件名称agent3.sources = r1agent3.channels = c1agent3.sinks = k1
# 配置 Source:监控日志文件agent3.sources.r1.type = execagent3.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop03.logagent3.sources.r1.channels = c1
# 配置 Channel:使用内存通道agent3.channels.c1.type = memoryagent3.channels.c1.capacity = 10000agent3.channels.c1.transactionCapacity = 10000
# 配置第一个 Sink(指向主 Collector)agent3.sinks.k1.type = avroagent3.sinks.k1.hostname = hadoop03agent3.sinks.k1.port = 52021agent3.sinks.k1.channel = c1启动集群与测试
此步骤为多层数据流模式的启动与测试!
多层数据流模式:
多层数据流模式启动 Collector 服务
在hadoop02和hadoop03上执行: 多层数据流模式hadoop02:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n collector1 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &多层数据流模式hadoop03:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n collector2 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &多层数据流模式启动 Agent 服务:
多层数据流模式hadoop01:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n agent1 -c conf -f $FLUME_HOME/conf/agent-node1.conf -Dflume.root.logger=INFO,console &多层数据流模式hadoop02:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n agent2 -c conf -f $FLUME_HOME/conf/agent-node2.conf -Dflume.root.logger=INFO,console &多层数据流模式hadoop03:
cd $FLUME_HOME$FLUME_HOME/bin/flume-ng agent -n agent3 -c conf -f $FLUME_HOME/conf/agent-node3.conf -Dflume.root.logger=INFO,console &多层数据流模式测试数据流
在 hadoop01 上测试 (发送到 hadoop02:52020)
echo "Agent1 to Collector1 测试 - $(date)" >> /export/servers/flume/weblog-hadoop01.log在 hadoop02 上测试 (发送到 hadoop02:52020)
echo " Agent2 to Collector1 测试 - $(date) " >> /export/servers/flume/weblog-hadoop02.log在 hadoop03 上测试 (发送到本地 hadoop03:52021)
echo " Agent3 to Collector2 测试 - $(date) " >> /export/servers/flume/weblog-hadoop03.log验证 HDFS 数据写入
hdfs dfs -ls hdfs://mycluster/flume/events/echo "=== 最新数据内容 ==="hdfs dfs -cat hdfs://mycluster/flume/events/*/*.tmp | tail -10Big Data Deployment
Related articles
部分信息可能已经过时