一、zookeeper的概念
zookeeper是一个开源的分布式应用程序协调服务
zookeeper是用来保证数据在集群间的事务一致性
zookeeper角色与特性:
leader:接受所有Follower的提案请求并同一协调发起提案的投票,负责与所有的Follower进行内部数据交互
Follower:直接为客户端服务并参与提案的投票,同时与leader进行数据交换
Observer:直接为客户端服务但并不参与提案的投票,同时也与leader进行数据交换
zookeeper集群实验
1.1 按照zookeeper
[root@hadoop-0001 ~]# tar -xf hadoop/zookeeper-3.4.13.tar.gz
[root@hadoop-0001 ~]# mv zookeeper-3.4.13 /usr/local/zookeeper
[root@hadoop-0001 conf]# vim zoo.cfg
server.1=hadoop-0002:2888:3888
server.2=hadoop-0003:2888:3888
server.3=hadoop-0004:2888:3888
server.4=hadoop-0001:2888:3888:observer
[root@hadoop-0001 ~]# ansible-playbook 111.yml //同步zookeeper配置文件
[root@hadoop-0001 ~]# mkdir /tmp/zookeeper //zoo.cfg中指定的目录
[root@hadoop-0001 ~]# ansible node -m shell -a 'mkdir /tmp/zookeeper'
创建 myid 文件,id 必须与配置文件里主机名对应的 server.(id) 一致
[root@hadoop-0001 ~]# echo 4 >/tmp/zookeeper/myid
[root@hadoop-0001 ~]# ssh hadoop-0002 'echo 1 >/tmp/zookeeper/myid'
[root@hadoop-0001 ~]# ssh hadoop-0003 'echo 2 >/tmp/zookeeper/myid'
[root@hadoop-0001 ~]# ssh hadoop-0004 'echo 3 >/tmp/zookeeper/myid'
启动服务,并查看状态
[root@hadoop-0001 ~]# /usr/local/zookeeper/bin/zkServer.sh start
[root@hadoop-0001 ~]# ansible node -m shell -a '/usr/local/zookeeper/bin/zkServer.sh start'
[root@hadoop-0001 ~]# ansible node -m shell -a '/usr/local/zookeeper/bin/zkServer.sh status'
二、kafka
2.1 kafka是什么
2.2 Kafka集群实验
利用Zookeeper搭建一个Kafka集群
创建一个topic
模拟生产者发布消息
模拟消费者接收消息
2.2.1 安装kafka
[root@hadoop-0001 ~]# tar -xf hadoop/kafka_2.12-2.1.0.tgz
[root@hadoop-0001 ~]# mv kafka_2.12-2.1.0 /usr/local/kafka
[root@hadoop-0001 ~]# vim /usr/local/kafka/config/server.properties
...............
broker.id=4 //范围1-255,保证数字不重复
..............
[root@hadoop-0001 ~]# for i in 71 72 73; do rsync -aSH --delete /usr/local/kafka 192.168.1.$i:/usr/local/; done //拷贝到其他机器上
其他机器也更改配置,保证数字唯一
2.2.2 启动 kafka 集群,并验证
在hadoop-0002、hadoop-0003、hadoop-00014启动
[root@hadoop-0001 ~]# ansible node -m shell -a '/usr/loc