Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
了解如何使用脚本操作将其他 Azure 存储帐户添加到 HDInsight。 本文档中的步骤会将存储帐户添加到现有 HDInsight 群集。 本文适用于存储帐户(而不是默认的群集存储帐户),但不适用于额外的存储(例如 Azure Data Lake Storage Gen2
)。
Importante
本文档中的信息是关于在创建群集后将其他存储帐户添加到群集。 有关如何在创建群集期间添加存储帐户的信息,请参阅使用 Apache Hadoop、Apache Spark、Apache Kafka 等设置 HDInsight 中的群集。
- HDInsight 上的 Hadoop 群集。 请参阅 Linux 上的 HDInsight 入门。
- 存储帐户名和密钥。 请参阅管理存储帐户访问密钥。
- 如果使用 PowerShell,则需要 AZ 模块。 请参阅 Azure PowerShell 概述。
在处理期间,脚本执行以下操作:
如果群集的 core-site.xml 配置中已存在该存储帐户,则脚本会退出且不会执行任何进一步操作。
使用密钥验证该存储帐户是否存在并且是否可以访问。
使用群集凭据对密钥进行加密。
将存储帐户添加到 core-site.xml 文件中。
停止并重启 Apache Oozie、Apache Hadoop YARN、Apache Hadoop MapReduce2 和 Apache Hadoop HDFS 服务。 通过停止和重启这些服务来使用新的存储帐户。
Advertencia
不支持在 HDInsight 群集之外的其他位置使用存储帐户。
使用脚本操作应用更改时请注意以下事项:
属性 | Value |
---|---|
Bash 脚本 URI | https://hdiconfigactions.blob.core.chinacloudapi.cn/linuxaddstorageaccountv01/add-storage-account-v01.sh |
节点类型 | 头 |
parameters | ACCOUNTNAME ACCOUNTKEY -p (可选) |
ACCOUNTNAME
是要添加到 HDInsight 群集的存储帐户的名称。ACCOUNTKEY
是ACCOUNTNAME
的访问密钥。-p
是可选项。 如果指定此参数,则密钥不会加密,并以纯文本形式存储在 core-site.xml 文件中。
在 Azure 门户中查看 HDInsight 群集时,选择“属性”下的“存储帐户”项时不会显示通过此脚本操作添加的存储帐户。 Azure PowerShell 和 Azure CLI 也不显示其他存储帐户。 之所以未显示存储信息是因为该脚本只修改群集的 core-site.xml
配置。 使用 Azure 管理 API 检索群集信息时,不会使用此信息。
若要验证其他存储,请使用所示的方法之一:
脚本会返回与给定群集关联的存储帐户名称。 将 CLUSTERNAME
替换为实际群集名称,然后运行脚本。
# Update values
$clusterName = "CLUSTERNAME"
$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"
$clusterName = $clusterName.ToLower();
# getting service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.cn/api/v1/clusters/$clusterName`?fields=Clusters/desired_service_config_versions/HDFS" `
-Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$configVersion=$respObj.Clusters.desired_service_config_versions.HDFS.service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.cn/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=$configVersion" `
-Credential $creds
$respObj = ConvertFrom-Json $resp.Content
# extract account names
$value = ($respObj.items.configurations | Where type -EQ "core-site").properties | Get-Member -membertype properties | Where Name -Like "fs.azure.account.key.*"
foreach ($name in $value ) { $name.Name.Split(".")[4]}
在 Web 浏览器中,导航到
https://CLUSTERNAME.azurehdinsight.cn
,其中CLUSTERNAME
是群集的名称。导航到“HDFS”>“配置”>“高级”>“自定义 core-site”。
观察以
fs.azure.account.key
开头的密钥。 如此示例图像所示,帐户名称是密钥的一部分:
在 Web 浏览器中,导航到
https://CLUSTERNAME.azurehdinsight.cn
,其中CLUSTERNAME
是群集的名称。导航到“HDFS”>“配置”>“高级”>“自定义 core-site”。
删除以下密钥:
fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.chinacloudapi.cn
fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.chinacloudapi.cn
删除这些密钥并保存配置后,你需要逐一重启 Oozie、Yarn、MapReduce2、HDFS 和 Hive。
如果选择在“选定网络”上通过“防火墙和虚拟网络”限制来保护存储帐户的安全,请务必启用例外“允许受信任的 Azure 服务”,这样 HDInsight 就能访问存储帐户。
如果更改了存储帐户的密钥,HDInsight 不再能够访问存储帐户。 HDInsight 使用群集的 core-site.xml 中缓存的密钥副本。 必须更新此缓存的副本,使其匹配新密钥。
再次运行脚本操作不会更新密钥,因为脚本会检查该存储帐户的条目是否已存在。 如果条目已存在,则不会进行任何更改。
若要解决此问题,请执行以下操作:
有关如何轮换访问密钥的信息,请参阅更新存储帐户访问密钥。
还可以删除存储帐户,然后再将该存储帐户添加回来。
你已学习如何将其他存储帐户添加到现有 HDInsight 群集。 有关脚本操作的详细信息,请参阅使用脚本操作自定义基于 Linux 的 HDInsight 群集