環境
Centos7+jdk11+flume1.9+telnet客戶端
注:最新版flume1.8需要jdk1.8及以上支持
安裝
jdk的安裝不多贅述,flume1.9的安裝。
進入官網:http://www.apache.org/dyn/closer.lua/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
然後找到1.9版本下載放到centos系統解壓即可
使用
1.在apache-flume-1.9.0-bin\conf目錄下創建一個example.conf配置文件
然後把官文檔中的案例內容複製到example.conf文件中,如下內容:
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
2.進入到解壓flume目錄中執行命令
文檔中的執行命令如下:[root@mini3 apache-flume-1.9.0-bin]# bin/flume-ng agent --conf conf --conf-file conf/example.conf –name a1 -Dflume.root.logger=INFO,console
參數的簡要說明:指明conf文件路徑、指明conf文件、指定agent、指明log打印信息級別和位置
更加詳細的參數說明可查看文檔中的介紹
執行效果:
Info: Including Hive libraries found via () for Hive access
- exec /usr/local/jdk1.7.0_65/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp ‘/usr/local/apache-flume-1.7.0-bin/conf:/usr/local/apache-flume-1.7.0-bin/lib/:/lib/’ -Djava.library.path= org.apache.flume.node.Application --conf-file example.conf –name a1
2018-01-31 18:14:04,361 (main) [ERROR - org.apache.flume.node.Application.main(Application.java:348)] A fatal error occurred while running. Exception follows.
org.apache.commons.cli.ParseException: The specified configuration file does not exist: /usr/local/apache-flume-1.9.0-bin/example.conf
at org.apache.flume.node.Application.main(Application.java:316)
[root@mini3 apache-flume-1.9.0-bin]# bin/flume-ng agent --conf conf --conf-file conf/example.conf –name a1 -Dflume.root.logger=INFO,console
Info: Including Hive libraries found via () for Hive access - exec /usr/local/jdk1.11.0_65/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp ‘/usr/local/apache-flume-1.9.0-bin/conf:/usr/local/apache-flume-1.9.0-bin/lib/:/lib/’ -Djava.library.path= org.apache.flume.node.Application --conf-file conf/example.conf –name a1
2018-01-31 18:14:45,241 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.node.PollingPropertiesFileConfigurationProvider.start(PollingPropertiesFileConfigurationProvider.java:62)] Configuration provider starting
2018-01-31 18:14:45,247 (conf-file-poller-0) [INFO - org.apache.flume.node.PollingPropertiesFileConfigurationProviderAgentConfiguration.addProperty(FlumeConfiguration.java:930)] Added sinks: k1 Agent: a1
2018-01-31 18:14:45,254 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfigurationAgentConfiguration.addProperty(FlumeConfiguration.java:1016)] Processing:k1
2018-01-31 18:14:45,254 (conf-file-poller-0) [WARN - org.apache.flume.conf.FlumeConfigurationKaTeX parse error: Expected 'EOF', got '&' at position 555: …eConfiguration.&̲lt;init>(Flu…AgentConfiguration.isValid(FlumeConfiguration.java:320)] Agent configuration for ‘mple’ does not contain any channels. Marking it as invalid.
2018-01-31 18:14:45,255 (conf-file-poller-0) [WARN - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:127)] Agent configuration invalid for agent ‘mple’. It will be removed.
2018-01-31 18:14:45,271 (conf-file-poller-0) [INFO - org.apache.flume.conf.FlumeConfiguration.validateConfiguration(FlumeConfiguration.java:140)] Post-validation flume configuration contains configuration for agents: [a1]
2018-01-31 18:14:45,316 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.loadChannels(AbstractConfigurationProvider.java:147)] Creating channels
2018-01-31 18:14:45,322 (conf-file-poller-0) [INFO - org.apache.flume.channel.DefaultChannelFactory.create(DefaultChannelFactory.java:42)] Creating instance of channel c1 type memory
2018-01-31 18:14:45,329 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.loadChannels(AbstractConfigurationProvider.java:201)] Created channel c1
2018-01-31 18:14:45,329 (conf-file-poller-0) [INFO - org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:41)] Creating instance of source r1, type netcat
2018-01-31 18:14:45,337 (conf-file-poller-0) [INFO - org.apache.flume.sink.DefaultSinkFactory.create(DefaultSinkFactory.java:42)] Creating instance of sink: k1, type: logger
2018-01-31 18:14:45,345 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:116)] Channel c1 connected to [r1, k1]
2018-01-31 18:14:45,354 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:137)] Starting new configuration:{ sourceRunners:{r1=EventDrivenSourceRunner: { source:org.apache.flume.source.NetcatSource{name:r1,state:IDLE} }} sinkRunners:{k1=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@12bd971 counterGroup:{ name:null counters:{} } }} channels:{c1=org.apache.flume.channel.MemoryChannel{name: c1}} }
2018-01-31 18:14:45,365 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:144)] Starting Channel c1
2018-01-31 18:14:45,368 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:159)] Waiting for channel: c1 to start. Sleeping for 500 ms
2018-01-31 18:14:45,467 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: CHANNEL, name: c1: Successfully registered new MBean.
2018-01-31 18:14:45,468 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: CHANNEL, name: c1 started
2018-01-31 18:14:45,869 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:171)] Starting Sink k1
2018-01-31 18:14:45,870 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:182)] Starting Source r1
2018-01-31 18:14:45,870 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:155)] Source starting
2018-01-31 18:14:45,894 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:169)] Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]如上打印日誌,啓動成功!
3.通過telnet客戶端進行測試
另開一個終端命令行:輸入命令
連接成功後即可進行模擬通信,即經過44444端口發送消息,讓flume監聽到。執行結果如下:telnet localhost 44444
flume後臺監聽打印:
2018-01-31 18:15:48,913 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 6E 69 68 61 6F 0D nihao. }
注:如果不能使用telnet,通過yum安裝即可