本文汇总了使用Zookeeper时的常见问题。
ZooKeeper服务不稳定,发生异常重启等情况,怎么办?
造成服务不稳定的情况可能有很多,最常见的情况是znode数量过大或者snapshot过大,由于ZooKeeper将所有的znode维护在内存中,并且需要在节点间进行数据同步,因此过大的znode数量或者容量会对服务稳定性造成影响。ZooKeeper的定位是一个分布式协调服务,不能把ZooKeeper当作一个文件系统来使用,通常,znode数量应尽量保持在10万以下,snapshot大小应在800
MB以下。
- 您可以在E-MapReduce控制台的集群监控页签,查看Zookeeper的znode数量监控。
- 查看snapshot大小。
- 您可以先在ZooKeeper服务的配置页签,搜索并查看dataDir的参数值,获取Zookeeper的数据目录。
- 执行以下命令,在ZooKeeper数据目录下查看snapshot的大小。
ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*
如果出现znode数量或snapshot过大的情况,需要排查znode分布情况,避免相关上层应用对ZooKeeper的过度使用。
如何平滑迁移ZooKeeper的数据目录?
如果因为磁盘空间或者磁盘性能等问题,希望更改ZooKeeper的数据目录,您可以按照以下步骤逐个节点修改并迁移数据目录,实现不停止ZooKeeper服务的平滑迁移。
说明 例如,将数据目录从/mnt/disk1/zookeeper/data更改为/mnt/disk2/zookeeper/data。集群的master-1-2 节点为leader,master-1-1和master-1-3节点为follower,迁移时建议先操作follower再操作leader。
- 修改数据目录并保存配置。
- 在ZooKeeper服务的配置页签,搜索dataDir参数,修改参数值为新目录/mnt/disk2/zookeeper/data。
- 单击保存。
- 在弹出对话框中,输入执行原因,单击保存。
- 部署配置。
- 在ZooKeeper服务的配置页签,单击部署客户配置。
- 在弹出的对话框中,输入执行原因,单击确定。
- 在确认对话框中,单击确定。
- 可选:验证数据目录。
- 使用SSH方式登录集群,详情请参见登录集群。
- 执行以下命令,查看zoo.cfg配置文件的dataDir参数值。
cat /etc/emr/zookeeper-conf/zoo.cfg
显示数据目录已更新为新目录。
- 停止master-1-1节点。
- 在ZooKeeper服务的部署拓扑页签,单击master-1-1节点操作列的停止。
- 在执行集群操作对话框中,输入执行原因,单击确定。
- 在确认对话框中,单击确定。
- 目录迁移。
- 使用SSH方式登录集群,详情请参见登录集群。
- 执行以下命令,在master-1-1节点进行目录迁移及相关权限设置。
sudo rm -rf /mnt/disk2/zookeeper && sudo cp -rf /mnt/disk1/zookeeper /mnt/disk2/zookeeper && sudo chown hadoop:hadoop -R /mnt/disk2/zookeeper
- 启动master-1-1节点。
- 在ZooKeeper服务的状态页签,单击ZookeeperServer操作列的启动。
- 在弹出的对话框中,输入执行原因,单击确定。
- 在确认对话框中,单击确定。
刷新页面,直至master-1-1节点的健康状态显示为良好。
- 登录master-1-3节点,重复执行步骤4~步骤6。
- 登录master-1-2 节点,重复执行步骤4~步骤6。
待所有节点恢复正常时,节点迁移完成。说明 master-1-2 节点原本为leader,执行停止操作后会变为follower,leader会切换到另两个节点的任一节点上。