重新启动 HDInsight 群集的 VM

Azure HDInsight 群集包含作为群集节点的虚拟机 (VM) 组。 对于长时间运行的群集,这些节点可能因为各种原因而无法响应。 本文介绍如何在 HDInsight 群集中重新启动无响应的 VM。

何时重新启动

警告

重新启动群集中的 VM 时,该节点不可用,且节点上的服务必须重启。

节点重新启动时,群集可能会运行不正常,作业运行速度也可能会减慢或作业会失败。 如果正在尝试重新启动活动的头节点,则所有正在运行的作业都将停止。 在服务启动并再次运行之前,将无法向群集提交作业。 出于这些原因,仅应在必要时重新启动 VM。 在以下情况时,请考虑重新启动 VM:

  • 你无法使用 SSH 连接到该节点,但它会响应 ping。
  • 工作器节点在 Ambari UI 中未检测信号的情况下关闭。
  • 节点上的临时磁盘已满。
  • VM 上的进程表中有很多条目的进程已完成,但状态显示为“终止状态”。

注意

如果必须在 HBase 或 Kafka 群集中重新启动工作器节点或 zookeeper 节点,请谨慎对待,因为它可能会导致一段时间的稳定性问题,具体取决于群集大小调整和工作负荷压力。 重新启动工作器节点可能会导致不必要的区域/主题分区移动。  即使 ZooKeeper 节点重启也可能导致 ZooKeper 群集不稳定,因此可能会导致区域服务器/Kafka 代理关闭。 
理想情况下,只要有可能,请在重新启动前停止 HBase/Kafka 服务,以最大程度减少对群集中写入的新数据的影响。

使用 PowerShell 重新启动 VM

使用“节点重新启动”操作需执行两个步骤:列出节点和重新启动节点。

  1. 列出节点。 可以在 Get-AzHDInsightHost 中获取群集节点列表。

    Get-AzHDInsightHost -ClusterName myclustername
    
  2. 重新启动主机。 获取想要重新启动的节点名称后,请使用 Restart-AzHDInsightHost 重启节点。

    Restart-AzHDInsightHost -ClusterName myclustername -Name wn0-myclus, wn1-myclus
    

注意

不支持使用 PowerShell 重新启动 HBase 和 Kafka 群集类型的节点。

使用 REST API 重新启动 VM

可以使用 API 文档中的“试一试”功能将请求发送到 HDInsight 。 使用“节点重新启动”操作需执行两个步骤:列出节点和重新启动节点。

  1. 列出节点。 可以在 REST API 或 Ambari 中获取群集节点列表。 有关详细信息,请参阅 HDInsight 列表主机 REST API 操作

    POST https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/listHosts?api-version=2018-06-01-preview
    
  2. 重新启动主机。 获取想要重新启动的节点名称后,请使用 REST API 重新启动节点来重启节点。 节点名称遵循的模式为 NodeType(wn/hn/zk/gw/id) + x + 群集名称的前六个字符。 有关详细信息,请参阅 HDInsight 重启主机 REST API 操作

    POST https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HDInsight/clusters/{clusterName}/restartHosts?api-version=2018-06-01-preview
    

要重新启动的节点的实际名称在请求正文的 JSON 数组中指定。

[
  "wn0-abcdef",
  "zk1-abcdef"
]

注意

不支持使用 REST API 为 HBase 和 Kafka 群集类型重新启动节点。

后续步骤