更新时间:2025-08-09 GMT+08:00

重启MRS集群

MRS集群运行过程中,在修改了组件的配置项、基础资源故障或者服务进程异常等运维场景中,需要对集群内组件进行重启操作。

MRS集群内组件支持普通重启与滚动重启两种方式:

  • 普通重启:直接并发重启集群内所有服务或实例,可能引起业务中断。
  • 滚动重启:在尽可能不中断业务的前提下对相关对象进行的重启操作。与普通重启相比,滚动重启通常不会导致服务业务中断,但是将比普通重启要花费更长的时间,且对应服务的吞吐量、性能等可能会受到影响。为了确保服务重启过程中,尽量减少或者不影响业务运行,可以通过滚动重启来按批次重启服务或实例(对于有主备状态的实例,会先重启备实例,再重启主实例)。

    各组件滚动重启时的业务影响说明如表2所示。

重启集群会导致集群内组件停止对外服务,从而影响上层应用或作业的正常运行,建议在低业务负载时间段进行滚动重启操作。

约束与限制

  • MRS集群中部分组件不支持滚动重启,在执行滚动重启集群的过程中,不支持滚动重启的组件仍将以普通重启方式进行重启,可参考组件重启参考信息
  • 如果修改了端口类等需要尽快生效的配置(例如服务端的端口),则不建议通过滚动重启的方式使之生效,建议采用普通重启。

对系统的影响

集群滚动重启过程中,各组件滚动重启时的影响说明如表2所示。

重启MRS集群

用户可通过MRS管理控制台直接重启MRS集群,也可登录集群Manager界面后对集群进行重启操作。

  1. 登录MRS管理控制台
  2. 选择现有集群,单击集群名称进入集群详情页面。
  3. 在页面右上角选择“管理操作 > 滚动重启集群”。

    图1 滚动重启集群

  4. 弹出“滚动重启集群”页面,勾选“仅重启配置过期的实例”,单击确定,开始滚动重启集群。
  5. 滚动重启任务完成后,单击“完成”
  1. 登录MRS集群Manager界面。

    登录集群Manager界面请参考访问MRS集群Manager

  2. 选择集群 > 概览 > 更多 > 重启

    • MRS 3.3.0及之后版本的Manager界面中,“集群 > 概览”页面已移除,可直接在“主页”界面的“更多”菜单中执行集群相关维护管理功能。
    • 可根据需要选择“重启”或“滚动重启”,滚动重启可以最大程度地降低对业务的影响,但比普通的重启花费的时间更长。

  3. 输入当前登录的用户密码确认身份,单击“确定”
  4. 如果选择滚动重启,根据实际情况调整相关参数。

    图2 滚动重启
    表1 滚动重启参数

    参数名称

    示例

    描述

    “只重启集群内配置过期的实例”

    -

    是否只重启集群内修改过配置的实例。

    “启用机架策略”

    -

    是否启用机架并发滚动重启策略,只对满足机架策略滚动重启的角色(角色支持机架感知功能,且角色下的实例归属于2个或2个以上的机架)生效。

    该参数仅在滚动重启HDFS、Yarn时可设置。

    “数据节点滚动重启并发数”

    1

    采用分批并发滚动重启策略的数据节点实例每一个批次重启的实例数,默认为1。

    • 该参数仅对同时满足“采用并发滚动策略”和“实例为数据节点”两个条件时才有效。
    • 当启用机架策略时,该参数将失效,集群以机架策略默认配置的最大实例数(默认值为20)作为一个机架内分批并发重启的最大实例数。
    • 该参数仅在滚动重启HDFS、HBase、Yarn、Kafka、Storm、Flume时可设置。
    • HBase的RegionServer滚动重启的并发数不支持手动配置,会根据RegionServer的节点数自行调整,调整规则为:30节点以内,每个批次1个节点;300节点以内,每个批次2个节点;300节点以上(含300节点),每个批次1%(向下取整)个节点。

    “批次时间间隔”

    0

    滚动重启实例批次之间的间隔时间,默认为0。

    “退服超时时间”

    1800

    角色实例在滚动重启过程中的退服等待时间,默认为1800s。

    部分角色(例如HiveServer、JDBCServer)在滚动重启前会暂时停止提供服务,该状态下的实例不可再接入新的客户端连接,而已经存在的连接需要等待一段时间才能完成,配置合适的超时时间参数能尽可能地保证业务不中断。

    该参数仅在滚动重启Hive、Spark/Spark2x时可设置。

    “批次容错阈值”

    0

    滚动重启实例批次执行失败容错次数,默认为0,即表示任意一个批次的实例重启失败后,滚动重启任务终止。

    “数据节点滚动重启并发数”“批次时间间隔”“批次容错阈值”等高级参数需要根据实际情况合理设置,否则可能导致服务业务中断或者严重影响性能,请谨慎调整。

    例如:

    • “数据节点滚动重启并发数”过大,同时重启多个实例导致服务业务中断或者由于剩余工作实例较少严重影响性能。
    • “批次容错阈值”过大,某一批次实例失败后继续重启下一批次实例,导致服务业务中断。

  5. 单击“确定”,等待重启完成。

参考信息

滚动重启组件实例期间对系统影响如表2所示:

表2 滚动重启组件实例期间对系统影响说明

组件名称

业务中断说明

系统受影响的说明

ClickHouse

滚动重启过程中,已经提交的业务如果在超时时间内(默认30分钟)可以执行完成,则无影响。

正在执行滚动重启的节点将会拒绝所有新请求(影响单副本业务和on cluster操作,以及直连当前重启实例的业务),正在执行的请求若在超时时间(默认30分钟)内没有执行完会失败。

DBService

滚动重启过程中,业务均正常。

滚动重启过程中可能会出现DBService主备节点心跳中断告警。

Doris

需要满足以下条件,滚动重启过程中Doris业务才会不中断:

  • 业务需要使用ELB或DBalancer连接Doris提交相关任务。
  • 业务读写的表必须是多副本(推荐3副本)。
  • 已经提交的业务如果在超时时间(默认30分钟)内执行完成,则无影响,否则会失败。

滚动重启中,总的资源量会下降影响任务最大内存/cpu使用量,极端情况任务会出现资源不足失败,对于运行时间超时(滚动默认30分钟)失败的任务,建议进行重试。

Flink

滚动重启过程中,业务均正常。

滚动重启过程中,FlinkServer UI将无法访问。

Flume

满足如下条件才能做到业务不中断、数据不丢失:

  • 需要采用持久化缓存的方式,如使用File Channel。
  • 需要配置Flume级联。
  • Flume需要客户端Sink支持故障迁移或负载均衡模式。
  • 非持久化缓存的Channel会造成数据丢失。
  • 故障迁移过程会造成短暂性能下降。

Guardian

滚动重启过程中,业务均正常。

HBase

滚动重启过程中,HBase的读写业务正常。

  • RegionServer滚动重启期间实时读写业务性能可能下降。
  • HMaster滚动重启过程中,除实时读写(不包括BulkLoad)以外的业务都会受影响。

    创建表(create)

    创建namespace(create_namespace)

    禁用表(disable、disable_all)

    重建表(truncate、truncate_preserve)

    移动region(move)

    下线region(unassign)

    合并region(merge_region)

    分裂region(split)

    开启balance(balance_switch)

    容灾操作(add_peer、remove_peer、enable_table_replication、disable_peer、show_peer_tableCFs、set_peer_tableCFs、enable_peer、disable_table_replication、set_clusterState_active、set_clusterState_standby)

    集群状态查询(status)

HDFS

  • 由于NameNode节点会主备倒换,导致系统在短暂时间内出现无主现象(主备倒换过渡期),可能会出现HDFS服务不可用告警信息,运行的读写任务会报错,但是不会中断业务。
  • 滚动重启DataNode可能导致部分正在读写的数据报错,客户端进行重试读写速率受到一定影响。
  • 滚动重启ZKFC过程中会导致NameNode主备倒换。
  • 滚动重启HDFS时如果启用机架策略,则可能会影响业务正常读写。

当为第三方客户端时,滚动重启过程中无法保证第三方客户端可靠性。

HetuEngine

  • HSFabric的实例至少存在2个,且对接使用的HSFabric也至少存在2个,能够支持滚动重启过程中跨域业务不中断。
  • HSBroker、HSConsole和QAS滚动重启时,HetuEngine业务不中断。
  • 需要保证HetuEngine计算实例中Coordinator和Worker节点都至少为2个才能进行计算实例的滚动重启,计算实例滚动重启不中断业务。
  • HSFabric正在滚动重启的节点会拒绝所有新请求,正在执行的SQL请求若在超时时间(默认30分钟)内没有执行完会失败。
  • 滚动重启过程中,在HSConsole页面不能执行运维操作。
  • HetuEngine计算实例滚动重启时,性能会下降约20%,SQL执行消耗内存超过配置“query_max_total_memory”的80%时,SQL任务会失败。

Hive

滚动重启过程中,执行时间超过退服超时时间的业务可能失败。

  • 如果当前有执行时间超过滚动重启超时时间的任务,在重启过程中有可能出现任务失败,任务失败后重试即可。
  • 滚动重启的节点不再接收新的请求,其他实例节点处理的请求会变多,会占用更多的资源。

Kafka

滚动重启过程中,Kafka多副本的Topic读写业务正常,单副本Topic会中断业务。

  • 禁止进行增删改topic、partition信息操作。
  • 如果Producer中配置acks=1或者acks=0,滚动重启过程中,若副本的数据在30min内没有同步完成,则会强制重启下一个Broker。对于副本刚好在这两个Broker的双副本的Partition,服务端配置中unclean.leader.election.enable的配置值如果是true,那么可能存在数据丢失风险;如果配置值是false,可能导致该Partition一段时间内没有Leader,直到该Broker启动完成。

KrbServer

滚动重启过程中,业务正常。

滚动重启过程中,集群Kerberos认证耗时可能会增加。

LdapServer

滚动重启过程中,业务正常。

滚动重启过程中,集群Kerberos认证耗时可能会增加。

Mapreduce

  • 滚动重启期间可能无法查看任务日志。
  • 单JobHistoryServer实例场景下,停止JobHistoryServer会导致依赖它的其他上层组件全部显示故障。

Ranger

滚动重启过程中,业务均正常。

Ranger的RangerAdmin、RangerKMS、PolicySync实例均为双活配置,滚动重启过程中可轮流对外提供服务,UserSync仅支持一个实例配置,重启过程中无法同步用户。

用户同步周期为五分钟,而UserSync重启时间较短,因此对用户同步的影响较小。

Spark

除列出的几项限制外,其他业务均不受影响。

  • 在HBase进行滚动重启过程中,不能在Spark中创建或删除Spark on HBase表。
  • 在HBase执行滚动重启过程中,会进行HMaster的主备倒换,在HMaster主备倒换期间,Spark on HBase功能不可用。
  • 如果用户使用了Kafka高级API,则在滚动重启过程中,不能保证Spark读写Kafka不中断,以及数据不丢失。
  • ZooKeeper滚动重启过程中,启动spark-beeline会失败。
  • Yarn滚动重启过程中,Spark任务可能造成task级别、stage级别、application级别的重试。
  • Spark的JDBCServer滚动重启时,如果有长时间运行的任务,会将任务终止。

Yarn

  • 滚动升级过程中,由于ResourceManager节点会切主,运行任务会报错,但是不会中断业务。
  • NodeManager滚动重启过程中,提交到该节点的Container可能会重试到其他节点。

Yarn滚动重启过程中,在Yarn上运行的任务可能会因为重试次数过多导致业务异常。

ZooKeeper

滚动重启过程中,ZooKeeper的读写业务正常。

  • ZooKeeper滚动重启会影响ClickHouse业务,实例重启期间会导致ClickHouse表只读,每个quorumpeer实例影响约10秒。
  • ZooKeeper滚动重启会导致Loader HA中ZooKeeper断连,Loader会自行尝试重试3次,每次10秒,如果依旧无法连接ZooKeeper,主LoaderServer会降备,然后重新选主。