azure - 使用模板部署通过数据湖创建 Azure HDInsight 时出现问题

标签 azure azure-resource-manager azure-hdinsight azure-data-lake

我正在尝试使用模板部署创建带有数据湖的 Azure HDInsight。但我在执行模板时遇到了问题,因为我认为原因是“服务主体名称”与 azure 数据湖存储的集成。

错误:

"message": "DeploymentDocument 'AmbariConfiguration_1_7' 验证失败。错误:'访问数据湖存储帐户解调器时出错:从 AAD 获取 AppPrincipalId XXXXXX-XXXXXXXXX-XXXXX-XXX 的 OAuth token 时出错-XXXXX。

请查看下面的屏幕截图以了解更多详细信息。

enter image description here

我尝试创建 AD Web 应用程序并为该应用程序分配“所有者”角色。然后我将其分配给订阅的所有者。然后为应用程序添加“数据湖权限”。但我仍然认为我可能失踪了。

集群集成片段

"properties": {
                "clusterVersion": "[parameters('clusterVersion')]",
                "osType": "Linux",
                "tier": "standard",
                "clusterDefinition": {
                    "kind": "[parameters('clusterKind')]",
                    "configurations": {
                        "gateway": {
                            "restAuthCredential.isEnabled": true,
                            "restAuthCredential.username": "[parameters('clusterLoginUserName')]",
                            "restAuthCredential.password": "[parameters('clusterLoginPassword')]"
                        },
                        "core-site": {
                            "fs.defaultFS": "adl://home",
                            "dfs.adls.home.hostname": "demodls.azuredatalakestore.net",
                            "dfs.adls.home.mountpoint": "/clusters/democluster/"
                        },
                        "clusterIdentity": {
                            "clusterIdentity.applicationId": "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX",
                            "clusterIdentity.certificate": "[parameters('identityCertificate')]",
                            "clusterIdentity.aadTenantId": "https://login.windows.net/XXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXX",
                            "clusterIdentity.resourceUri": "https://management.core.windows.net/",
                            "clusterIdentity.certificatePassword": "[parameters('identityCertificatePassword')]"
                        }
                    }
                },

在这里我有一些疑问

  1. “SecureString”值(例如“parameter.json”中的 clusterpassword、sshpassword)是否应该以明文形式给出,或者我必须将其转换为 Securestring 并向其提供安全字符串值?

  2. 字段“identityCertificate”应该是“Certificate.pfx”文件内容的“base64”编码,否则我必须将其转换为 Base64 -> SecureString 并在parameter.json中给出它?

非常感谢帮助!谢谢

问候

最佳答案

identityCertificate 应是证书 .pfx 文件内容的 Base64 编码字符串表示形式。它在 ARM 模板定义文件中标记为 SecureString 类型,以便在您以后获取部署历史记录时不会存储/返回明文。使用 SecureString 标记字段有助于确保密码和其他此类字段不会保留在您的部署历史记录中。

对如何编写群集创建 ARM 模板进行故障排除的一种简单方法是转到 Azure 门户,并按照您在模板中所需的方式创建群集。在“摘要”步骤中单击“创建”之前,下载 ARM 模板以查看部署的内容。 “创建”旁边有一个链接可以执行此操作。

我希望您会注意到指定主 ADLS 帐户的方式有所不同。按照下载的 ARM 模板中的配置方式进行操作,您应该就可以开始了。

关于azure - 使用模板部署通过数据湖创建 Azure HDInsight 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678776/

相关文章:

c# - 如何通过代理连接到Azure服务总线主题-C#?

azure - ARM模板输出私有(private)端点的私有(private)IP

azure - 如何通过 Azure DNS 区域的 ARM 模板删除 DNS 记录

azure - 无法从 HDInsight 群集上的 Spark UI 访问日志

azure - 从现有存储帐户将数据提取到HDInsight中

mysql - 尝试查询 SQL 数据库并格式化将插入新数据库的输出

azure - 用于应用程序功能的基于文件的工件

c# - Azure 将文件从 blob 存储移动到同一存储帐户中的文件存储

powershell - 应用程序网关路由规则未使用 powershell 脚本更新

azure - 有哪些基于 UI 的工具可用于访问 Hive 数据库?