本篇文章介绍的是linux集群常用的执行命令脚本(xcall),如有错误或不当之处,还望各位大佬批评指正。众所周知,在启动zookeeper集群、kafka集群时常常会遇到同一个启动命令要在多个机器上执行的烦恼,如果一台一台机器执行的话十分的繁琐,那么这时就用到了如下的(xcall)脚本。
一、执行命令脚本(xcall)
(—)首先搭建好zookeeper集群和Kafka集群的环境
1.在zookeeper安装路径的bin目录下创建一个名为zk的文件
#在主节点HadoopMaster上执行如下操作:
- cd /opt/zookeeper-3.4.5/bin
- vim zk
2.在zk文件里面编写shell脚本,脚本源码如下:
#!/bin/bash case $1 in "start"){ for i in HadoopMaster HadoopSlave01 HadoopSlave02 do echo -----------zookeeper $i 启动--------------- ssh $i "/opt/zookeeper-3.4.5/bin/zkServer.sh start" done };; "stop"){ for i in HadoopMaster HadoopSlave01 HadoopSlave02 do echo -----------zookeeper $i 停止--------------- ssh $i "/opt/zookeeper-3.4.5/bin/zkServer.sh stop" done };; "status"){ for i in HadoopMaster HadoopSlave01 HadoopSlave02 do echo -----------zookeeper $i 停止--------------- ssh $i "/opt/zookeeper-3.4.5/bin/zkServer.sh stop" done };; *) echo "Input Args Error..." echo "$0 [start|stop|status]..." ;; esac
3.chmod +x命令给文件的所有者、所属组和其他用户添加可执行权限,使得他们都可以运行该文件。
- chmod +x zk
- zk start
4.执行xcall jps显示ZooKeeper 集群的进程
【注意!】这里还不能完全确定zookeeper进程已经正常启动了,我们去看看它的状态。
#我们可以看到这时候zookeeper是没有正常启动的!
#解决办法:
1.检查一下网络是否正常连通
2.检查一下防火墙是否已经关闭
在 CentOS 6.5 中,关闭防火墙的命令如下:
- service iptables stop(临时关闭防火墙)
- chkconfig iptables off(永久关闭防火墙)
- service iptables status(查看防火墙状态)
在 CentOS 7 中,关闭防火墙的命令如下:
- systemctl stop firewalld(临时关闭防火墙)
- systemctl disable firewalld(永久关闭防火墙)
- systemctl status firewalld(查看防火墙状态)
3.再次启动zookeeper查看其状态(如下已经正常启动-Hadoopmaster分配到的角色是follower)
- zk start
- zkServer.sh status
5. 在kafka安装路径的bin目录下创建一个名为kfk的文件
#在主节点HadoopMaster上执行如下操作:
- cd /opt/kafka_2.11-2.3.1/bin
- vim kfk
6.在kfk文件里面编写shell脚本,脚本源码如下:
#!/bin/bash
kafka_start() {
for i in HadoopMaster HadoopSlave01 HadoopSlave02
do
echo " --------启动 $i Kafka-------"
ssh $i "source /etc/profile; /opt/kafka_2.11-2.3.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-2.3.1/config/server.properties"
done
}
kafka_stop() {
for i in HadoopMaster HadoopSlave01 HadoopSlave02
do
echo " --------关闭 $i Kafka-------"
ssh $i "source /etc/profile; /opt/kafka_2.11-2.3.1/bin/kafka-server-stop.sh"
done
}
case $1 in
"start")
kafka_start
;;
"stop")
kafka_stop
;;
"restart")
kafka_stop
kafka_start
;;
*)
echo "Input Args Error..."
echo "$0 [start|stop|restart]..."
;;
esac
7.chmod +x命令给文件的所有者、所属组和其他用户添加可执行权限,使得他们都可以运行该文件。
- chmod +x kfk
- kfk start
8.执行xcall jps显示kafka 集群的进程
二、Kafka测试
(—)Kafka基本操作
1.创建topic
- bin/kafka-topics.sh -zookeeper HadoopSlave01:2181 --create --partitions 3 --replication-factor 2 --topic order-info
--zookeeper:zookeeper集群节点
--partitions:分区数
--replication-factor:副本数
--topic:topic名称
2. 查询topic列表
- bin/kafka-topics.sh --list -zookeeper HadoopSlave01:2181
3.启动控制台生产者(需要另外打开一个终端)
- kafka-console-producer.sh --broker-list HadoopSlave01:9092 --topic order-info
4.启动控制台消费者(需要另外打开一个终端)
- kafka-console-consumer.sh --bootstrap-server HadoopSlave01:9092 --topic order-info --from-beginning
(二)测试
1.在生产者所在的终端中输入文字,如:
“Everything you can imagine is real.” - Pablo Picasso “你能想象到的一切都是真实的。” - 巴勃罗·毕加索
“Your life does not get better by chance, it gets better by change.” - Jim Rohn “你的生活不会因为偶然而变得更好,而是因为改变而变得更好。” - 吉姆·罗恩
2.在消费者终端可以看到接收到的信息
3.查看进程,jps
4.查看下此时zookeeper中生成了哪些内容,执行:zkCli.sh
5. 删除topic
- bin/kafka-topics.sh --delete -zookeeper HadoopSlave01:9092 --topic niit-topic
--zookeeper:集群节点
--topic:topic名称