5分钟把 LinkedIn 的 “中枢神经系统” Kafka 搬上数人云

用数人云部署Kafka集群的三个理由

神器Kafka几乎成为日志和大数据处理的必备组件,一直为程序猿们津津乐道。但其集群的部署和扩容管理都极为复杂,让不少同学望而却步。基于数人云5分钟就可以部署Kafka集群,通过简单的web界面操作即可实现整个Kafa集群的扩容和管理。

*部署简单:相比较在Linux上直接部署Kafka集群,使用数人云部署会大大降低部署难度,缩短部署时间。

*轻松扩容:通过数人云可以对Kafka集群实现自动扩缩容,调整集群规模。

*资源混用:使用数人云,可以将Kafka,Spark,容器应用混合部署在同一个集群中,提高集群资源利用率。

什么是Kafka?

Kafka 是一个使用 Scala 编写的分布式基于发布/订阅的消息系统。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。 Kafka 是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。

Kafka是LinkedIn的"中枢神经系统"

Kreps 将 Kafka 描述为 LinkedIn 的 “中枢神经系统”,管理从各个应用程序汇聚到此的信息流,这些数据经过处理后再被分发到各处。

LinkedIn在2011年7月开始大规模使用Kafka,当时Kafka每天大约处理10亿条消息,这一数据在2012年达到了每天200亿条,而到了2013年7月,每天处理的消息达到了2000亿条。在几个月前,他们的最新记录是每天利用Kafka处理的消息超过1万亿条,在峰值时每秒钟会发布超过450万条消息,每周处理的信息是1.34 PB。每条消息平均会被4个应用处理。在过去的四年中,实现了1200倍的增长。

Kafka 的常见应用场景

传统的消息

对于一些常规的消息系统,Kafka是个不错的选择;partitons/replication和容错,可以使Kafka具有良好的扩展性和性能优势. LinkedIn就使用Kafka作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索和内容提要(Content Feed)。

网站跟踪分析

Kafka可以作为"网站活动跟踪"的最佳工具;可以将网页/用户操作等信息发送到Kafka中.并实时监控,或者进行离线统计分析等。例如,为了更好地理解用户行为,改善用户体验,LinkedIn会将用户查看了哪个页面、点击了哪些内容等信息发送到每个数据中心的Kafka集群上,并通过Hadoop进行分析、生成日常报告。

日志收集

Kafka的特性决定它非常适合作为"日志收集中心";application可以将操作日志"批量""异步"的发送到kafka集群中,而不是保存在本地或者DB中;Kafka可以批量提交消息/压缩消息等,这对producer端而言,几乎感觉不到性能的开支.此时consumer端可以使hadoop等其他系统化的存储和分析系统.

有哪些公司使用了神器Kafka?

一些耳熟能详的公司:LinkedIn, Yahoo!, BOX, Twitter, Paypal, Uber, Airbnb,…… 当然还有数人云:)

下面小编就给大家介绍如何在数人云上部署一套Kafka集群,并通过Kafka_manager web端管理工具来管理Kafka集群。让大家和上面这些公司一样玩转神器Kafka。

如何在数人云部署Kafka集群?

1
建立集群(应用发布环境)

注册,并在数人云上建立一个集群。参考:【数人云用户手册-建立集群: http://open.shurenyun.com/article/18#rd?sukey=fc78a68049a14bb2bde2e05567742eb46ff30be6b5ec83fd4c4451e7fe5e5f4565b8ee535b0e03f51f432e1f1dce409d

2
发布Kafka应用

2.1 发布 Zookeeper

因为 Kafka 集群需要使用 Zookeeper来保证系统的高可用 ,所以需要先在数人云上发布Zookeeper集群。参考:快速搭建ZooKeeper集群指南【点击阅读原文-在社区中可找到相关文章】

2.2 新建 Kafka 应用

  1. 选择"应用管理"中的"新建应用",如图所示:

  2. 新建应用:

*填写应用名称: kafka

*选择集群: your-cluster

*添加应用镜像地址: testregistry.dataman.io/centos7/jdk7-scala2.11-kafka0.8.22

*填写镜像版本: 20151201

*应用模式: HOST模式

*选择主机:your-app-ip(多选)

*选择容器规格: CPU:0.1 内存:1024 MB

*容器个数: your-kafka-number

点选:1容器/主机 <- 每个宿主机只能运行1个 app 添加应用地址: 添加环境变量: 3. 检查应用状态:

简单的检查应用占用集群资源的情况,点击应用管理 -> 选择监控的 tab 页 至此,Kafka集群已经建立完毕, 可没有一个web界面来管理?别急,下面我们就开始介绍如何搭建一个基于Web的管理工具Kafka_Manager。

Kafka_Manager 简介

Apache Kafka 在 Yahoo 内部已经被很多团队所使用,例如媒体分析团队就将其应用到了实时分析流水线中,同时,Yahoo 整个 Kafka 集群处理的峰值带宽超过了 20Gbps(压缩数据)。为了让开发者和服务工程师能够更加简单地维护 Kafka 集群,Yahoo 构建了一个基于 Web 的管理工具,称为 Kafka Manager,日前该项目已经在GitHub上开源。

3
发布 Kafka_Manager 应用

因为 KafkaManager 是监控 Kafka 的工具,所以在启动 KafkaManager 前,请先按照上面的说明启动 Kafka。

  1. 选择"应用管理"中的"新建应用",如图所示:

  2. 新建应用:

*填写应用名称: kafka-manager

*选择集群: your-cluster

*添加应用镜像地址: testregistry.dataman.io/centos7/jdk8-kafka-0.8.x-manager

*填写镜像版本: 20151204

*应用模式: 网桥模式

*选择主机:your-app-ip(多选)

*选择容器规格: CPU:0.1 内存:512 MB

*容器个数: 1

点选:1容器/主机 <- 每个宿主机只能运行1个 app 添加应用地址: 添加环境变量:

  1. 检查应用状态:
    简单的检查应用占用集群资源的情况,点击应用管理 -> 选择监控的 tab 页

  2. 打开 Kafka_Manager 页面:

游览器输入你的监控地址域名后,按照你的集群情况添加信息 5. 点击 save 后,就可以打开监控页面:

可以看到刚才我们加入的 kafka 集群,数量是3个 现在包含web端管理工具的Kafka集群就搭建完成了,大家可以尽情的玩耍和测试了~ 有任何问题,可以到【http://open.shurenyun.com/article/18#rd?sukey=fc78a68049a14bb2bde2e05567742eb46ff30be6b5ec83fd4c4451e7fe5e5f4565b8ee535b0e03f51f432e1f1dce409d】 技术社区交流。

5分钟部署Kafka也觉得时间长?敬请期待数人云"一键部署"功能。