Hadoop(2.x)云计算生态系统

Kafka分布式消息队列

概述

Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

传统的日志分析系统提供了一种离线处理日志信息的可扩展方案,但若要进行实时处理,通常会有较大延迟。而现有的消(队列)系统能够很好的处理实时或者近似实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类(一小时或者一天只处理一部分数据)的离线应用而言,可能存在问题。Kafka正是为了解决以上问题而设计的,它能够很好地离线和在线应用。

案例

Kafka还可以作为一个传统的消息代理broker集成事件到Hadoop.

这里是其一些普通用途:

  • 网站活动跟踪Website activity tracking:Web应用发送事件如页浏览量或搜索到Kafka,这样这些事件能够被hadoop实时处理和分析。
  • 操作衡量Operational metrics: 实现操作监控的警报和报表,Kafka可以偶尔发送它们的消息总数到一个特定的主题,这样有一个服务就可以比较这些总数,如果数据丢失可以报警。
  • 记录聚合Log aggregation: Kafka能够用于跨组织从多个服务收集日志,然后以一种标准格式提供给多个消费者,包括Hadoop 和Apache Solr.
  • 流处理Stream processing: 类似Spark Streaming能从一个主题读取数据处理然后写入数据到一个新的主题,这样被其他应用再次利用,Kafka的强壮的durability(不丢失 持久性)对已流处理是非常有用的。

主要相关资料:

kafka官网:http://kafka.apache.org/

kafka系列blog:http://www.r66r.net/?s=kafka

kafka系列blog: apache kafka技术分享系列(目录索引)