Zokeeper安装配置及简单使用

  • 分布式:可以简单的理解为任务拆分和节点分工;

   分布式是解决高可用,高并发的。集群解决的是高可用。集群式从物理上进行定义,而分布式是一种工作方式;

   例如:一个工作任务需要10个小时(单个节点);

           分布式:10台机器,任务只需要1个小时就能完成;

           集群:10台机器,任务还是10个小时;

  • 分布式的协作难点:

   对于设计的分布式系统,所出现的问题也会有很多;

  1. 如何保证节点的高可用(节点故障);
  2. 如何保证数据的一致性;
  3. 通讯异常时如何处理;
  4. 网络分区;等等.....

     而这些问题Zk都有对应的解决办法;

  • Zookeeper简介

     分布式协作。zookeeper是google的chubby项目开源实现。最早是hadoop的子项目。

     小米米聊、淘宝Taokeeper其实类zookeeper。

      Kafka使用zookeeper。消息发布订阅,其中zk就是用于检测节点崩溃。实现主题的发现,并且保持主题的生产和消费状态。 

      Hbase三段查找,Root-Region=》Meta Region=》Region(Table)。hbase的元数据信息放在HBase。HMaster挂掉,马上 要节点恢复。

       Hadoop。NameNode(SecondaryNameNode),HA Hadoop。一般情况下一个简单的hadoop集群,只有一个NameNode,如果NameNode挂掉,hadoop集群不可用。HA Haoop里面就要用到zk。

  •  Zookeeper解决哪些问题

      1. Master节点管理

        解决的问题:Master高可用(主机挂掉以后,谁来负责工作),保证唯一;

      2. 配置文件管理

        解决的问题:统一把配置文件存放在Zookeeper,由Zookeeper统一发放

      3. 发布和订阅

        发布者(producer)讲数据发布到zk节点上,供订阅者(consumer)动态获取

      4. 分布式锁

        分布式环境访问统一个资源,由第三方配锁实现。

        解决的问题:由zk统一进行协调,保证数据的一致性。

      5.集群的管理 

         Worker集群监控。

  • Zookeeper安装配置

      1. 下载

          $ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

       2. 解压

          $ tar xvzf zookeeper-3.4.9.tar.gz

          $ mv ./zookeeper-3.4.9 /usr/local/

  1. 修改配置文件

    ${ZOOKEEPER_HOME}/conf/zoo_sample.cfg

 

(伪分布式)

dataDir指定当前服务器数据存放的路径(目录)

clientPort 指定当前服务器服务器的端口

server.1/server.2/server.3 指定服务器的集群情况(有几台服务器,master是服务器地址)

 

myid必须手动建立且指定在zk数据目录,也就是dataDir指定的路径(不管真分布还是伪分布都需要指定)

$ echo 1 >> /home/zookeeper/zk1/myid

$ echo 2 >> /home/zookeeper/zk2/myid

$ echo 3 >> /home/zookeeper/zk3/myid

 

Zookeeper伪分布式部署(server zookeeper只有一份)

/conf/zoo1.cfg zoo2.cfg zoo3.cfg

zoo1.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk1(这个目录可以自行指定)

clientPort=2181

server.1=master:2888(通讯端口):3888(选举端口)

server.2=master:2889:3889

server.3=master:2890:3890

 

zoo2.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk2

clientPort=2182

server.1=master:2888:3888

server.2=master:2889:3889

server.3=master:2890:3890

 

zoo3.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk3

clientPort=2183

server.1=master:2888:3888

server.2=master:2889:3889

server.3=master:2890:3890

 

 

Zookeeper真分布部署在master、slave1、slave2 三台不同的服务器上

注意:服务器之间的通信是否正常;防火墙是否关闭等等;

server1..../conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk

clientPort=2181

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

 

server2..../conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk

clientPort=2181

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

 

 

server3..../conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/hadoop/tmp/zookeeper/zk

clientPort=2181

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

 

  • Zookeeper及其APi的使用

  •  伪分布式:     

       停止Zookeeper

         $ zkServer.sh stop /usr/local/zookeeper-3.4.6/conf/zoo1.cfg

         $ zkServer.sh stop /usr/local/zookeeper-3.4.6/conf/zoo2.cfg

          $ zkServer.sh stop /usr/local/zookeeper-3.4.6/conf/zoo3.cfg

 

         启动Zookeeper

$ zkServer.sh start /usr/local/zookeeper-3.4.6/conf/zoo1.cfg

$ zkServer.sh start /usr/local/zookeeper-3.4.6/conf/zoo2.cfg

$ zkServer.sh start /usr/local/zookeeper-3.4.6/conf/zoo3.cfg

 

         查看zookeeper状态

$ zkServer.sh status /usr/local/zookeeper-3.4.6/conf/zoo1.cfg

$ zkServer.sh status /usr/local/zookeeper-3.4.6/conf/zoo2.cfg

$ zkServer.sh status /usr/local/zookeeper-3.4.6/conf/zoo3.cfg

  • 真分布式(其中一个ZK的启动):

zk的相关命令.

启动ZK服务:       sh zkServer.sh start

查看ZK服务状态: sh zkServer.sh status

 停止ZK服务:       sh zkServer.sh stop

 重启ZK服务:       sh zkServer.sh restart
 

1.启动zk真分布中的3个Zk;

        

2.查看后的zk状态(mode:表示是状态,follower表示的是从;leader表示的是主);

zk2为主:如图

           

           zk1和zk3为从:如图

           

           

3.查看主Zk进程并杀死进程:(主zk2的进程,查询并杀死进程)

查询进程主ZK2

杀死进程主ZK2

           

查看主ZK2的状态已经停止

          

           查看zk1和zk3的状态时,zk3变成了leader

          

           

      手动停止主zk2,然后去查看另外两个从的zk,可以发现其中一个从zk3状态,已经改为了leader;如果再停掉zk3,这是集群会挂掉,而不是zk1变成leader,因为集群遵循m/2+1=n ,当n台服务器可用,才能保证集群可用,m代表集群的总服务器个数;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值