JsonHandler
用于处理标准json数据。
- 编写JSONHandler source配置文件
>echo >> json.conf
>vim json.conf
a1.sources=r1
a1.channels=c1
a1.sinks=k1
a1.sources.r1.type=org.apache.flume.source.http.HTTPSource
a1.sources.r1.port=8888
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sinks.k1.type=logger
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
- 启动agent
>./flume-ng agent -f ../conf/json.conf -n a1 -Dflume.root.logger=INFO,console
- 发送json数据
>curl -X POST -d '[{ "headers" :{"a" : "a1","b" : "b1"},"body" : "idoall.org_body"}]' http://hbase:8888
- 查看控制台
16/11/07 01:16:09 INFO sink.LoggerSink: Event: { headers:{b=b1, a=a1} body: 69 64 6F 61 6C 6C 2E 6F 72 67 5F 62 6F 64 79 idoall.org_body }
Hadoop sink
将收集到的数据存入hadoop hdfs中。
- 编写配置文件
a1.sources=r1
a1.channels=c1
a1.sinks=k1
a1.sources.r1.type=avro
a1.sources.host=hbase
a1.sources.port=4141
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://hbase:9000/flume
a1.sinks.k1.hdfs.filePrefix=test
a1.sinks.k1.hdfs.round=true
a1.sinks.k1.hdfs.roundValue=10
a1.sinks.k1.hdfs.roundUnit=minute
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
- 启动hadoop
>./start-all.sh
- 启动Flume
./flume-ng agent -f ../conf/hdfs.conf -n a1 -Dflume.root.logger=INFO,console
- 利用avro客户端发送数据
- 查看hdfs目录中的文件
>hadoop fs -ls /flume
Found 10 items
-rw-r--r-- 1 root supergroup 465 2016-11-07 01:38 /flume/test.1478511493321
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493322
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493323
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493324
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493325
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493326
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493327
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493328
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493329
-rw-r--r-- 1 root supergroup 475 2016-11-07 01:38 /flume/test.1478511493330
File Roll Sink
以滚动文件夹的方式将Event存储在本地磁盘。
- 编写配置文件
>echo >> fileroll.conf
>vim fileroll.conf
a1.sources=r1
a1.channels=c1
a1.sinks=k1
a1.sources.r1.type=avro
a1.sources.r1.bind=hbase
a1.sources.r1.port=4141
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sinks.k1.type=file_roll
a1.sinks.k1.sink.directory=/usr/develop-fm/flume1.7.0/temp
a1.sources.r1.channels=c1
a1.sinks.r1.channel=c1
- 启动agent
>./flume-ng agent -f ../conf/fileroll.conf -n a1 -Dflume.root.logger=INFO,console
- 查看目录, 默认每30s产生一个新的文件
- 利用avro客户端发送数据到flume