Azure HDInsight:群集创建错误

本文介绍在创建群集时可能遇到的错误的解决方法。

注意

本文所述的前三个错误是验证错误。 当 Azure HDInsight 产品使用 CsmDocument_2_0 类时,可能会发生这些错误。

错误代码:DeploymentDocument 'CsmDocument_2_0' 验证失败

错误:“无法通过 URI:<脚本操作 URL> 访问脚本操作位置”

错误消息 1

“远程服务器返回错误:(404)未找到。”

原因

HDInsight 服务无法访问作为“创建群集”请求的一部分提供的脚本操作 URL。 当该服务尝试访问该脚本操作时,会收到上述错误消息。

解决方法

  • 对于 HTTP 或 HTTPS URL,请尝试从 Incognito 浏览器窗口转到该 URL 进行验证。
  • 对于 WASB URL,请确保该脚本在请求中指定的存储帐户中存在。 另请确保此存储帐户的存储密钥正确。
  • 对于 ADLS URL,请确保该脚本在存储帐户中存在。

错误消息 2

“给定的脚本 URI <脚本 URI> 在 ADLS 中,但此群集没有 Data Lake Storage 主体”

原因

HDInsight 服务无法访问作为“创建群集”请求的一部分提供的脚本操作 URL。 当该服务尝试访问该脚本操作时,会收到上述错误消息。

解决方法

将相应的 Azure Data Lake Storage Gen 1 帐户添加到群集。 此外,将用于访问 Data Lake Storage Gen 1 帐户的服务主体添加到群集。


错误消息 3

“请求中提供的 VM 大小‘<客户指定的 VM 大小>’无效或不受角色‘<角色>’的支持。 有效值是:<VALID_VM_SIZE_FOR_ROLE>。”

原因

该角色不允许指定的虚拟机大小。 此错误的可能原因是 VM 大小值不符合预期,或者不适合该计算机角色。

解决方法

错误消息列出了 VM 大小的有效值。 请选择其中的一个值,然后重试“创建群集”请求。


错误代码:InvalidVirtualNetworkId

错误

“VirtualNetworkId 无效。 VirtualNetworkId‘<用户虚拟网络 ID>’*”

原因

在群集创建过程中指定的 VirtualNetworkId 值的格式不正确。

解决方法

确保 VirtualNetworkId 和子网值采用正确的格式。 若要获取 VirtualNetworkId 值:

  1. 转到 Azure 门户。
  2. 选择你的虚拟网络。
  3. 选择“属性”菜单项。 ResourceID 属性值即为 VirtualNetworkId 值。

下面是虚拟网络 ID 的示例:

“/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet”


错误代码:CustomizationFailedErrorCode

错误

“群集部署因自定义脚本操作出错而失败。 失败的操作:<SCRIPT_NAME>,请转到 Ambari UI 以进一步调试错误。”

原因

成功部署群集后,将执行“创建群集”请求期间提供的自定义脚本。 此错误代码指示在执行名为 <SCRIPT_NAME> 的自定义脚本时遇到错误。

解决方法

由于这是你的自定义脚本,因此我们建议排查问题,并根据需要重新运行该脚本。 若要排查脚本错误,请检查 /var/lib/ambari-agent/* 文件夹中的日志。 或者,在 Ambari UI 中打开“操作”页,然后选择“run_customscriptaction”操作查看错误详细信息。


错误代码:InvalidDocumentErrorCode

错误

“数据库 <DATABASE_NAME> 中的 <META_STORE_TYPE> 元存储架构版本 <METASTORE_MAJOR_VERSION> 与群集版本 <CLUSTER_VERSION> 不兼容”

原因

自定义元存储与所选的 HDInsight 群集版本不兼容。 目前,HDInsight 4.0 群集仅支持元存储版本 3.0 和更高版本,而 HDInsight 3.6 不支持元存储版本 3.0 和更高版本。

解决方法

仅使用 HDInsight 群集版本支持的元存储版本。 如果未指定自定义元存储,HDInsight 将在内部创建元存储,并在删除群集后删除此元存储。


错误代码:FailedToConnectWithClusterErrorCode

错误

“无法连接到群集管理终结点来执行缩放操作。 验证网络安全规则是否未阻止从外部访问群集,以及是否可以成功访问群集管理器 (Ambari) UI。”

原因

网络安全组 (NSG) 中的某个防火墙规则阻止了群集与关键 Azure 运行状况和管理服务的通信。

解决方法

如果你打算使用网络安全组来控制网络流量,请在安装 HDInsight 之前执行以下操作:

  • 确定计划用于 HDInsight 的 Azure 区域。
  • 确定 HDInsight 所需的 IP 地址。 有关详细信息,请参阅 HDInsight 管理 IP 地址
    • 为计划将 HDInsight 安装到其中的子网创建或修改网络安全组。
    • 对于网络安全组,请在端口 443 上允许来自 IP 地址的入站流量。 此配置确保 HDInsight 管理服务可以从虚拟网络外部访问群集。

错误代码:StoragePermissionsBlockedForMsi

错误

“托管标识对存储帐户没有权限。 请验证是否已将“存储 Blob 数据所有者”角色分配给存储帐户的托管标识。 存储:/subscriptions/ <Subscription ID> /resourceGroups/<资源组名称> /providers/Microsoft.Storage/storageAccounts/ <存储帐户名称>,托管标识:/subscriptions/ <Subscription ID> /resourceGroups/ /<资源组名称> /providers/Microsoft.ManagedIdentity/userAssignedIdentities/ <用户托管标识名称>”

原因

未提供管理标识所需的权限。 用户分配的托管标识没有 Azure Data Lake Storage Gen2 存储帐户的 Blob 存储参与者角色。

解决方法

  1. 打开 Azure 门户。
  2. 转到存储帐户。
  3. 查看“访问控制(IAM)”。
  4. 确保为该用户分配了“存储 Blob 数据参与者”角色或“存储 Blob 数据所有者”角色 。

有关详细信息,请参阅在 Data Lake Storage Gen2 帐户中设置托管标识的权限


错误代码:InvalidNetworkSecurityGroupSecurityRules

错误

“配置了子网 /subscriptions/<订阅 ID>/resourceGroups/<资源组名称> RG-westeurope-vnet-tomtom-default/providers/Microsoft.Network/virtualNetworks/<虚拟网络名称>/subnets/<子网名称> 的网络安全组 /subscriptions/<订阅 ID>/resourceGroups/<资源组名称> default/providers/Microsoft.Network/networkSecurityGroups/<网络安全组名称> 中的安全规则不允许建立所需的入站和/或出站连接。 "

原因

如果网络安全组或用户定义的路由 (UDR) 控制流向 HDInsight 群集的入站流量,请确保群集能够与关键的 Azure 运行状况和管理服务通信。

解决方法

如果你打算使用网络安全组来控制网络流量,请在安装 HDInsight 之前执行以下操作:

  • 确定要用于 HDInsight 的 Azure 区域,并为该区域创建安全的 IP 地址列表。 有关详细信息,请参阅运行状况和管理服务:特定区域
  • 确定 HDInsight 所需的 IP 地址。 有关详细信息,请参阅 HDInsight 管理 IP 地址
  • 为计划将 HDInsight 安装到其中的子网创建或修改网络安全组。 对于网络安全组,请在端口 443 上允许来自 IP 地址的入站流量。 此配置确保 HDInsight 管理服务可以从虚拟网络外部访问群集。

错误代码:群集安装程序无法在一个或多个主机上安装组件

错误

“群集安装程序无法在一个或多个主机上安装组件。 请重试请求。”

原因

通常,此错误是出现暂时性问题或 Azure 服务中断时生成的。

解决方法

有关可能影响群集部署的任何 Azure 服务中断,请查看 Azure 状态页。 如果未发生服务中断,请重试群集部署。


错误代码:FailedToConnectWithClusterErrorCode

错误

无法连接到群集管理终结点。 请稍后重试。

原因

尝试创建群集时,HDInsight 服务无法连接到群集

解决方法

如果使用了自定义 VNet 网络安全组 (NSG) 和用户定义路由 (UDR),请确保群集可以与 HDInsight 管理服务通信。 有关其他信息,请参阅 HDInsight 管理 IP 地址


错误代码:由于违反策略导致部署失败:策略禁止使用资源“<资源 URI>”。 策略标识符:'[{"policyAssignment":{"name":"<策略名称> ","id":"/providers/Microsoft.Management/managementGroups/<管理组名称> providers/Microsoft.Authorization/policyAssignments/<策略名称>"},"policyDefinition": <策略定义>

原因

基于订阅的 Azure 策略可能会拒绝创建公共 IP 地址。 创建 HDInsight 群集需要两个公共 IP。

以下策略通常会影响群集创建:

  • 阻止在订阅中创建 IP 地址或负载均衡器的策略。
  • 阻止创建存储帐户的策略。
  • 阻止删除网络资源(如 IP 地址或负载均衡器)的策略。

解决方法

创建 HDInsight 群集时删除或禁用基于订阅的 Azure Policy 分配。


错误代码:FailedToValidateStorageAccountErrorCode

错误

[{'code':'FailedToValidateStorageAccountErrorCode','message':'Failed to validate the storage account.'}]}

原因

  • 可以在 HDInsight 使用的 Azure Blob 存储帐户上启用 RA-GRS 或 RA-ZRS。 但是,不支持针对 RA-GRS 或 RA-ZRS 辅助终结点创建群集。
  • HDInsight 不支持将 Data Lake Storage Gen2 设置为“读取访问异地区域冗余存储(RA-GZRS)”或“异地区域冗余存储(GZRS)”。

解决方法


后续步骤

若要详细了解如何排查群集创建问题,请参阅排查 Azure HDInsight 中的群集创建失败问题