Kafka安装实操+两种集群模式
- 下载Kafka:Apache Kafka
- 解压Kafka tgz包
授权:chmod 777 kafka_2.12-3.1.0.tgz
解压:tar -zxvf kafka_2.12-3.1.0.tgz
重命名:mv kafka_2.12-3.1.0 kafka
- Kafka Zookeeper 模式
- 修改Kafka的server.properties文件:
cd kafka/config/
vim server.properties
节点ID,全局唯一:broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.56.177:9092
数据存储目录:log.dirs=/home/pengbiao/kafka/datas
Zookeeper连接集群地址:
zookeeper.connect=hadoop001:2181,hadoop002:2181,hadoop003:2181/kafka
按Esc退出键,输入:wq保存并退出
- 修改Kafka的zookeeper.properties文件:
vim zookeeper.properties
数据存储目录:dataDir=/home/pengbiao/kafka/zookeeper
按Esc退出键,输入:wq保存并退出
- 修改环境变量/etc/profile文件:
vim /etc/profile
#Kafka环境变量
export KAFKA_HOME=/home/pengbiao/kafka
export PATH=$PATH:$KAFKA_HOME/bin
Jdk的安装省略,环境变量如下:
#Java环境变量
export JAVA_HOME=/home/pengbiao/jdk-11
export JRE_HOME=/home/pengbiao/jdk-11/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
刷新环境变量:source /etc/profile
- 编写xsync命令同步jdk、kafka、etc/profile到集群的其他服务器:
用户根目录创建bin目录:mkdir bin
cd bin
vim xsync
#! /bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount-lt 1 ]
then
echo No Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop002 hadoop003
do
echo ==================== $host ====================
#3. 递归遍历所有目录
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取全路径
pdir=$(cd -P $(dirname $file); pwd)
echo pdir=$pdir
#6. 获取当前文件的名称
fname=$(basename $file)
echo fname=$fname
#7. 通过ssh执⾏命令:在$host主机上递归创建文件夹(如果存在该文件夹)
ssh $host "source /etc/profile;mkdir -p $pdir"
#8. 远程同步文件到$host主机的$USER用户的$pdir文件夹下
rsync -av $pdir/$fname $USER@$host:$pdir
else
echo $file Does Not Exists!
fi
done
done
按Esc退出键,输入:wq保存并退出
修改xsync权限:chmod 777 xsync
修改/etc/hosts文件:vim /etc/hosts
分发文件到集群的服务器上(前提各服务器都安装ssh并启动):
返回用户根目录:cd ~
分发jdk-11到集群服务器:xsync jdk-11
分发Kafka到集群服务器:xsync kafka
注:需修改集群各服务器上环境变量/etc/profile、域名解析/etc/hosts文件和Kafka的server.properties文件(详见上面步骤)
- 手动启动Zookeeper和Kafka:
进入每台服务器的kafka安装目录:cd kafka/
启动Zookeeper:bin/zookeeper-server-start.sh –daemon config/zookeeper.properties
启动Kafka:bin/kafka-server-start.sh -daemon config/server.properties
关闭Zookeeper:bin/zookeeper-server-stop.sh
关闭Kafka:bin/kafka-server-stop.sh
查看进程:jps
- 编写集群启动Zookeeper和Kafka命令shell文件:
进入用户根目录的bin目录:cd bin/
创建并编辑Zookeeper启动文件:vim zk.sh
#!/bin/bash
case $1 in
"start")
for i in hadoop002 hadoop003
do
echo "--- 启动 $i zookeeper ---"
ssh $i "/home/pengbiao/kafka/bin/zookeeper-server-start.sh -daemon /home/pengbiao/kafka/config/zookeeper.properties"
done
;;
"stop")
for i in hadoop002 hadoop003
do
echo "--- 停止 $i zookeeper ---"
ssh $i "/home/pengbiao/kafka/bin/zookeeper-server-stop.sh"
done
;;
Esac
创建并编辑Kafka启动文件:vim kf.sh
#!/bin/bash
case $1 in
"start")
for i in hadoop002 hadoop003
do
echo "--- 启动 $i Kafka ---"
ssh $i "/home/pengbiao/kafka/bin/kafka-server-start.sh -daemon /home/pengbiao/kafka/config/server.properties"
done
;;
"stop")
for i in hadoop002 hadoop003
do
echo "--- 停止 $i Kafka ---"
ssh $i "/home/pengbiao/kafka/bin/kafka-server-stop.sh"
done
;;
Esac
授权:chmod 777 zk.sh
chmod 777 kf.sh
启动Zookeeper:zk.sh start
启动Kafka:kf.sh start
关闭Zookeeper:zk.sh stop
关闭Kafka:kf.sh stop
- Kafka Kraft模式
左图为kafka原有架构,元数据在zookeeper中,运行时动态选举controller,controller进行kafka集群管理。右图为kraft模式架构(实验性,2.8版本以后),不再依赖zookeeper集群,而是用三台controller节点代替zookeeper,元数据保存在controller中,由controller直接进行 kafka集群管理。这样做的好处有以下几个:
- Kafka不再依赖外部框架,而是能够独立运行
- Controller管理集群时,不再需要从zookeeper中先读取数据,集群性能上升
- 由于不依赖zookeeper,集群扩展时不再受到zookeeper读写能力限制
- Controller不再动态选举,而是由配置文件规定。这样我们可以有针对性的加强
- Controller节点的配置,而不是像以前一样对随机Controller节点的高负载束手无策
- 修改Kafka的config/kraft/server.properties文件:
vim server.properties
集群节点ID(全局唯一):node.id=1
Controller管理集群配置:
controller.quorum.voters=1@hadoop002:9093,2@hadoop003:9093
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://hadoop002:9092
数据存储目录:log.dirs=/home/pengbiao/kafka/data
按Esc退出键,输入:wq保存并退出
- 修改环境变量/etc/profile文件(详见上面Kafka Zookeeper中的)
- 编写xsync命令,将jdk、kafka、etc/profile分发到集群的其他服务器(详见上面Kafka Zookeeper中的)
- 修改集群其他服务器上的环境变量/etc/profile、域名解析/etc/hosts文件和Kafka的config/kraft/server.properties文件(详见上面步骤)
- 初始化集群数据目录
- 生成存储目录唯一ID
bin/kafka-storage.sh random-uuid
- 用该ID格式化kafka存储目录(集群每台服务器都得执行)
bin/kafka-storage.sh format -t Wc2IGWeLRfu6Fae-D69_5A -c /home/pengbiao/kafka2/config/kraft/server.properties
- 启动kafka集群
bin/kafka-server-start.sh -daemon config/kraft/server.properties
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhhejfa
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22