1.集群规划
假设这里是三台机器
test01 test02 test03
zk zk zk
Kafka Kafka Kafka
2.jar下载
Kafka下载地址:http://kafka.apache.org/downloads.html
3.下载完成之后开始解压安装包
[hadoop@test01 software]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module
/
4.修改解压之后的文件名称。(可以修改也可以不修改,修改了用着方便点)
[hadoop@test01 module]$ mv kafka_2.11-0.11.0.0/ kafka
5.在Kafka目录下的创建logs文件夹
mkdir logs
6.修改配置文件
cd config/
vi server.properties
#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/logs
# 注意:默认情况下kafka的topic的partition数据和log日志都存放在这个目录,日志文件中最重要的是server
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接Zookeeper集群地址
zookeeper.connect=test01:2181,test02:2181,test03:2181
7.配置环境变量(也可以不配置)
[hadoop@test01 module]$ sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[hadoop@bigdata02 module]$ source /etc/profile
8.分发安装包
//这里使用一个同步脚本,也可以用scp进行远程发送。
[hadoop@bigdata02 module]$ xsync kafka/
9.分别在test02和test03上修改配置文件Kafka/config/server/properties中的broker.id=1,broker.id=2
注意:broker.id不能重复.
10.启动集群
一次在test01,test02,test03上启动Kafka,(前提是你的zookeeper已经正常启动)
[hadoop@test01 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@test02 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@test03 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
11.关闭集群
[hadoop@test01 kafka]$ bin/kafka-server-stop.sh stop
[hadoop@test02 kafka]$ bin/kafka-server-stop.sh stop
[hadoop@test03 kafka]$ bin/kafka-server-stop.sh stop
12.kafka群起脚本
for i in bigdata02 bigdata03 bigdata04
do
echo "========== $i =========="
ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties'
echo $?
done
13.Kafka命令操作
查看当前服务器中的所有topic
[hadoop@test01 kafka]$ bin/kafka-topics.sh --zookeeper test01:2181 --list
创建topic
[hadoop@test01 kafka]$ bin/kafka-topics.sh --zookeeper test01:2181 --create --replication-factor 2 --partitions 3 --topic first
选项说明: --topic定义topic名
--replication-factor 定义副本数,这里设置的是当前实际的副本数,副本数不超过broker的数量,hdfs上设置的副本数是最大副本。
--partition 定义分区数
删除topic
[hadoop@test01 kafka]$ bin/kafka-topics.sh --zookeeper test01:2181 --delete --topic first
需要server.properties中设置delete.topic.enable=true否则只是标记删除
发送消息:
[hadoop@test01 kafka]$ bin/kafka-console-producer.sh --broker-list test01:9092 --topic first
>hello world
>hadoop hadoop
消费消息
[hadoop@test01 kafka]$ bin/kafka-console-consumer.sh \
--zookeeper test01:2181 --topic first
[hadoop@test01 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server test01:9092 --topic first
[hadoop@test01 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server test01:9092 --from-beginning --topic first
–from-beginning:会把主题中以往所有的数据都读出来。
消费者 --zookeeper 和 --bootstarp-server的区别?
对于消费者,Kafka中有两个设置的地方:对于老的消费者,由–zookeeper参数配置;
对于新的消费者,由–bootstarp-server参数设置
如果使用了–zookeeper参数,那么consumer的信息将会放在zk之中。
查看的方式时使用./zookeeper-client
然后 ls /consumers/[group_id]/offsets/[topic]/[broker_id-part_id],
这个是查看某个group_id的某个topic的offset
如果使用了–bootstarp-server参数,那么consumer的信息将会放在Kafka之中
参考链接:
https://www.cnblogs.com/tonglin0325/p/8810313.html
查看某个Topic的详情
[hadoop@test01 kafka]$ bin/kafka-topics.sh --zookeeper test01:2181 --describe --topic first
修改分区参数:
[hadoop@test01 kafka]$ bin/kafka-topics.sh --zookeeper test01:2181 --alter --topic first --partitions 6