系统环境
Linux Ubuntu 16.04
jdk-7u75-linux-x64
相关知识
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它因可以水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。
Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:
(1)以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能
(2)高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输
(3)支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输
(4)同时支持离线数据处理和实时数据处理
(5)Scale out:支持在线水平扩展
Kafka中各个组件的功能:
(1)Broker: Kafka集群包含一个或多个服务器,这种服务器被称为broker
(2)Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上,但用户只需指定消息的Topic即可生产或消费数据,不必关心数据存于何处)
(3)Partition:Parition是物理上的概念,每个Topic包含一个或多个Partition
(4)Producer:负责发布消息到Kafka broker
(5)Consumer:消息消费者,向Kafka broker读取消息的客户端
(6)Consumer Group:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干Broker(Kafka支持水平扩展,一般Broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个ZooKeeper集群。Kafka通过ZooKeeper管理集群配置,选举Leader,以及在Consumer Group发生变化时进行rebalance。
Producer使用Push模式将消息发布到Broker,Consumer使用Pull模式从Broker订阅并消费消息。
任务内容
Kafka安装依赖Scala、ZooKeeper,所以需要先安装Scala与ZooKeeper。然后在已安装好Scala和ZooKeeper的环境基础上,安装部署Kafka。
任务步骤
1.首先在Linux本地,新建/data/kafka1目录,用于存放实验所需文件。
mkdir -p /data/kafka1
切换目录到/data/kafka1下,使用wget命令,下载所需安装包scala-2.10.4.tgz,kafka_2.10-0.8.2.2.tgz以及zookeeper-3.4.5-cdh5.4.5.tar.gz。
cd /data/kafka1
wget http://192.168.1.100:60000/allfiles/kafka1/scala-2.10.4.tgz
wget http://192.168.1.100:60000/allfiles/kafka1/kafka_2.10-0.8.2.2.tgz
wget http://192.168.1.100:60000/allfiles/kafka1/zookeeper-3.4.5-cdh5.4.5.tar.gz
2.安装Scala。