1、巡检
ZooKeeper 为上层应用服务提供协调同步和配置一致性等服务。
每日早晚登录运行 ZooKeepeRegionServererver 服务的主机,检测 ZK 状态。
1.1、ZooKeeper服务状态
1.2、参数配置
| 序号 | 配置项 | 当前配置 | 推荐配置 |
|---|---|---|---|
| 1 | 数据目录 dataDir | /opt/zookeeper/data | |
| 2 | 事务日志目录dataLogDir | /opt/zookeeper/data | |
| 3 | 最大客户端连接数maxClientCnxns | 60 | 2000 |
| 4 | Zookeeper Server 的Java 堆栈大小 | 1G | 4G |
| 5 | 系统用户 | Hadoop | zookeeper |
| 6 | 系统组 | hadoop | zookeeper |
调整建议:
①增大最大客户端连接数:
通常来讲,在一个大集群里面,对于 Zookeeper 的访问量会比较大,因此需要增大 Zookeeper 的客户端最大连接数。
②增大 ZookeepeRegionServererver 的 Java 堆栈大小:
集群比较大的情况下,Zookeeper 负载较高,需要的内存也更多。因此建议,增大 Zookeeper 的内存到 4G。
1.3、ZooKeeper shell巡检
①jps
②netstat -anput|grep 2181
查询监控端口状态
③zkServer.sh status
查询具体状态
2、排障
2.1、ZooKeeper无法正常使用
我们的集群出现了一个问题,zookeeper 突然无法正常使用,造成了整个集群产生了故障,在当时的 cm 监控页面中看到 内存溢出相关提示,但是后续再找,无法找到,并且在 zk 日志中并未找到内存溢出相关提示。
【解决办法】
zookeeper 服务器的日志中对于 Hive 应用产生的 Znode 节点数, 可以看到一共有将近 25 万个(每个 znode 都会在 Zookeeper 服务器进程内存中存在并占用一定空间)
grep hive_zookeeper_namespace_hive zookeeper-cmf-zookeeper-SERVER-DSJ-RTB-4T-205.log|wc -l
249357
推测报告 OutOfmemory 错误的时候许多 Hive 的查询所需的 znode 占据了大量的 zookeeper 的进程内存(JVM heap), 所以导致进程崩溃。加大 zk 的 jvm 内存空间解决该问题。