Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。下面介绍有关Kafka的简单安装和使用,想全面了解Kafka,请访问Kafka的官方博客
安装
Kafka的使用依赖于zookeeper,安装Kafka前必须先安装zookeeper.
Mac OSX 系统安装Kafka
Mac 系统安装使用HomeBrew工具安装kafka.HomeBrew会自动把所依赖的工具和软件安装好。HomeBrew会把kafka和zookeeper安装在/usr/local/Cellar/ 目录下。
在终端中执行如下命令:
- brew install kafka
执行完如上命令,系统自动安装好zookeeper和kafka.
Ubuntu 系统安装Kafka
访问Kafka官方下载页面,下载稳定版本0.10.1.0的kafka.此安装包内已经附带zookeeper,不需要额外安装zookeeper.按顺序执行如下步骤:
- cd ~/下载
- sudo tar -zxf kafka_2.11-0.10.1.0.tgz -C /usr/local
- cd /usr/local
- sudo mv kafka_2.11-0.10.1.0/ ./kafka
- sudo chown -R hadoop ./kafka
核心概念
下面介绍Kafka相关概念,以便运行下面实例的同时,更好地理解Kafka.
1. Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
2. Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
3. Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
4. Producer
负责发布消息到Kafka broker
5. Consumer
消息消费者,向Kafka broker读取消息的客户端。
6. Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
测试简单实例
接下来在Ubuntu系统环境下测试简单的实例。Mac系统请自己按照安装的位置,切换到相应的指令。按顺序执行如下命令:
- # 进入kafka所在的目录
- cd /usr/local/kafka
- bin/zookeeper-server-start.sh config/zookeeper.properties
命令执行后不会返回Shell命令输入状态,zookeeper就会按照默认的配置文件启动服务,请千万不要关闭当前终端.启动新的终端,输入如下命令:
- cd /usr/local/kafka
- bin/kafka-server-start.sh config/server.properties
kafka服务端就启动了,请千万不要关闭当前终端。启动另外一个终端,输入如下命令:
- cd /usr/local/kafka
- bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic dblab
topic是发布消息发布的category,以单节点的配置创建了一个叫dblab的topic.可以用list列出所有创建的topics,来查看刚才创建的主题是否存在。
- bin/kafka-topics.sh --list --zookeeper localhost:2181
可以在结果中查看到dblab这个topic存在。接下来用producer生产点数据:
- bin/kafka-console-producer.sh --broker-list localhost:9092 --topic dblab
并尝试输入如下信息:
hello hadoop
hello xmu
hadoop world
然后再次开启新的终端或者直接按CTRL+C退出。然后使用consumer来接收数据,输入如下命令:
- cd /usr/local/kafka
- bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic dblab --from-beginning
便可以看到刚才产生的三条信息。说明kafka安装成功。