暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

8.C CDH中zookeeper简介

rundba 2021-04-08
2559

0. zookeeper简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,基于Paxos(Oceabase采用的分布式协议)算法为基础,是Google的Chubby一个开源的实现,是Hadoop的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

主要用来解决分布式集群中应用系统的一致性问题。它可以减轻分布式应用程序所承担的协调任务,在越来越多的分布式系统(Hadoop、HBase、Kafka)中和国产数据库(TDSQL zookeeper),ZooKeeper都作为核心组件使用,它是一个为分布式应用提供一致性服务的软件,本文对CDH中的zookeeper进行简要说明。


1. zk路径

zk路径:

[root@cdh02 bin]# pwd

/opt/cloudera/parcels/CDH/lib/zookeeper/


实际路径:

/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/zookeeper

CDH是CDH-6.3.1-1.cdh6.3.1.p0.1470567的软连接


2. 配置文件

$ZOOKEEPER_DIR/conf/zoo.cfg #内容参考

...

maxClientCnxns=50

# The number of milliseconds of each tick

tickTime=2000 #zk server和client之间心跳检测时间间隔,当前为每2000ms检测一次心跳

# The number of ticks that the initial 

# synchronization phase can take

initLimit=10 #zk server接受client初始化期间能忍受的检测次数,10次tickTime,即10*2000(20秒)没有收到zk client响应信息时,则该client初始化失败

# The number of ticks that can pass between 

# sending a request and getting an acknowledgement

syncLimit=5 #leader和fllower之间间隔次数,超过这个间隔次数,5*2000ms(10秒),则主备连接失败

# the directory where the snapshot is stored.

dataDir=/var/lib/zookeeper #zk快照存储路径

# the port at which the clients will connect

clientPort=2181 #zk client端口

# the directory where the transaction logs are stored.

dataLogDir=/var/lib/zookeeper #zk日志存储路径


3. 查看当前节点编号

[root@cdh01 conf]# cat var/lib/zookeeper/myid

2


注:当前节点是leader,myid不一定是1,当前节点是follower

如果使用Hadoop商业版本ClouderaCDH,建议通过图形界面来修改配置参数。在ClouderaManager界面上更改配置是不会立即反映到配置文件中的,这些信息会存储于数据库中,等下次重启服务时才会生成配置文件。


4.查看当前节点主备 

[root@cdh02 bin]# ./zkServer.sh status

JMX enabled by default

Using config: opt/cloudera/parcels/CDH/lib/zookeeper/bin/../conf/zoo.cfg

Mode: follower #当前节点为从节点,Leader则为主节点


也可以在web界面进行查看,CM界面,点击zookeeper组件,会显示zk集群状态:

ZooKeeper 服务器状态

Server, cdh02 (Follower)

Server, cdh01 (Follower)

Server, cdh03 (Leader)


注:zookeeper节点数量一般为奇数个,可以单节点配置,建议最低为3个,提供冗余。


5. 常用命令

zookeeper提供Java和C的接口,也提供一些命令行操作。

5.1 常用命令路径

$ZOOKEEPER_DIR/bin


5.2 常用命令说明

zkServer.sh         #ZooKeeper服务器的操作命令

zkCli.sh         #ZooKeeper命令行操作界面

zkEnv.sh         #ZooKeeper服务器的环境设置

zkCleanup.sh #清理旧快照和事务日志

zkTxnLogToolkit.sh #TxnLogToolkit是ZooKeeper附带的命令行工具,能够恢复带有损坏CRC的事务日志条目

zkSnapShotToolkit.sh #将快照文件转储到stdout,其中显示每个zk节点的详细信息

zkSnapshotComparer.sh #SnapshotComparer是一个工具,可加载和比较具有可配置阈值和各种过滤器的两个快照,并输出有关增量的信息


5.3 常用命令举例

1) 查看版本及运行环境

[root@cdh02 bin]# ./zkCli.sh version

Connecting to localhost:2181

2021-04-07 15:03:33,535 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-cdh6.3.1--1, built on 09/26/2019 09:28 GMT

2021-04-07 15:03:33,539 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=cdh02

2021-04-07 15:03:33,539 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_144

2021-04-07 15:03:33,541 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation

2021-04-07 15:03:33,541 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/java/jdk1.8.0_144/jre

...


2) zk在CDH中的使用场景

  • HDFS HA采用自动切换机制采用的zookeeper,zookeeper配合NameNode的ZKFC(FailoverController)进程进行故障自动切换;

  • ZooKeeper实现HBase的HMaster(Hbase管理角色)高可用;

  • ZooKeeper在Storm集群中的协调者作用,ZooKeeper作为Storm集群各个节点的协调者,是Nimbus和Supervisor进行交互的中介,任务状态和心跳信息等都保存在ZooKeeper上。


6. 监控

从3.6.0开始可用,它提供了丰富的指标来帮助用户监视ZooKeeper,涉及以下主题:znode,网络,磁盘,仲裁,领导者选举,客户端,安全性,故障,监视/会话,requestProcessor等。


监控方式:

指标监控:Metrics(包含在ServerMetrics.java)、Prometheus、Grafana、InfluxDB

JMX方式;

4字母单词方式(Four letter words);


7. 官方参考

更过精彩,详见apache项目https://zookeeper.apache.org


文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论