你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure HDInsight 中的可靠性

本文介绍 Azure HDInsight 中的可靠性支持,还介绍了可用性区域以及跨区域恢复和业务连续性。 有关 Azure 中可靠性的更详细概述,请参阅 Azure 可靠性

可用性区域支持

可用性区域是每个 Azure 区域内在物理上独立的数据中心组。 当一个区域发生故障时,服务可以故障转移到其余区域中的一个。

有关 Azure 中可用性区域的详细信息,请参阅什么是可用性区域?

Azure HDInsight 支持区域部署配置。 Azure HDInsight 群集节点放置于你在所选地区中选择的单个区域中。 区域 HDInsight 群集不受其他区域中发生的任何中断的影响。 但是,如果中断会影响为 HDInsight 群集选择的特定区域,则群集将不可用。 此部署模型在群集中提供经济实惠、低延迟的网络连接。 将此部署模型复制到多个可用性区域可以提供更高级别的可用性,防止出现硬件故障。

重要

对于用户未指定具体区域的部署,节点类型不具有区域复原能力,在该地区的任何区域的中断期间可能会发生停机。

先决条件

  • 只有 2023 年 6 月 15 日之后创建的群集才支持可用性区域功能。 创建群集后,无法更新可用性区域设置。 也不能更新现有非可用性区域群集来使用可用性区域。

  • 必须在自定义 VNet 下创建群集。

  • 需要自带用于 Ambari DB 和外部元存储(如 Hive 元存储)的 SQL DB,以便在同一可用性区域中配置这些数据库。

  • 必须使用以下地区中的可用性区域选项创建 HDInsight 群集:

    • 澳大利亚东部
    • 巴西南部
    • 加拿大中部
    • 美国中部
    • 美国东部
    • 美国东部 2
    • 法国中部
    • 德国中西部
    • 日本东部
    • 韩国中部
    • 北欧
    • 卡塔尔中部
    • 东南亚
    • 美国中南部
    • 英国南部
    • US Gov 弗吉尼亚州
    • 西欧
    • 美国西部 2

使用可用性区域创建 HDInsight 群集

可以使用 Azure 资源管理器 (ARM) 模板将 HDInsight 群集部署到指定的可用性区域。

在资源部分,需要添加一个“区域”部分,并提供要将此群集部署到的可用性区域。

   "resources": [
        {
            "type": "Microsoft.HDInsight/clusters",
            "apiVersion": "2021-06-01",
            "name": "[parameters('cluster name')]",
            "location": "East US 2",
            "zones": [
                "1"
            ],
        }
   ]

跨区域验证一个可用性区域中的节点

HDInsight 群集准备就绪后,可以检查位置,以查看它们所部署到的可用性区域。

显示群集概述中可用性区域信息的屏幕截图。

获取 API 响应

 [
        {
            "location": "East US 2",
            "zones": [
                "1"
            ],
        }
 ]

纵向扩展群集

可以纵向扩展具有很多工作器节点的 HDInsight 群集。 新添加的工作器节点将放置在此群集的同一可用性区域中。

可用性区域迁移

Azure HDInsight 群集目前不支持将现有群集实例就地迁移到可用性区域支持。 但是,可以选择重新创建群集,并在创建该群集期间选择其他可用性区域或地区。 可以将不同地区的辅助备用群集和不同的可用性区域用于灾难恢复方案。

区域故障体验

当可用性区域出现故障时:

  • 无法通过 SSH 访问此群集。
  • 无法删除、纵向扩展或缩减此群集。
  • 无法提交作业或查看作业历史记录。
  • 仍然可以在不同的区域提交新的群集创建请求。

跨区域灾难恢复和业务连续性

灾难恢复 (DR) 是指从会导致故障时间和数据丢失的高影响事件(例如自然灾害或部署失败)中恢复。 不管灾难的原因是什么,最好的补救措施就是一个定义全面且经过测试的 DR 计划,以及一个主动支持 DR 的应用程序设计。 在开始考虑创建灾难恢复计划之前,请参阅设计灾难恢复策略的建议

在 DR 方面,Microsoft 使用责任共担模型。 在共担责任模型中,Microsoft 会确保基线基础结构和平台服务可用。 同时,许多 Azure 服务不会自动复制数据,也不会从失败区域回退以交叉复制到另一个启用的区域。 对于这些服务,你负责设置适用于工作负载的灾难恢复计划。 大多数在 Azure 平台即服务 (PaaS) 产品/服务上运行的服务都提供支持 DR 的功能和指导,你可以使用特定于服务的功能来支持快速恢复,从而帮助制定 DR 计划。

Azure HDInsight 群集依赖于许多 Azure 服务,例如存储、数据库、Active Directory、Active Directory 域服务、网络和 Key Vault。 设计分析应用程序时,若要确保其设计良好、高度可用且可容错,则应让其有足够的冗余,以应对其中一项或多项服务出现区域中断或本地中断的情况。 本部分概述了业务连续性规划的最佳做法、单一区域与多区域可用性和优化选项。

多区域地理位置中的灾难恢复

如果使用跨区域高可用性灾难恢复来提高业务连续性,则所需的体系结构设计复杂性更高且成本更高。 下表详细说明了一些可能会增加总拥有成本的技术领域。

成本优化

区域 成本增加的原因 优化策略
数据存储 在辅助区域中复制主数据/表 仅复制特选数据
数据流出 出站跨区域数据传输需要支出一定的成本。 查看带宽定价准则 请仅复制特选数据以减少区域数据流出量
群集计算 辅助区域中的其他 HDInsight 群集 在主计算失败后使用自动化脚本部署辅助计算。 使用自动缩放将辅助群集大小保持在最小值。 使用更便宜的 VM SKU。 在 VM SKU 可能会打折的区域中创建辅助群集。
身份验证 次要区域中的多用户方案会产生额外的 Microsoft Entra 域服务设置 请避免在辅助区域中使用多用户设置。

复杂性优化

区域 复杂性增加的原因 优化策略
读取写入模式 需要同时为主区域和辅助区域启用读取和写入 将辅助区域设计为只读区域
零 RPO 和 RTO 要求零数据丢失 (RPO=0) 和零停机时间 (RTO=0) 以减少需要故障转移的组件数量的方式设计 RPO 和 RTO。 有关 RTO 和 RPO 的详细信息,请参阅恢复目标
业务功能 要求辅助区域具备主区域的完整业务功能 评估是否可以在辅助区域中使用业务功能的最低限度的关键子集来运行。
连接 要求主区域中的所有上游和下游系统也连接到辅助区域 将辅助连接限制为最低限度的关键子集。

创建多区域灾难恢复计划时,请考虑以下建议:

  • 确定发生灾难时所需的最低业务功能以及原因。 例如,评估你是需要数据转换层(显示为黄色)和数据服务层(显示为蓝色)的故障转移功能,还是只需要数据服务层的故障转移功能。

    数据转换层和数据服务层

  • 根据工作负荷、开发生命周期和部门对你的群集进行划分。 具有更多群集可降低发生影响多个不同业务流程的单个大故障的几率。

  • 使你的辅助区域成为只读的区域。 对同时启用了读取和写入功能的区域进行故障转移可能会导致复杂的体系结构。

  • 发生灾难时,暂时性群集更易于管理。 设计你的工作负荷时使群集可以循环利用,并且不在群集中维护任何状态。

  • 如果发生灾难,工作负荷通常会保持未完成状态,需要在新区域中重启。 将你的工作负荷设计为在本质上是幂等的。

  • 在群集部署过程中使用自动化,并确保尽可能将群集配置设置脚本化,以确保在发生灾难时快速进行完全自动化的部署。

服务中断检测、通知和管理

  • 使用 HDInsight 上的 Azure 监视工具检测群集中的异常行为并设置相应的警报通知。 你可以部署预配置的、特定于 HDInsight 群集的管理解决方案,这些解决方案收集特定群集类型的重要性能指标。 有关详细信息,请参阅 Azure HDInsight 监视

  • 订阅 Azure 运行状况警报,以获得有关订阅、服务或区域的服务问题、计划内维护、运行状况和安全建议的通知。 包含问题原因和解决方法 ETA 的运行状况通知可帮助你更好地执行故障转移和故障回复。 有关详细信息,请参阅 Azure 服务运行状况文档

单区域地理位置中的灾难恢复

基本 HDInsight 系统中的每个组件都有自己的单区域容错机制。 请注意,并非只有灾难性事件才会影响业务功能。 单个区域中一个或多个以下服务出现服务事件也可能会导致预期的业务功能丢失。

  • 计算(虚拟机):Azure HDInsight 群集。 HDInsight 提供 99.9% 的可用性 SLA。 为了在单个部署中提供高可用性,默认情况下,HDInsight 附带了许多处于高可用性模式的服务。 HDInsight 中的容错机制由 Microsoft 和 Apache OSS 生态系统高可用性服务提供。

    以下基础结构组件设计为具有高可用性:

    • 主动和备用头节点
    • 多个网关节点
    • 三个 Zookeeper 仲裁节点
    • 按容错域和更新域分布的工作器节点

    以下服务同样设计为具有高可用性:

    • Apache Ambari 服务器
    • YARN 的应用程序时间线服务器
    • 适用于 Hadoop MapReduce 的作业历史记录服务器
    • Apache Livy
    • HDFS
    • YARN 资源管理器
    • HBase Master

    有关详细信息,请参阅 Azure HDInsight 支持的高可用性服务

  • 元存储:Azure SQL 数据库。 HDInsight 使用 Azure SQL 数据库作为元存储,该元存储提供 99.99% 的 SLA。 数据的三个副本通过同步复制持久保存在数据中心内。 如果副本丢失,则可以无缝地提供备用副本。 现成支持活动异地复制,最多可使用四个数据中心。 如果通过手动方式或通过数据中心进行故障转移,则层次结构中的第一个副本将自动变为可读写的副本。 有关详细信息,请参阅 Azure SQL 数据库业务连续性

  • 存储:Azure Data Lake Gen2 或 Blob 存储。 HDInsight 建议使用 Azure Data Lake Storage Gen2 作为基础存储层。 Azure 存储(包括 Azure Data Lake Storage Gen2)提供 99.9% 的 SLA。 HDInsight 使用 LRS 服务,其中有三个数据副本持久保存在一个数据中心内,复制是同步的。 发生副本丢失时,可以无缝地提供副本。

  • 身份验证:Microsoft Entra ID、Microsoft Entra 域服务、企业安全性套餐

  • Azure 密钥保管库和 Azure 数据工厂等可选服务。

HDInsight 组件