3.2 Flume初体验
官方文档
打开官方文档,User Guide模块
一个简单的案例
# example.conf: A single-node Flume configuration # 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
这个例子中首先定义了source的名字、sink的名字还有channel的名字
下面配置source的相关参数
下面配置了sink的相关参数
接着配置了channel的相关参数
最后把这三个组件连接到了一起,就是告诉source需要向哪个channel写入数据,告诉sink需要从哪个 channel读取数据,这样source、channel、sink这三个组件就联通了。
Flume-source
再看刚才案例的Source
这里面的粗体字体是必选的参数 第一个参数是为了指定source需要向哪个channel写数据,这个其实是通用的参数, 主要看下面这三个,type、bind、port
- type:类型需要指定为natcat
- bind:指定当前机器的ip,使用hostname也可以
- port:指定当前机器中一个没有被使用的端口
指定bind和port表示开启监听模式,监听指定ip和端口中的数据,其实就是开启了一个socket的服务端, 等待客户端连接进来写入数据
在这里给agent起名为a1,所以netcat类型的配置如下,这里面还指定了source、channel的名字,并且把 source和channel连接到一起了,刨除这几个配置之外就剩下了三行配置,就是刚才我们分析的那三个必填参数
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = netcat a1.sources.r1.bind = 0.0.0.0 a1.sources.r1.port = 6666 a1.sources.r1.channels = c1
注意了,bind参数后面指定的ip是四个0,这个当前机器的通用ip,因为一台机器可以有多个ip,例如: 内网ip、外网ip,如果通过bind参数指定某一个ip的话,表示就只监听通过这个ip发送过来的数据了,这 样会有局限性,所以可以指定0.0.0.0
Flume-channel
案例中channel使用的是memory channel
这里面只有type是必填项,其他都是可选的
Flume-sink
sink这里选择logger
logger sink中默认也只需要指定type即可
后期我们如果想要使用其他的内置组件,直接到官网文档这里查找即可
启动Flume agent
我们首先进入bigdata04的目录下
最终配置文件如下:
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
这个配置文件中的a1表示是agent的名称,还有就是port指定的端口必须是未被使用的,可以先 查询一下当前机器使用了哪些端口,端口的可用范围是1-65535,如果懒得去查的话,就尽量使用偏大一 些的端口,这样被占用的概率就非常低了
Agent配置好了以后就可以启动了,下面来看一下启动Agent的命令
../bin/flume-ng agent --name a1 --conf /data/soft/apache-flume-1.9.0-bin/conf/ --conf-file example.conf -Dflume.root.logger=DEBUG,console
看到下面这张图就表示启动正常
参数解释
--name:指定agent的名字
--conf:指定flume配置文件的根目录
--conf-file:指定Agent对应的配置文件(包含source、channel、sink配置的文件)
-D:动态添加一些参数,在这里是指定了flume的日志输出级别和输出位置,INFO表示日志
使用telnet指定端口
telnet localhost 44444
没有就下载一个
这时Flume就采集道对应端口的信息了
使用jps -m 可以查看指定进程信息
也可以使用ps -ef|grep flume
看个人喜好了