Kafka安装与使用入门
写在前面,本文重点介绍Kafka的安装与使用入门。Kafka是一款什么样的产品,具体是作什么用的,大致看这里:
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。 |
正文开始:
1、下载Kafka
下载地址:http://kafka.apache.org/downloads
2、安装
tar -zxf kafka_2.11-0.11.0.1.tgz -C /usr/myapp
因为下载的是二进制版本,所以只要解压到目标路径即可。
3、配置单节点
3.1 配置单节点的zookeeper
cd /usr/myapp/kafka_2.11 #进入kafka主目录 mkdir -p zk/data #创建zookeeper数据存放目录 mkdir -p zk/logs #创建zookeeperl存放日志目录 cd config #进入配置文件所在目录 mv zookeeper.properties zookeeper.properties.bak #将原配置文件移走 cat > zookeeper.properties << EOF tickTime=2000 dataDir=/usr/myapp/kafka_2.11/zk/data dataLogDir=/usr/myapp/kafka_2.11/zk/logs clientPort=2181 EOF
3.2 配置单节点的Kafka
cd /usr/myapp/kafka_2.11 #进入kafka主目录 mkdir logs #创建logs目录用于存放日志 cd config #进入配置文件所在目录 mv server.properties server.properties.bak #将原配置文件移走 cat > server.properties << EOF broker.id=1 listeners=PLAINTEXT://192.168.220.128:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/usr/myapp/kafka_2.11/logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.220.128:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0 EOF
其中,broker.id可以修改为任意数值。
4、启动与停止
在运行之前,需要先安装好JAVA,并配置JAVA_HOME命令。
启动:
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties #启动zookeeper ./kafka-server-start.sh -daemon ../config/server.properties #启动kafka
停止:
./zookeeper-server-stop.sh #停止zookeeper ./kafka-server-stop.sh #停止kafka,centos7上可能关不了用kill -9直接杀掉
先启动zookeeper,再启动kafka;
停止的顺序刚好相反,先停止Kafka,再停止zookeeper。
查看是否有zookeeper和kafka进程:
jps
5、配置集群
5.1 配置zookeeper
cd /usr/myapp/kafka_2.11/config #进入配置文件路径 cat >> zookeeper.properties << EOF initLimit=5 syncLimit=2 server.1=192.168.220.128:2888:3888 server.2=192.168.220.129:2888:3888 server.3=192.168.220.130:2888:3888 EOF echo '1' > ../zk/data/myid #配置zookeeper的myid文件
其中:
2181端口:对cline端提供服务
3888端口:选举leader使用
2888端口:集群内机器通讯使用(Leader监听此端口)
5.2 配置kafka
编缉server.properties文件,将所有的zookeeper集群地址追加到zookeeper.connect后,每个地址间用逗号(半角)隔开即可。
cd /usr/myapp/kafka_2.11 #进入kafka主目录 mkdir logs #创建logs目录用于存放日志 cd config #进入配置文件所在目录 mv server.properties server.properties.bak #将原配置文件移走 cat > server.properties << EOF broker.id=1 listeners=PLAINTEXT://192.168.220.128:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/usr/myapp/kafka_2.11/logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.220.128:2181,192.168.220.129:2181,192.168.220.130:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0 EOF
集群为大于等于3个基数,如 3、5、7…,不宜太多,集群机器多了选举和数据同步耗时时长长,不稳定。
6、使用
创建topics:
./kafka-topics.sh --create --bootstrap-server 192.168.220.128:9092 --replication-factor 2 --partitions 1 --topic test_topics
查看已存在的topics:
./kafka-topics.sh --list --bootstrap-server 192.168.220.128:9092
在一台上创建生产者:
./kafka-console-producer.sh --bootstrap-server 192.168.220.128:9092 --topic test_topics
在另一台上创建消费者:
./kafka-console-consumer.sh --bootstrap-server 192.168.220.128:9092 --topic test_topics --from-beginning
7、可视化客户端
zookeeper可视化客户端PrettyZoo,下载地址:https://kkgithub.com/vran-dev/PrettyZoo/releases
Kafka可视化客户端offset explorer,下载地址:https://www.kafkatool.com/download.html
本文到此就告一段落了,如果希望大家可以用好Kafka完成自己的项目:)