kafka集群搭建

kafka集群搭建
第一步部署三个节点zk

3.1. 下载Zookeeper
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
解压文件:

#tar -zxvf zookeeper-3.4.11.tar.gz

3.2. 配置相关文件
1) 配置conf/zoo.cfg
将zk安装目录下conf/zoo_sample.cfg修改为zoo.cfg
#cp zoo_sample.cfg zoo.cfg
文件内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/mnt/hadoop/zookeeper-3.4.12/data
clientPort=2181

server.1=192.168.3.172:2888:3888
server.2=192.168.3.173:2888:3888
server.3=192.168.3.174:2888:3888
 initLimit
ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
 syncLimit
配置follower和leader之间发送消息,请求和应答的最大时间长度。
 tickTime
tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
 dataDir
其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。
2) 设置myid
在节点配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,$ZOOKEEPER_HOME/conf/zoo.cfg文件中配置的server.X,则myid文件中就输入这个数字X。(即在每个节点上新建并设置文件myid,其内容与zoo.cfg中的id相对应)这里master节点为 1
#mkdir /mnt/hadoop/zookeeper-3.4.12/data
#cd /mnt/hadoop/zookeeper-3.4.12/data
#touch myid
#echo “1” > myid

3) 设置日志
修改conf/log4j.properties

Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE

改为

Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, ROLLINGFILE

log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender

改为—每天一个log日志文件,而不是在同一个log文件中递增日志log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender

修改bin/zkEvn.sh

54 if [ "x${ZOO_LOG_DIR}" = "x" ]
     55 then
     56     ZOO_LOG_DIR="."
     57 fi
     58 
     59 if [ "x${ZOO_LOG4J_PROP}" = "x" ]
     60 then
     61     ZOO_LOG4J_PROP="INFO,CONSOLE"
     62 fi
改为
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="$ZOOBINDIR/../logs"
Fi

if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
    ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi

3.3. 从master节点分发文件到其他节点
1) ZK软件从主节点复制到其它节点
把在hdn1上配置好的zk软件,通过远程复制命令

 scp -r /mnt/hadoop/zookeeper-3.4.12  hadoop@hdn2:/mnt/hadoop/
#scp -r /mnt/hadoop/zookeeper-3.4.12  hadoop@hdn3:/mnt/hadoop/

复制到hdn2、hdn3对应的位置 并修改myid.
 在hdn2节点的/mnt/hadoop/zookeeper-3.4.12/data目录下
#vi /mnt/hadoop/zookeeper-3.4.12/data/myid
修改为 2
 在hdn3节点的/mnt/hadoop/zookeeper-3.4.12/data目录下
#vi /mnt/hadoop/zookeeper-3.4.12/data/myid
修改为 3
3.4. 启动ZK
在每个节点上$ZOOKEEPER_HOME目录下,运行 (这里的启动顺序为 hdn1> hdn2 > hdn2 )
/mnt/hadoop/zookeeper-3.4.12/bin/zkServer.sh start
都运行后,再用命令在各节点查看启动状态
/mnt/hadoop/zookeeper-3.4.12/bin/zkServer.sh status
如果启动失败,可以到zk安装目录logs目录下查看日志。
3.5. 关闭ZK
#/mnt/hadoop/zookeeper-3.4.12/bin/zkServer.sh stop

登录zk
/mnt/hadoop_runtimes/zookeeper-3.4.12/bin/zkCli.sh

=============================================================
第二步部署三个节点kafka

修改配置文件 server.properties
1.broker.id=2 #每个节点的值不一样,必须为正整数
2.log.dirs=/mnt/kafka/kafka_2.11-2.1.0/logs

3.#设置zookeeper的连接端口
zookeeper.connect=192.168.3.227:2181,192.168.3.228:2181,192.168.3.229:2181

出现问题解决方案:

  1. Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE}
    表示无法识别kafka hostname

kafka配置文件:
listeners=PLAINTEXT://192.168.3.228:9092
advertised.listeners=PLAINTEXT://192.168.3.228:9092

每个节点分别启动:

nohup /mnt/kafka_2.11-2.1.0/bin/kafka-server-start.sh  /mnt/kafka_2.11-2.1.0/config/server.properties  &

/mnt/kafka_2.11-2.1.0/bin/kafka-server-start.sh -daemon config/server.properties

jps查看kafka进程
在这里插入图片描述

=============================================================

测试kafka

  1. 创建 wfdebugo01,这个topic分区数为3,复制为1(不复制)。该topic跨越全部broker。下面管理命令在任意kafka节点上执行即可

/mnt/kafka_2.11-2.1.0/bin/kafka-topics.sh --create --zookeeper node3,node4,node5 --replication-factor 1 --partitions 3 --topic wfdebugo01
在这里插入图片描述

  1. 创建 wfdebugo02,这个topic分区数为1,复制为3(每个主机都有一份)。该topic跨越全部broker。下面管理命令在任意kafka节点上执行即可
    /mnt/kafka_2.11-2.1.0/bin/kafka-topics.sh --create --zookeeper node3,node4,node5 --replication-factor 3 --partitions 1 --topic wfdebugo02
    在这里插入图片描述
  2. 列出topic信息
    /mnt/kafka_2.11-2.1.0/bin/kafka-topics.sh --list --zookeeper localhost:2181
    在这里插入图片描述
  3. 列出topic描述信息
    /mnt/kafka_2.11-2.1.0/bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic wfdebugo01
    在这里插入图片描述
  4. 消息的产生和消费

/mnt/kafka_2.11-2.1.0/bin/kafka-console-producer.sh --broker-list node3:9092 --topic wfdebugo01

在这里插入图片描述

/mnt/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server node3:9092 --topic wfdebugo01 --from-beginning

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值