Kafka简介
Kafka是一个消息中间件(http://kafka.apache.org/),可以提供高吞吐量、高容错、高性能的大型系统消息传送。Kafka的数据是持久的,有序的(同一分区),且可以指定读取位置。数据是分布式存储的,通过zookeeper同步。有关Kafka更详细介绍参照前述文章。
其他消息中间件有 ActiveMQ和RabbitMQ等。
环境准备
Linux:CentOS
Zookeeper:Kafak内置了zookeeper
Kafka: Scala 2.11-kafka_2.11-1.0.0.tgz(asc,sha512)
下载链接http://kafka.apache.org/downloads
解压安装
将安装文件加压到/opt/目录
tar -zxf kafka_2.11-1.0.0.tgz /opt
配置文件
进入解压后的Kafka目录
cd /opt/kafka_2.11-1.0.0
1、配置config目录下的server.properties文件
broker.id=0 #集群内不能重复
listeners=PLAINTEXT://:9092
#日志放入tmp目录
log.dirs=/tmp/kafka-logs
zookeeper.connect=bigdata:2181
注:如果zookeeper有三台集群
zookeeper.connect=bigdata01:2181,bigdata02:2181,bigdata03:2181
2、Kafka伪分布式配置
config目录下配置多个server.properties文件,添加以下配置文件后,一共有三个server.properties文件。因为在一台机器上启动,所以端口号不一样。如果是集群启动,都使用9092。
cd config
cp server.properties server-1.properties
cp server.properties server-2.properties
server-1.properties内容:
broker.id=1
listeners=PLANTEXT://:9093
log.dirs=/tmp/kafka-logs-1
server-2.properties内容:
broker.id=2
listeners=PLANTEXT://:9094
log.dirs=/tmp/kafka-logs-2
服务启动
因为启动命令后界面都会打印相关日志,新起一个窗口进行后续命令
1、启动内置的zookeeper
#kafka目录下执行
./bin/zookeeper-server-start.sh config/zookeeper.properties
如果要后台运行,不打印日志:
#如果要后台运行,即使关闭窗口进程也不会中断
nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null 2>&1 &
2、启动kafka
#末尾添加&后,即时Ctrl+C后,进程还是在的,只要不关闭窗口
./bin/kafka-server-start.sh config/server.properties &
./bin/kafka-server-start.sh config/server-1.properties &
./bin/kafka-server-start.sh config/server-2.properties &
启动以后三个窗口不要关闭,关闭后进程将中断。
zookeeper如果前台运行,关闭窗口会出现TIME_WAIT,过段时间进程没有了
可用如下命令查看端口占用程序的进程号
netstat -lnp | grep 2181
netstat -lntup
Topic相关操作
先创建一个topic,再发送此topic的消息。
kafka-topics.sh命令可以创建、描述、改变、删除一个topic,本文仅介绍前两个命令,后两个谨慎使用。
指定Topic名称为"firsttopic" 、分区数量(和集群数量相等)为3,复制数量为2.
./bin/kafka-topics.sh --create --zookeeper bigdata:2181 --topic firsttopic --partitions 3 --replication-factor 2
查看刚才创建的topic的描述
./bin/kafka-topics.sh --describe --zookeeper bigdata:2181 --topic firsttopic
查看有多少topic
./bin/kafka-topics.sh --zookeeper bigdata:2181 --list
控制台生产者
启动控制台生产者
./bin/kafka-console-producer.sh --topic firsttopic --broker-list bigdata:9092
控制台消费者
新建一个窗口,启动控制台消费者
./bin/kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic firsttopic
在生成者窗口输入消息“test”,按回车,消费者窗口会打印出消息。
如果要从头开始消费:
./bin/kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic firsttopic --from-beginning