在当前的大数据时代,第一个挑战是海量数据的收集,另一个就是这些数据的分析。数据分析的类型通常有用户行为数据、应用性能跟踪数据、活动数据日志、事件消息等。消息发布机制用于连接各种应用并在它们之间路由消息,例如通过message broker。Kafka是快速地将海量信息实时路由到消费者的解决方案,实现信息的生产者和消费者的无缝集成。它不会阻塞信息的生产者,同时信息生产者不会知道信息消费者。
Apache Kafka是个开源的分布式消息发布订阅系统,具有以下特征:
Kafka提供了实时发布订阅的解决方案,克服了实时数据消费和比实时数据更大数量级的数据量增长的问题。Kafka也支持Hadoop系统中的并行数据加载。下图展示了一种典型的使用Kafka消息系统的大数据聚合分析的场景。
在消息生产端,有不同类型的生产者,例如:
在消息消费端,有不同类型的消费者,例如:
各种形式的web活动产生大量数据,例出用户活动事件如登录、访问页面、点击链接,社交网络活动如喜欢、分享、评论,还有系统运作日志等等。由于这些数据的高吞吐量(每秒百万级的消息),通常由日志记录系统和日志聚合解决方案来处理。这样的传统方案对提供日志数据给Hadoop这样的离线分析系统是可行的,但对于需要实时处理的系统就够呛了。
互联网应用的发展趋势表明,这样的活动数据已经成为生产数据的一部分,用于实时分析,包括:
Kafka的目标是统一离线和在线处理,通过提供Hadoop系统中并行加载机制和使用集群将实时消费分区的能力。Kafka可以跟Scribe或Flume相比较,因为它可以用于处理活动流数据,但是从架构的角度,它更接近于传统的消息系统,如ActiveMQ或RabitMQ。
Kafka通常被用于:
一些公司将Kafka用于各自的场景:
Kafka是用Scala语言实现的,并用Gradle构建二进制包。使用Kafka之前安装JDK 1.7或更高版本。并配置环境变量JAVA_HOME。
下载Kaka:
wget http://mirrors.ustc.edu.cn/apache/kafka/0.9.0.0/kafka_2.10-0.9.0.0.tgz
解压缩:
tar xzf kafka_2.10-0.9.0.0.tgz
cd kafka_2.10-0.9.0.0
其中:
/bin 启动和停止命令等
/config 配置文件
/libs 类库
启动和停止
启动Zookeeper server:
bin/zookeeper-server-start.sh config/zookeeper.properties &
启动Kafka server:
bin/kafka-server-start.sh config/server.properties &
停止Kafka server:
bin/kafka-server-stop.sh
停止Zookeeper server:
bin/zookeeper-server-stop.sh
单机连通性测试:
运行producer:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
运行consumer:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
在producer端输入字符串并回车,consumer端显示则表示成功。
参考资料
Learing Apache Kafka-Second Edition
原文:http://www.cnblogs.com/Leo_wl/p/5093937.html