概念
集群的意思是多台机器,最少有2台机器,一台机器从数据源中获取数据,将数据传送到另一台机器上,然后输出。接下来就要实现Flume集群搭建。文中的集群如下图所示。
这里我们需要2台机器,node1作为push推送数据,node2作为pull获取数据后显示出来。
配置pull.conf
【在node2机器上操作】
在conf目录下创建pull.conf文件
1 | touch pull.conf |
编辑pull.conf
1 | #汇总数据代理的配置文件pull.conf |
配置push.conf
【在node1机器上操作】
在conf目录下创建push.conf文件
1 | touch push.conf |
编辑push.conf
1 | #推数据代理的配置文件push.conf |
创建spoolDir目录
【在node1中进行该操作】
根据push.conf中的配置 a2.sources.r1.spoolDir参数,创建目录,如果不先创建目录,则启动时会报错
1 | mkdir -p /csh/hadoop/flume/logs |
启动作为pull的主机
【本文为node2主机】
1 | [root@node2 flume]# flume-ng agent -c conf -f conf/pull.conf -n a1 -Dflume.root.logger=INFO,console |
显示如下信息则为启动成功
1 | 2016-04-20 00:08:15,550 (conf-file-poller-0) [INFO - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:133)] Reloading configuration file:conf/pull.conf |
启动作为push的主机
【本文为node1主机】
1 | [root@node1 flume]# flume-ng agent -n a2 -c conf -f conf/push.conf -Dflume.root.logger=INFO,console |
显示如下信息则为启动成功
1 | 2016-04-20 00:11:58,196 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:114)] Channel c1 connected to [r1, k1] |
这时pull主机【本文为node2】输出信息表示连接成功
1 | 2016-04-20 00:11:58,875 (New I/O server boss #1 ([id: 0x71ba9ce2, /192.168.161.12:44444])) [INFO - org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.handleUpstream(NettyServer.java:171)] [id: 0x7d9299a9, /192.168.161.11:44003 => /192.168.161.12:44444] OPEN |
测试
在push主机中【本文为node1】的spoolDir目录【本文为/csh/hadoop/flume/logs】中创建test.log
1 | vi test.log |
这时push主机【本文为node1】中命令行输出如下
1 | 2016-04-20 00:13:09,274 (pool-4-thread-1) [INFO - org.apache.flume.client.avro.ReliableSpoolingFileEventReader.readEvents(ReliableSpoolingFileEventReader.java:258)] Last read took us just up to a file boundary. Rolling to the next file, if there is one. |
pull主机【本文为node2】中命令行输出如下
1 | 2016-04-20 00:13:21,344 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 68 65 6C 6C 6F 20 66 6C 75 6D 65 hello flume } |
证明Flume集群搭建成功
我们可以发现test.log被改名为test.log.COMPLETED