1)启动flume master:bin/flume master ,这时你可以到master的web界面http://localhost:35871/查看flume集群信息,web界面如下:
从截图中可以看出,当前flume集群中没有node节点。
2)启动flume node节点:flume node_nowatch,你可以到http://localhost:35862/查看该节点的信息。
附注:启动flume节点有两种方式:a)flume node:以守护进程的方式运行node,无法通过console和用户进行交互;b)flume node_nowatch:使用户能够通过console和flume node进程进行交互
3)在成功启动flume node节点之后,刷新flume master的web界面:
可以看到flume 集群中已经新添加了一个节点。
4)通过master的web界面配置node节点:
从configure node中选择所要配置的节点,然后配置节点的source和sink,点击提交查询:
提交成功后,返回到主页,可以看到相关栏目已经更新:
5)测试配置是否成功,到运行flume node_nowatch的窗口输出,配置成功:
- this is test
- hadoop07 [INFO Mon Oct 31 07:34:21 CST 2011] this is test
6)修改配置,将hadoop07的source修改为:tail("/etc/services")
,提交查询,等到十几秒之后运行flume node_nowatch的窗口输出了/etc/services
当前所有的内容。再次修改source:tail("/var/log/messages"),结果node节点报错,原因是运行flume的用户无法读取文件,将文件权限改为777后正常。将sink修改为:dfs("file:///tmp/var_log_messages.copy"),dfs sink的输出为序列文件;将sink修改为:text("/tmp/var_log_messages.copy"),flume节点出现错误信息:
- 2011-10-31 07:55:16,721 [Check config] ERROR agent.LogicalNode: Forcing driver to exit uncleanly
- 2011-10-31 07:55:16,723 [logicalNode hadoop07-30] WARN text.TailSource: next unexpectedly interrupted :null
- java.lang.InterruptedException
- at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:877)
- at com.cloudera.flume.handlers.text.TailSource.next(TailSource.java:271)
- at com.cloudera.flume.core.connector.DirectDriver$PumperThread.run(DirectDriver.java:105)
- 2011-10-31 07:55:16,723 [logicalNode hadoop07-30] ERROR connector.DirectDriver: Closing down due to exception during append calls
- java.lang.InterruptedException
- at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:877)
- at com.cloudera.flume.handlers.text.TailSource.next(TailSource.java:271)
- at com.cloudera.flume.core.connector.DirectDriver$PumperThread.run(DirectDriver.java:105)
- 2011-10-31 07:55:16,723 [logicalNode hadoop07-30] INFO connector.DirectDriver: Connector logicalNode hadoop07-30 exited with error: null
- java.lang.InterruptedException
- at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:877)
- at com.cloudera.flume.handlers.text.TailSource.next(TailSource.java:271)
- at com.cloudera.flume.core.connector.DirectDriver$PumperThread.run(DirectDriver.java:105)
- 2011-10-31 07:55:16,725 [Check config] INFO agent.LogicalNode: Node config successfully set to com.cloudera.flume.conf.FlumeConfigData@1a5af9f
- 2011-10-31 07:55:16,825 [TailThread-3] ERROR text.TailSource: Tail thread nterrupted: sleep interrupted
- java.lang.InterruptedException: sleep interrupted
- at java.lang.Thread.sleep(Native Method)
- at com.cloudera.util.Clock$DefaultClock.doSleep(Clock.java:62)
- at com.cloudera.util.Clock.sleep(Clock.java:88)
- at com.cloudera.flume.handlers.text.TailSource$TailThread.run(TailSource.java:197)
- 2011-10-31 07:55:16,826 [TailThread-3] INFO text.TailSource: TailThread has exited
- 2011-10-31 07:55:16,826 [logicalNode hadoop07-30] INFO hdfs.DFSEventSink: Closing file:///tmp/var_log_messages.copy
- 2011-10-31 07:55:16,828 [logicalNode hadoop07-30] ERROR connector.DirectDriver: Exiting driver logicalNode hadoop07-30 in error state TailSource | DFSEventSink because null
- conf.FlumeBuilder: Deprecated syntax: Expected a format spec but instead had a (String) raw
7)启动collector,注意:flume node_nowatch 会绑定35862端口,flume node_nowatch -n collector会绑定35863端口,所以查看节点信息时的端口依据于最先启动的程序。
flume node_nowatch -n collector8)使用Configure multiple nodes进行配置,配置代码如下:
- hadoop07 : console | agentSink("localhost",35853) ;
- collector : collectorSource(35853) | console ;
配置失败,错误信息如下:
- com.cloudera.flume.conf.FlumeSpecException: Parser error: unexpected 'collector' at position 0 line 2: 'hadoop07:console|agentSink("localhost",35853); collector:collectorSource(35853)|console;'
测试配置,成功。
9)最终的master web界面: