更新时间:2022-12-14 GMT+08:00

更改ZooKeeper的存储目录

操作场景

ZooKeeper定义的存储目录不正确或ZooKeeper的存储规划变化时,MRS集群管理员需要在FusionInsight Manager中修改ZooKeeper的存储目录,以保证ZooKeeper正常工作。ZooKeeper的存储目录包含本地数据存放目录“dataDir”。适用于以下场景:

  • 更改ZooKeeper角色的存储目录,所有ZooKeeper实例的存储目录将同步修改。
  • 更改ZooKeeper单个实例的存储目录,只对单个实例生效,其他节点ZooKeeper实例存储目录不变。

对系统的影响

  • 更改ZooKeeper角色的存储目录需要停止并重新启动ZooKeeper及相关的服务,集群未启动前无法提供服务。
  • 更改ZooKeeper单个实例的存储目录需要停止并重新启动实例,该节点ZooKeeper实例未启动前无法提供服务。

前提条件

  • 在各个数据节点准备并安装好新磁盘,并格式化磁盘。
  • 规划好新的目录路径,用于保存旧目录中的数据。
  • 准备好MRS集群管理员用户admin

操作步骤

检查环境

  1. 登录FusionInsight Manager,选择“集群 > 待操作集群的名称 > 服务”查看ZooKeeper的状态“运行状态”是否为“良好”。

    • 是,执行3
    • 否,ZooKeeper状态不健康,执行2

  2. 修复ZooKeeper异常。
  3. 确定修改ZooKeeper的存储目录场景。

    • 更改ZooKeeper角色的存储目录,执行4
    • 更改ZooKeeper单个实例的存储目录,执行9

更改ZooKeeper角色的存储目录

  1. 选择“集群 > 待操作集群的名称 > 服务 > ZooKeeper > 停止服务”,停止ZooKeeper服务。
  2. root用户登录到安装ZooKeeper服务的各个节点中,执行如下操作。

    1. 创建目标目录。

      例如目标目录为“${BIGDATA_DATA_HOME}/zookeeper2”:

      执行mkdir ${BIGDATA_DATA_HOME}/zookeeper2

    2. 格式化新磁盘,并挂载目标目录到新磁盘。例如挂载“${BIGDATA_DATA_HOME}/zookeeper2”到新磁盘。
    3. 修改新目录的权限。

      例如新目录路径为“${BIGDATA_DATA_HOME}/zookeeper2”:

      执行chmod 700 ${BIGDATA_DATA_HOME}/zookeeper2chown omm:wheel ${BIGDATA_DATA_HOME}/zookeeper2

    4. 将旧的数据复制到新目录

      例如:cp -pr ${BIGDATA_DATA_HOME}/zookeeper/version-2/ ${BIGDATA_DATA_HOME}/zookeeper2/

      cp -pr ${BIGDATA_DATA_HOME}/zookeeper/myid ${BIGDATA_DATA_HOME}/zookeeper2/

  3. 在FusionInsight Manager管理界面,选择“集群 > 待操作集群的名称 > 服务 > ZooKeeper > 配置”,打开ZooKeeper服务配置页面。

    将ZooKeeper和quorumpeer的dataDir配置项“dataDir”修改为新的目标目录,例如“${BIGDATA_DATA_HOME}/zookeeper2”。

  4. 单击“保存”,单击“确定”。重启ZooKeeper服务。

    界面提示“操作成功”,单击“完成”,ZooKeeper成功启动。

  5. 重命名旧的存储目录“${BIGDATA_DATA_HOME}/zookeeper”,若该目录是独立磁盘挂载的根目录,请先移除磁盘再进行重命名操作,任务结束。

更改ZooKeeper单个实例的存储目录

  1. 选择“集群 > 待操作集群的名称 > 服务 > ZooKeeper > 实例”,勾选需要修改存储目录的ZooKeeper单个实例,选择“更多 > 停止实例”。
  2. root用户登录到这个ZooKeeper节点,执行如下操作。

    1. 创建目标目录。

      例如目标目录为“${BIGDATA_DATA_HOME}/zookeeper2”:

      执行mkdir ${BIGDATA_DATA_HOME}/zookeeper2

    2. 挂载目标目录到新磁盘。例如挂载“${BIGDATA_DATA_HOME}/yarn/data2”到新磁盘。
    3. 修改新目录的权限。

      例如新目录路径为“${BIGDATA_DATA_HOME}/yarn/data2”:

      执行chmod 700 ${BIGDATA_DATA_HOME}/zookeeper2 chown omm:wheel ${BIGDATA_DATA_HOME}/ zookeeper2

    4. 将旧的数据复制到新目录

      例如:cp -pr ${BIGDATA_DATA_HOME}/zookeeper/version-2/ ${BIGDATA_DATA_HOME}/zookeeper2/

      cp -pr ${BIGDATA_DATA_HOME}/zookeeper/myid ${BIGDATA_DATA_HOME}/zookeeper2/

  3. 在FusionInsight Manager管理界面,单击指定的ZooKeeper实例并切换到“实例配置”。

    将ZooKeeper和quorumpeer的dataDir配置项“dataDir”修改为新的目标目录,例如“${BIGDATA_DATA_HOME}/zookeeper2”。

  4. 单击“保存”,单击“确定”。重启ZooKeeper实例。

    界面提示“操作成功”,单击“完成”,ZooKeeper实例启动成功。

  5. 重命名旧的存储目录“${BIGDATA_DATA_HOME}/zookeeper”,若该目录是独立磁盘挂载的根目录,请先移除磁盘再进行重命名操作,任务结束。