退服和入服MRS角色实例
MRS集群支持将数据存储在不同Core节点,某个Core或Task节点出现问题时,可能导致整个集群状态显示为“异常”,用户可以在MRS指定角色实例退服,使退服的角色实例不再提供服务。
在排除故障后,可以将已退服的角色实例入服。
- HDFS的DataNode角色实例
- Yarn的NodeManager角色实例
- HBase的RegionServer角色实例
- ClickHouse的ClickHouseServer角色实例(MRS 3.1.2及之后版本支持)
- IoTDB的IoTDBServer角色实例
- Kafka的Broker角色实例(MRS 2.x及之前版本、MRS 3.5.0及之后版本支持)
退服和入服MRS角色实例约束和限制
- 已经退服的角色实例,必须执行入服操作启动该实例,才能重新使用。
- ClickHouseServer实例退服约束条件请参考缩容ClickHouseServer约束限制。
- DataNode入服退服:
- 默认情况下,当DataNode数量少于或等于HDFS的副本数时,不能执行退服操作。若HDFS副本数为3时,则系统中少于4个DataNode,将无法执行退服,Manager在执行退服操作时会等待30分钟后报错并退出执行。
- 针对MRS 3.3.0及之后版本集群,用户也可以在DataNode退服前,开启快速退服功能,此时当DataNode数量满足“dfs.namenode.decommission.force.replication.min”参数设置的值时,可以执行退服,系统将同时执行退服和添加HDFS副本数的操作。快速退服期间如果有写入数据操作,可能导致数据丢失,请谨慎操作。快速退服相关参数如下,可以在Manager界面的HDFS服务参数全部配置页面搜索查看:
dfs.namenode.decommission.force.enabled:是否开启DataNode快速退服特性。设置为“true”表示开启。
dfs.namenode.decommission.force.replication.min:DataNode快速退服特性场景下,Block满足退服条件的最小可用副本数量。取值范围1~3。
- 由于MapReduce任务执行时,会生成一些副本数为10的文件,此时若DataNode实例数少于10时,将无法进行退服操作。
- 如果退服前,DataNode节点的机架数(机架数由各DataNode节点所配置的“机架”的名称数量决定)大于1;而退服部分DataNode后,剩余的DataNode节点的机架数变为1,则此次退服将会失败。所以需要在退服前评估退服操作对机架数的影响,以调整退服的DataNode节点。
- 在退服多个DataNode时,如果每个DataNode存储的数据量较大,如果执行选择多个DataNode同时退服,则很有可能会因超时而退服失败。为了避免这种情况,建议每次退服仅退服1个DataNode,进行多次退服操作。
- 当IoTDBServer数量少于等于集群配置的Region副本数(默认值为“3”)时,不能执行退服操作。
- Broker入服退服:(MRS 3.5.0及之后版本支持)
- 在退服Broker时,如果退服后剩余Broker的个数小于Kafka服务内置Topic副本个数(默认3)时,将无法执行退服,此场景下如果强制删除实例,将会导致服务功能不可用。
- 在退服多个Broker时,如果每个Broker维护的Topic分区数据量较大,如果执行选择多个Broker同时退服,则有可能会因超时而退服失败。为了避免这种情况,建议每次仅退服一个Broker,进行多次退服操作。
- 在退服Broker时,可以在KafkaUI界面查看分区迁移进度,如果观察到迁移进度过慢,可以在业务低峰期间,动态调整分区迁移流量,如果退服过程影响业务流量,可以调小分区迁移流量,设置取消正在执行的分区迁移任务。
- 在退服入服Broker的过程中,建议不要删除Topic,否则可能会导致迁移任务的元数据残留。
- 在新增Broker实例或者入服Broker后,最晚10分钟后(可以通过在Manager界面调整Kafka组件的“auto.reassign.check.interval.ms”参数来控制触发均衡的时间)触发分区均衡操作。
退服和入服MRS角色实例前提条件
- 如果通过MRS管理控制台操作,需要已完成IAM用户同步(在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步)。
- 如果通过Manager界面操作,需要已登录MRS集群Manager界面,详情请参考访问MRS集群Manager。
- 如果当前退服DataNode节点,退服前需要进行健康检查,步骤如下。
- 使用客户端用户登录客户端安装节点,并切换到客户端安装目录。
- 如果是安全集群,需要使用hdfs用户进行权限认证。
source bigdata_env #配置客户端环境变量 kinit hdfs #设置kinit认证 Password for hdfs@HADOOP.COM: #输入hdfs用户登录密码
- 执行hdfs fsck / -list-corruptfileblocks,检查返回结果。
- 如果结果为“...has 0 CORRUPT files”表示健康检查成功。
- 如果结果不是“...has 0 CORRUPT files”,并返回损坏的文件名称,请执行以下操作删除损坏的文件。
通过管理控制台退服或入服实例
- 登录MRS管理控制台。
- 选择“现有集群”,选中一个运行中的集群并单击集群名称,进入集群信息页面。
- 在集群详情页,单击“组件管理”。
- 单击服务列表中相应服务。
- 单击“实例”页签。
- 勾选指定角色实例名称前的复选框。
- 选择“更多 > 退服”或“入服”执行相应的操作。
图1 退服实例
实例退服操作未完成时在其他浏览器窗口重启集群中相应服务,可能导致MRS提示停止退服,实例的“操作状态”显示为“已启动”。实际上后台已将该实例退服,请重新执行退服操作同步状态。
通过Manager退服或入服实例
- 登录Manager页面,进入待操作组件实例页签。
- MRS 3.x及之后版本:选择“集群 > 服务”,单击服务视图中指定的服务名称,并选择“实例”页签。
- MRS 2.x及之前版本:单击“服务管理”,单击服务列表中指定的服务名称,并选择“实例”页签。
- 勾选指定的待退服角色实例。
- 在“更多”选择“退服”或“入服”。
输入当前登录的用户密码确认身份,单击“确定”。
勾选操作影响,单击“确定”,执行相应的操作。实例退服操作未完成时在其他浏览器窗口重启集群中相应服务,可能导致MRS提示停止退服,实例的“操作状态”显示为“已启动”。实际上后台已将该实例退服,请重新执行退服操作同步状态。