kafka 部署使用

版权声明:微信:15216874307 QQ:1009002494 https://blog.csdn.net/Doudou_Mylove/article/details/89962343

kafka是一个分布式且基于发布/订阅的消息系统。

#Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。

需要注意的是:Zookeeper集群的工作是超过半数才能对外提供服务,3台中超过两台超过半数,允许1台挂掉 ,是否可以用偶数,其实没必要。如果有四台那么挂掉一台还剩下三台服务器,如果在挂掉一个就不行了,这里记住是超过半数。

producer:生产者,负责发布消息到kafka
broker:代表一台或多台服务器
topic:每条发送到kafka集群的消息都会有一个类别,物理上不同的topic存储到不同的broker,逻辑上一个topic可能分别存储在一个或多个broker上,但是生产者或消费者只需要指定topic而无需关心存储
zookeeper:集群管理

流程:
Producer使用push模式将消息发布到broker,而Consumer使用pull模式从broker订阅并消费消息。

软件环境

linux一台或多台,大于等于2
已经搭建好的zookeeper集群
kafka_2.11-0.8.2.1或以上稳定版本

安装JDK

kafka运行需要JDK支持
https://blog.csdn.net/Doudou_Mylove/article/details/89377512

下载kafka

wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
tar -zxvf kafka_2.10-0.10.0.1.tgz
mv kafka_2.10-0.10.0.1 /usr/local/kafka

配置kafka

mkdir /var/log/kafka           #创建kafka日志目录

cd /usr/local/kafka/config   #进入配置目录

vim server.properties          #编辑修改相应的参数

broker.id=0
port=9092 #端口号
host.name=10.24.45.14        #服务器IP地址,修改为自己的服务器IP
log.dirs=/var/log/kafka        #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181   #zookeeper地址和端口,单机配置部署,localhost:2181
#zookeeper.connect=10.24.45.11:12181,10.24.45.12:12181,10.24.45.14:1218                  
#集群设置zookeeper的连接端口
:wq! #保存退出

配置zookeeper

mkdir /usr/local/kafka/zookeeper            #创建zookeeper目录

mkdir /var/log/zookeeper                        #创建zookeeper日志目录

cd /usr/local/kafka/config                        #进入配置目录

vim zookeeper.properties                        #编辑修改相应的参数

dataDir=/usr/local/kafka/zookeeper         #zookeeper数据目录
dataLogDir=/var/log/zookeeper              #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
:wq! #保存退出

创建启动、关闭kafka脚本

cd /usr/local/kafka

#创建启动脚本

vim kafkastart.sh #编辑,添加以下代码

#!/bin/sh
#启动zookeeper
/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
sleep 3 #等3秒后执行
#启动kafka
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
:wq! #保存退出

#创建关闭脚本

vim kafkastop.sh #编辑,添加以下代码

#!/bin/sh
#关闭kafka
/usr/local/kafka/bin/kafka-server-stop.sh &
sleep 5
#关闭zookeeper
/usr/local/kafka/bin/zookeeper-server-stop.sh 
:wq! #保存退出

#添加脚本执行权限

chmod +x kafkastart.sh
chmod +x kafkastop.sh

设置脚本开机自动执行

vim /etc/rc.d/rc.local                         #编辑,在最后添加一行

sh /usr/local/kafka/kafkastart.sh &    #设置开机自动在后台运行脚本

sh /usr/local/kafka/kafkastart.sh        #启动kafka

 

sh /usr/local/kafka/kafkastop.sh        #关闭kafka

#这里有个问题,使用命令行关闭是正常的,用脚本每次都执行关闭之后zookeeper的8182端口还在,再执行开启脚本就会提示端口已占用,只能kill掉。

 

检查kafka是否启动

执行命令:jps
20348 Jps
4233 QuorumPeerMain
18991 Kafka

扩展:创建topic来验证是否创建成功

创建Topic

/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic cjk

参数解释:
--replication-factor 2   #复制两份
--partitions 1 #创建1个分区
--topic #主题为shuaige

报错:Error while executing topic command : Replication factor: 2 larger than available brokers: 0.

创建kafka的topic显示,存活的brokers为0 
原因:
  没有在kafka目录下创建的zookeeper 指定myid
解决:
cd /usr/local/kafka/zookeeper 
touch myid 
echo 0 > myid 
重新启动kafka就ok

查看创建的所有topic
/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181

查看topic状态
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper localhost:12181 --topic cjk

Kafka删除topic
在kafka配置文件中添加删除参数
delete.topic.enable=true
命令删除
/usr/local/kafka/bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic cjk

发送数据
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 10.24.45.14:9092 --topic cjk            
[2019-05-08 17:07:17,985] INFO Closing socket connection to /10.24.45.14. (kafka.network.Processor)
> 111111              // 输入内容
> 222222
> 333333
> 444444

再打开一个窗口查看消费数据
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic cjk --from-beginning
111111           // 输出内容
222222
333333
444444

#至此,Linux下Kafka单机安装配置完成。

猜你喜欢

转载自blog.csdn.net/Doudou_Mylove/article/details/89962343
今日推荐