
# 更改NodeManager的存储目录
#### 操作场景
Yarn NodeManager定义的存储目录不正确或Yarn的存储规划变化时，MRS集群管理员需要在Manager中修改NodeManager的存储目录，以保证Yarn正常工作。NodeManager的存储目录包含本地存放目录"yarn.nodemanager.local-dirs"和日志目录"yarn.nodemanager.log-dirs"。适用于以下场景：
- 更改NodeManager角色的存储目录，所有NodeManager实例的存储目录将同步修改。
- 更改NodeManager单个实例的存储目录，只对单个实例生效，其他节点NodeManager实例存储目录不变。
 
#### 对系统的影响
- 更改NodeManager角色的存储目录需要停止并重新启动集群，集群未启动前无法提供服务。
- 更改NodeManager单个实例的存储目录需要停止并重新启动实例，该节点NodeManager实例未启动前无法提供服务。
- 服务参数配置如果使用旧的存储目录，需要更新为新目录。
- 更改NodeManager的存储目录以后，需要重新下载并安装客户端。
 
#### 前提条件
- 在各个数据节点准备并安装好新磁盘，并格式化磁盘。
- 规划好新的目录路径，用于保存旧目录中的数据。
- 准备好MRS集群管理员用户**admin**。
 
#### 操作步骤
MRS 3.x之前的版本集群执行以下操作：
1. 检查环境。 
   1. 登录MRS控制台，在左侧导航栏选择"现有集群"，单击集群名称。选择"组件管理"，查看Yarn的"健康状态"是否为"良好"。
      - 是，执行[1.c]。
      
      - 否，Yarn状态不健康，执行[1.b]。
       
   
   2. 请先修复Yarn异常，任务结束。
   
   3. 确定修改NodeManager的存储目录场景。
      - 更改NodeManager角色的存储目录，执行[2]。
      
      - 更改NodeManager单个实例的存储目录，执行[3]。
       
   
   
   
   
2. 更改NodeManager角色的存储目录。
   
   1. 选择"现有集群"，单击集群名称。选择"组件管理 \> Yarn \> 停止"，停止Yarn服务。
   
   2. 登录弹性云服务器，以**root** 用户登录到安装Yarn服务的各个节点中，执行如下操作。
      1. 创建目标目录。 例如目标目录为"${BIGDATA_DATA_HOME}/data2"：
         执行**mkdir ${BIGDATA_DATA_HOME}/data2**
         
      
      2. 挂载目标目录到新磁盘。 例如挂载"${BIGDATA_DATA_HOME}/data2"到新磁盘。
         
      
      3. 修改新目录的权限。 例如新目录路径为"${BIGDATA_DATA_HOME}/data2"：
         执行**chmod 750 ${BIGDATA_DATA_HOME}/data2 -R** 和**chown omm:wheel ${BIGDATA_DATA_HOME}/data2 -R**
         
       
   
   3. 在MRS控制台界面，选择"现有集群"，单击集群名称。选择"组件管理 \> Yarn \> 实例"，选择对应主机的NodeManager实例，单击"实例配置"，"选择""全部配置"。 将配置项"yarn.nodemanager.local-dirs"或"yarn.nodemanager.log-dirs"修改为新的目标目录。
      例如：如果修改"yarn.nodemanager.local-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/localdir"。如果修改"yarn.nodemanager.log-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/containerlogs"。
      
   
   4. 单击"保存配置"，勾选"重新启动受影响的服务或实例"，单击"确定"。重启Yarn服务。 界面提示"操作成功"，单击"完成"，Yarn成功启动，任务结束。
      
   
   
   
   
3. 更改NodeManager单个实例的存储目录。
   
   1. 选择"现有集群"，单击集群名称。选择"组件管理 \> Yarn \> 实例"，勾选需要修改存储目录的NodeManager单个实例，选择"更多 \> 停止实例"。
   
   2. 登录弹性云服务器，以**root** 用户登录到这个NodeManager节点，执行如下操作。
      1. 创建目标目录。 例如目标目录为"${BIGDATA_DATA_HOME}/data2"：
         执行**mkdir ${BIGDATA_DATA_HOME}/data2**。
         
      
      2. 挂载目标目录到新磁盘。 例如挂载"${BIGDATA_DATA_HOME}/data2"到新磁盘。
         
      
      3. 修改新目录的权限。 例如新目录路径为"${BIGDATA_DATA_HOME}/data2"：
         执行**chmod 750 ${BIGDATA_DATA_HOME}/data2 -R** 和**chown omm:wheel ${BIGDATA_DATA_HOME}/data2 -R**。
         
       
   
   3. 在MRS控制台，单击指定的NodeManager实例并切换到"实例配置"。 将配置项"yarn.nodemanager.local-dirs"或"yarn.nodemanager.log-dirs"修改为新的目标目录。
      例如：如果修改"yarn.nodemanager.local-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/localdir"。如果修改"yarn.nodemanager.log-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/containerlogs"。
      
   
   4. 单击"保存配置"，勾选"重新启动受影响的服务或实例"。单击"确定"。重启NodeManager实例。 界面提示"操作成功"，单击"完成"，NodeManager实例启动成功。
      
   
   
   
   
MRS 3.x及后续版本集群也可执行以下操作：
1. 检查环境。 
   1. 登录Manager，选择"集群 \> *待操作集群的名称* \> 服务"查看Yarn的状态"运行状态"是否为"良好"。
      - 是，执行[1.c]。
      
      - 否，Yarn状态不健康，执行[1.b]。
       
   
   2. 修复Yarn异常，任务结束。
   
   3. 确定修改NodeManager的存储目录场景。
      - 更改NodeManager角色的存储目录，执行[2]。
      
      - 更改NodeManager单个实例的存储目录，执行[3]。
       
   
   
   
   
2. 更改NodeManager角色的存储目录。
   
   1. 选择"集群 \> *待操作集群的名称* \> 服务 \> Yarn \> 停止服务"，停止Yarn服务。
   
   2. 以**root** 用户登录到安装Yarn服务的各个节点中，执行如下操作。
      1. 创建目标目录。 例如目标目录为"${BIGDATA_DATA_HOME}/data2"：
         执行**mkdir ${BIGDATA_DATA_HOME}/data2**
         
      
      2. 挂载目标目录到新磁盘。 例如挂载"${BIGDATA_DATA_HOME}/data2"到新磁盘。
         
      
      3. 修改新目录的权限。 例如新目录路径为"${BIGDATA_DATA_HOME}/data2"：
         执行**chmod 750 ${BIGDATA_DATA_HOME}/data2 -R** 和**chown omm:wheel ${BIGDATA_DATA_HOME}/data2 -R**
         
       
   
   3. 在Manager管理界面，选择"集群 \> *待操作集群的名称* \> 服务 \> Yarn \> 实例"，选择对应主机的NodeManager实例，单击"实例配置"，选择"全部配置"。
      将配置项"yarn.nodemanager.local-dirs"或"yarn.nodemanager.log-dirs"修改为新的目标目录。
      例如：如果修改"yarn.nodemanager.local-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/localdir"。如果修改"yarn.nodemanager.log-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/containerlogs"。
      
   
   4. 单击"保存"，单击"确定"。重启Yarn服务。 界面提示"操作成功"，单击"完成"，Yarn成功启动，任务结束。
      
   
   
   
   
3. 更改NodeManager单个实例的存储目录。
   
   1. 选择"集群 \> *待操作集群的名称* \> 服务 \> Yarn \> 实例"，勾选需要修改存储目录的NodeManager单个实例，选择"更多 \> 停止实例"。
   
   2. 以**root** 用户登录到这个NodeManager节点，执行如下操作。
      1. 创建目标目录。 例如目标目录为"${BIGDATA_DATA_HOME}/data2"：
         执行**mkdir ${BIGDATA_DATA_HOME}/data2**。
         
      
      2. 挂载目标目录到新磁盘。 例如挂载"${BIGDATA_DATA_HOME}/data2"到新磁盘。
         
      
      3. 修改新目录的权限。 例如新目录路径为"${BIGDATA_DATA_HOME}/data2"：
         执行**chmod 750 ${BIGDATA_DATA_HOME}/data2 -R** 和**chown omm:wheel ${BIGDATA_DATA_HOME}/data2 -R**。
         
       
   
   3. 在Manager管理界面，单击指定的NodeManager实例并切换到"实例配置"。 将配置项"yarn.nodemanager.local-dirs"或"yarn.nodemanager.log-dirs"修改为新的目标目录。
      例如：如果修改"yarn.nodemanager.local-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/localdir"。如果修改"yarn.nodemanager.log-dirs"参数，则将其值修改为"/srv/BigData/data2/nm/containerlogs"。
      
   
   4. 单击"保存"，单击"确定"。重启NodeManager实例。 界面提示"操作成功"，单击"完成"，NodeManager实例启动成功。
      
   
   
   
   
 
