2.1
安装部署
2.1.1
集群规划
hadoop102
hadoop103
hadoop104
zk
zk
zk
kafka
kafka
kafka
2.1.2 jar
包下载
http://kafka.apache.org/downloads.html
2.1.3 集群部署
1
)解压安装包
[atguigu@hadoop102 software]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C
/opt/module/
2
)修改解压后的文件名称
[atguigu@hadoop102 module]$ mv kafka_2.11-0.11.0.0/ kafka
3
)在
/opt/module/kafka
目录下创建
logs
文件夹
[atguigu@hadoop102 kafka]$ mkdir logs
4
)修改配置文件
[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 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
#topic
在当前
broker
上的分区个数
num.partitions=1
#
用来恢复和清理
data
下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment
文件保留的最长时间,超时将被删除
log.retention.hours=168
#
配置连接
Zookeeper
集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
5
)配置环境变量
[atguigu@hadoop102 module]$ sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[atguigu@hadoop102 module]$ source /etc/profile
6
)分发安装包
[atguigu@hadoop102 module]$ xsync kafka/
注意:分发之后记得配置其他机器的环境变量
7
)分别在
hadoop103
和
hadoop104
上修改配置文件
/opt/module/kafka/config/server.properties
中的
broker.id=1
、
broker.id=2
注:
broker.id
不得重复
8
)启动集群
依次在
hadoop102
、
hadoop103
、
hadoop104
节点上启动
kafka
[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh
-daemon
config/server.properties
[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh
-daemon
config/server.properties
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh
-daemon
config/server.properties
9
)关闭集群
[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh stop
10
)
kafka
群起脚本
for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i =========="
ssh $i
'/opt/module/kafka/bin/kafka-server-start.sh
-daemon
/opt/module/kafka/config/server.properties'
done
2.2 Kafka
命令行操作
1
)查看当前服务器中的所有
topic
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh
--zookeeper
hadoop102:2181
--list
(实测)./kafka-topics.sh --bootstrap-server node245:9092 --list
2
)创建
topic
[atguigu@hadoop102 kafka]$
bin/kafka-topics.sh
--zookeeper
hadoop102:2181
--create
--replication-factor 3 --partitions 1 --
topic first
选项说明:
--topic
定义
topic
名
--replication-factor
定义副本数
--partitions
定义分区数
(亲测)bin/kafka-topics.sh --bootstrap-server node245:9092 --create --replication-factor 2 --partitions 1 --topic first
3
)删除
topic
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh
--zookeeper
hadoop102:2181
--delete
--topic first
需要
server.properties
中设置
delete.topic.enable=true
否则只是标记删除。
(实测)./kafka-topics.sh --bootstrap-server node245:9092 --delete --topic two
4
)发送消息
[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh --broker
list hadoop102:9092 --topic first
>hello world
>atguigu atguigu
(实测)./kafka-console-producer.sh --broker-list node245:9092 --topic my-topic
5
)消费消息
[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \
--zookeeper hadoop102:2181 --topic first
[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --topic first
[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --from-beginning --topic first
--from-beginning
:会把主题中以往所有的数据都读取出来。
(实测)./kafka-console-consumer.sh --bootstrap-server node245:9092 --topic my-topic
6
)查看某个
Topic
的详情
[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh
--zookeeper
hadoop102:2181
--describe
--topic first
7
)修改分区数
[atguigu@hadoop102 kafka]$
bin/kafka-topics.sh
--zookeeper
hadoop102:2181 --alter --topic first --partitions 6