以前很多业务都是用scribe做日志收集的支撑的,后来fb停止了对scribe的开发支持。而且scribe在机器上编译一次的代价太大了,各种坑,正好后来flume从1.3.0开始加入了对scribe的支持。就可以把原来scribe上面接入的数据转用flume收集了。虽然我很喜欢scribe,但是失去了官方支持毕竟还是很闹心的。
agent.channels=c1 agent.channels.c1.capacity=20000 agent.channels.c1.transactionCapacity=10000 agent.channels.c1.type=memory agent.sinks=k1 agent.sinks.k1.channel=c1 agent.sinks.k1.hdfs.batchSize=8000 agent.sinks.k1.hdfs.filePrefix=log agent.sinks.k1.hdfs.fileType=DataStream agent.sinks.k1.hdfs.path=hdfs://NNHA/data/flume/%{category}/%Y%m%d agent.sinks.k1.hdfs.rollCount=0 agent.sinks.k1.hdfs.rollInterval=86400 agent.sinks.k1.hdfs.round=true agent.sinks.k1.hdfs.roundUnit=minute agent.sinks.k1.hdfs.roundValue=1 agent.sinks.k1.hdfs.serializer.appendNewline=false agent.sinks.k1.hdfs.useLocalTimeStamp=true agent.sinks.k1.hdfs.writeFormat=TEXT agent.sinks.k1.type=hdfs agent.sources=r1 agent.sources.r1.channels=c1 agent.sources.r1.host=0.0.0.0 agent.sources.r1.port=1463 agent.sources.r1.type=org.apache.flume.source.scribe.ScribeSource agent.sources.r1.workerThreads=5
主要是serializer.appendNewline设置为false,否则会每条自动添加一个回车上去,其他也没什么太多好解释的,用过flume的自然秒懂,hdfs.path里面,%{category}就是意味着原来scribe里面的category。
flume 1.6的新特性里面是加入了对kafka的source和sink的支持,以及对数据内容的正则过滤传递,这点很有用,貌似下个月或者下下个月会有本关于flume的新书上市。