前一篇里说的是netcat sousrce,source的类型很多。
netcat source
作用就是打开一个特定的端口,然后再端口上监听数据
1:avro source(使用起来跟netcat很像,能做的事跟谷歌的buffer很像)
test.sources=so1//我们的agent的名字叫test,agent的source叫so1
test.sinks=si1//agent的sink叫si1
test.channels=c1//agent的channel叫c1
#source
test.sources.so1.type=avro
test.sources.so1.bind=hadoop222
test.sources.so1.port=6666
#sink
test.sinks.si1.type=logger
#channel
test.channels.c1.type=memory
test.channels.c1.capacity=1000
test.channels.c1.transactionCapacity=100
test.sources.so1.channels=c1
test.sinks.si1.channel=c1//把三个关联起来
进入到flume的bin目录下
然后:
flume-ng avro-client -H hadoop222 -p 6666 -F ../a.txt
这样我们就能把a.txt文件里面的内容监听到了。
2:exec source
我们写
tail -F a.txt就会列出所有的文件内容
但是如果我们在另外的用户动态的增加了数据,然后这儿会显示出来
最简单的就是克隆一个会话
test.sources=so1//我们的agent的名字叫test,agent的source叫so1
test.sinks=si1//agent的sink叫si1
test.channels=c1//agent的channel叫c1
#source
test.sources.so1.type=exec
test.sources.so1.command=tail -F /home.rooby./fdsaf/a.txt
#sink
test.sinks.si1.type=logger
#channel
test.channels.c1.type=memory
test.channels.c1.capacity=1000
test.channels.c1.transactionCapacity=100
test.sources.so1.channels=c1
test.sinks.si1.channel=c1//把三个关联起来
//注意,默认是增加了二十行以上才会显示一次
3:spooling Directory Souce
我们的输入的一个目录
有这样的要求:
1:里面的文件,文件名不能重名
2:不能修改目录里面的文件内容,你要在其他目录里面写好了,移动到里面是可以的。
test.sources=so1//我们的agent的名字叫test,agent的source叫so1
test.sinks=si1//agent的sink叫si1
test.channels=c1//agent的channel叫c1
#source
test.sources.so1.type=spooldir
test.sources.so1.spoolDir=/home/roobby/fdas/log
#sink
test.sinks.si1.type=logger
#channel
test.channels.c1.type=memory
test.channels.c1.capacity=1000
test.channels.c1.transactionCapacity=100
test.sources.so1.channels=c1
test.sinks.si1.channel=c1//把三个关联起来
4:sequence Generator Source
这个不是提供给我们用的,只是用了测试用的。
5:syslog source
在etc加一个叫rsyslog.conf的文件最后加入一句话
*.* @@192.168.80.100:5140
所有的日志
进入到/etc/init.d
sudu service rsyslog restart重新启动一下
我们用这个source的时候,关闭linux的一个进程
sudo /usr/sbin/setenforce 0
test.sources=so1//我们的agent的名字叫test,agent的source叫so1
test.sinks=si1//agent的sink叫si1
test.channels=c1//agent的channel叫c1
#source
test.sources.so1.type=syslogtcp
test.sources.so1.host=192.168.80.100
test.sources.so1.port=5140
#sink
test.sinks.si1.type=logger
#channel
test.channels.c1.type=memory
test.channels.c1.capacity=1000
test.channels.c1.transactionCapacity=100
test.sources.so1.channels=c1
test.sinks.si1.channel=c1//把三个关联起来
收集的是系统的日志;
测试:
我们测试的时候怎么测试:
新开一个会话,然后写入日志
logger "hadoop test"
当然了我们还有其它的source,还有老的source,我们还以可以自己拓展source。