Flume

Apache Flume是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和将大量日志数据从许多不同的源转移到一个集中的数据存储区。
ApacheFlume的使用不仅限于记录数据聚合。由于数据源是可定制的,Flume可以用来传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎任何可能的数据源。Apache Flume是Apache软件基金会的顶级项目。

kafka

在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。
Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
Kafka最初是由LinkedIn公司开发,并于 2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。

Flume+Kafka集成

作为流式处理领域的两个重要的组件,Flume与Kafka的集成经常被用于实时流式日志的处理当中,后面再连接spark、Flink、Storm等流式计算引擎的框架,完成对日志的实时解析等任务。下面将介绍Flume与Kafka集成的配置。
修改flume配置
vi flume-conf.properties

agent1.sources = r1
agent1.channels = kafkaC 
agent1.sinks = kafkaSink 

agent1.sources.r1.type = exec
agent1.sources.r1.command = tail -F /opt/datas/weblog-flume.log
agent1.sources.r1.channels = KafkaC
#flume-kafka
agent1.channels.kafkaC.type = memory
agent1.channels.kafkaC.capacity = 100000
agent1.channels.kafkaC.transactionCapacity = 100000
agent1.channels.kafkaC.keep-alive = 20

agent1.sinks.kafkaSink.channel = kafkaC
agent1.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink
agent1.sinks.kafkaSink.brokerList = bigdata-pro01.kfk.com:9092,bigdata-pro02.kfk.com:9092,bigdata-pro03.kfk.com:9092
agent1.sinks.kafkaSink.topic = weblogs
agent1.sinks.kafkaSink.zookeeperConnect = bigdata-pro01.kfk.com:2181,bigdata-pro02.kfk.com:2181,bigdata-pro03.kfk.com:2181
agent1.sinks.kafkaSink.requiredAcks = 1
agent1.sinks.kafkaSink.batchSize = 1
agent1.sinks.kafkaSink.serializer.class = kafka.serializer.StringEncoder