6、Hadoop框架Zookeeper简介、搭建及简单使用

Hadoop框架Zookeeper简介、搭建及简单使用

Zookeeper简介

  Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。
  Zookeeper集群中节点个数一般为奇数个(>=3),若集群中Master挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务。

  客户端发起事务请求,事务请求的结果在整个Zookeeper集群中所有机器上的应用情况是一致的。不会出现集群中部分机器应用了该事务,而存在另外一部分集群中机器没有应用该事务的情况。在Zookeeper集群中的任何一台机器,其看到的服务器的数据模型是一致的。Zookeeper能够保证客户端请求的顺序,每个请求分配一个全局唯一的递增编号,用来反映事务操作的先后顺序。Zookeeper将全量数据保存在内存中,并直接服务于所有的非事务请求,在以读操作为主的场景中性能非常突出。   Zookeeper使用的数据结构为树形结构,根节点为"/"。Zookeeper集群中的节点,根据其身份特性分为leader、follower、observer。leader负责客户端writer类型的请求;follower负责客户端reader类型的请求,并参与leader选举;observer是特殊的follower,可以接收客户端reader请求,但是不会参与选举,可以用来扩容系统支撑能力,提高读取速度。   Zookeeper是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理相关数据,接收观察者的注册。一旦这些数据的状态发生变化,zookeeper就负责通知那些已经在zookeeper集群进行注册并关心这些状态发生变化的观察者,以便观察者执行相关操作。   Zookeeper使用的是ZAB原子消息广播协议,节点之间的一致性算法为Paxos,能够保障分布式环境中数据的一致性。分布式场景下高可用是Zookeeper的特性,可以采用第三方客户端的实现,即Curator框架。

  Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。
不仅仅是分布式系统中,凡是多个过程需要达成某种一致的场合都可以使用Paxos 算法。一致性算法可以通过共享内存(需要锁)或者消息传递实现,Paxos 算法采用的是后者。Paxos 算法适用的几种情况:一台机器中多个进程/线程达成数据一致;分布式文件系统或者分布式数据库中多客户端并发读写数据;分布式存储中多个副本响应读写请求的一致性。


Zookeeper集群搭建

  在本文中Zookeeper节点个数(奇数)为3个。Zookeeper默认对外提供服务的端口号2181 。Zookeeper集群内部3个节点之间通信默认使用2888:3888

192.168.100.101  
192.168.100.102  
192.168.100.103

下载zookeeper对应的tar包

1、上传安装包到master并解压

#切换到moudle目录下用xftp上传
cd/usr/local/moudle
#解压
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/soft/

2、配置环境变量

#切换到zookeeper-3.4.6目录
cd /usr/local/soft/zookeeper-3.4.6

#为了方便配置环境变量先pwd复制一下路径
pwd
/usr/local/soft/zookeeper-3.4.6

#配置环境变量
vim /etc/profile

ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#刷新环境变量
source /etc/profile

source后输入zk按2下Tab键查看是否补齐,否则环境变量配置失败

3、修改配置文件

#切换到conf目录
cd conf/

#复制并重命名
cp  zoo_sample.cfg zoo.cfg

#编辑配置文件
vim zoo.cfg

#修改
dataDir=/usr/local/soft/zookeeper-3.4.6/data

#增加
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888

4、新建data目录

#切回zookeeper-3.4.6目录
cd /usr/local/soft/zookeeper-3.4.6

#新建data目录
mkdir data

#切换到data目录
cd data

#创建一个myid文件
touch myid

5、同步到其它节点

#切回到soft目录
cd /usr/local/soft

#同步
[root@master soft]# scp -r zookeeper-3.4.6/ node1:`pwd`
[root@master soft]# scp -r zookeeper-3.4.6/ node2:`pwd`

6、配置node1和node2的环境变量

  • 配置node1
#切换目录
[root@node1 ~]# cd /usr/local/soft/zookeeper-3.4.6/
pwd
/usr/local/soft/zookeeper-3.4.6

#配置node1环境变量
vim /etc/profile

ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

source /etc/profile

source后输入zk按2下Tab键查看是否补齐,否则环境变量配置失败

  • 同理配置node2
#切换目录
[root@node2 ~]# cd /usr/local/soft/zookeeper-3.4.6/
pwd
/usr/local/soft/zookeeper-3.4.6

#配置node1环境变量
vim /etc/profile

ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

source /etc/profile

source后输入zk按2下Tab键查看是否补齐,否则环境变量配置失败

#在所有节点执行
source /etc/profile

7、编辑/usr/local/soft/zookeeper-3.4.6/data/myid

#切换所有节点的data目录
cd /usr/local/soft/zookeeper-3.4.6/data/

master,node1,node2分别加上0,1,2
  • master
  • node1
  • node2

8、启动zk

#三台都需要执行
zkServer.sh start

#查看状态
zkServer.sh status

通过jps可以查看zk的进程:QuorumPeerMain

当有一个leader的时候启动成功

9、停止zk

#三台都需要执行
zkServer.sh stop

10、连接zk

zkCli.sh
zk  是一个目录结构 ,每个节点可以存数据,同时可以有子节点
默认连接localhost
#退出
quit
  • 连接node1
zkCli.sh -server node1:2181
  • help查看所有命令
随便敲也行
help
zk Shell

ls /

  • 创建目录
create /test testData
create /test/a aData

ls /test

  • 获取数据
get /test
ls /test
  • 删除数据
delete 只能删除没有子节点的节点
rmr /test  删除节点
  • 修改数据
set /test/a aData
连接node2跟node1的数据是一样的(数据同步)去中心化架构

11、重置zk

1、杀掉所有zk进程
kiil -9 pid

2、删除data目录下的version文件, 所有节点都要删除
rm -rf /usr/local/soft/zookeeper-3.4.6/data/version-2

2、启动zk
zkServer.sh start

到底啦!觉得靓仔的文章对你学习Hadoop有所帮助的话,一波三连吧!q(≧▽≦q)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值