2019独角兽企业重金招聘Python工程师标准>>>
1. 学习每一门新技术都是从HelloWorld小案例开始,这仿佛是IT界无形的铁律了,今天也不例外,以下是flume配置文件中配置信息。
agent.sources = s1
agent.channels = c1
agent.sinks = k1
agent.sources.s1.type = netcat
agent.sources.s1.channels = c1
agent.sources.s1.bind = 0.0.0.0
agent.sources.s1.port = 12345
agent.sources.c1.type = memory
agent.sources.k1.type = logger
agent.sources.k1.channel = c1
2.此处定义了一个名为agent的代理,它有一个名为s1的源,一个名为c1的通道,以及一个名为k1的接收器。
3.源s1的类型是netcat,它只是打开一个Socket监听事件(每个事件一行文本)。它需要两个参数,分别是一个绑定IP与一个端口号。 该示例使用0.0.0.0作为绑定地址(表示监听任何地址的Java约定)以及端口号12345。
4.源配置还有一个名为channels的参数,它是源将事件附加到的通道名。在该示例中使用的是c1,这里使用了复数,所以可以将一个源写到多个通道中。
5.名为c1的通道为内存通道,使用了默认配置。
6.名为k1的接收器的类型是logger,该接收器主要用于调试与测试。它会使用log4j将所有INFO级别的日志记录下来,这些日志来自于配置好的通道,该示例中 就是c1,这里所用的通道是单数,因为一个接收器只能从一个通道接收数据。
$ ./bin/flume-ng agent -n agent -c conf -f conf/hw.properties -Dflume.root.logger=INFO,console
注意:
1.-Dflume.root.logger属性覆盖了conf/log4j.properties中的rootlogger,使用console追加器。如果没有覆盖root logger,输出将会被写入log/flume.log文件中。
2.既然-f参数包含了配置的完整相对路径,为何还要指定-c参数,原因是log4j配置文件需要放到classpath中。
3.netcat其实是org.apache.flume.source.NetcatSource的便捷方式。如果需要,可以使用类名。
4.新开窗口 nc localhost 12345,输入字符串回车,返回flume窗口,查看flume输出内容。
5.内容过长时,事件将会被截断,根据设计,logger sink将体内容限制为16字节,从而避免屏幕充斥着过多的内容。