Adicionar contas de armazenamento adicionais ao HDInsight
Saiba como usar ações de script para adicionar contas extras do Armazenamento do Azure ao HDInsight. As etapas neste documento adicionam uma conta de armazenamento a um cluster HDInsight existente. Este artigo aplica-se a contas de armazenamento (não à conta de armazenamento de cluster padrão) e não a armazenamento adicional, como Azure Data Lake Storage Gen2
.
Importante
As informações neste documento são sobre a adição de contas de armazenamento adicionais a um cluster depois que ele foi criado. Para obter informações sobre como adicionar contas de armazenamento durante a criação de clusters, consulte Configurar clusters no HDInsight com Apache Hadoop, Apache Spark, Apache Kafka e muito mais.
Pré-requisitos
- Um cluster Hadoop no HDInsight. Consulte Introdução ao HDInsight no Linux.
- Nome e chave da conta de armazenamento. Consulte Gerenciar chaves de acesso da conta de armazenamento.
- Se estiver usando o PowerShell, você precisará do módulo AZ. Consulte Visão geral do Azure PowerShell.
Como funciona
Durante o processamento, o script executa as seguintes ações:
Se a conta de armazenamento já existir na configuração de core-site.xml para o cluster, o script será encerrado e nenhuma outra ação será executada.
Verifica se a conta de armazenamento existe e pode ser acessada usando a chave.
Criptografa a chave usando a credencial de cluster.
Adiciona a conta de armazenamento ao arquivo core-site.xml.
Interrompe e reinicia os serviços Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 e Apache Hadoop HDFS. Parar e iniciar esses serviços permite que eles usem a nova conta de armazenamento.
Aviso
Não há suporte para o uso de uma conta de armazenamento em um local diferente do cluster HDInsight.
Adicionar conta de armazenamento
Use a Ação de Script para aplicar as alterações com as seguintes considerações:
Property | valor |
---|---|
Bash script URI | https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh |
Tipo(s) de nó(s) | Head |
Parâmetros | ACCOUNTNAME ACCOUNTKEY -p (facultativo) |
ACCOUNTNAME
é o nome da conta de armazenamento a ser adicionada ao cluster HDInsight.ACCOUNTKEY
é a chave de acesso paraACCOUNTNAME
.-p
é opcional. Se especificado, a chave não é criptografada e é armazenada no arquivo core-site.xml como texto sem formatação.
Verificação
Ao exibir o cluster HDInsight no portal do Azure, selecione a entrada Contas de Armazenamento em Propriedades não exibe contas de armazenamento adicionadas por meio dessa ação de script. O Azure PowerShell e a CLI do Azure também não exibem a conta de armazenamento adicional. As informações de armazenamento não são exibidas porque o script apenas modifica a core-site.xml
configuração do cluster. Essas informações não são usadas ao recuperar as informações do cluster usando APIs de gerenciamento do Azure.
Para verificar o armazenamento adicional, use um dos métodos mostrados:
PowerShell
O script retorna o(s) nome(s) da Conta de Armazenamento associado(s) ao cluster determinado. Substitua CLUSTERNAME
pelo nome real do cluster e execute o script.
# 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.net/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.net/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]}
Apache Ambari
Em um navegador da Web, navegue até
https://CLUSTERNAME.azurehdinsight.net
, ondeCLUSTERNAME
é o nome do cluster.Navegue até HDFS>Configs>Advanced>Custom core-site.
Observe as teclas que começam com
fs.azure.account.key
. O nome da conta faz parte da chave, conforme visto nesta imagem de exemplo:
Remover conta de armazenamento
Em um navegador da Web, navegue até
https://CLUSTERNAME.azurehdinsight.net
, ondeCLUSTERNAME
é o nome do cluster.Navegue até HDFS>Configs>Advanced>Custom core-site.
Remova as seguintes chaves:
fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
Depois de remover essas chaves e salvar a configuração, você precisa reiniciar o Oozie, Yarn, MapReduce2, HDFS e Hive, um por um.
Problemas conhecidos
Firewall de armazenamento
Se você optar por proteger sua conta de armazenamento com as restrições Firewalls e redes virtuais em Redes selecionadas, certifique-se de habilitar a exceção Permitir serviços confiáveis da Microsoft para que o HDInsight possa acessar sua conta de armazenamento.
Não é possível acessar o armazenamento depois de alterar a chave
Se você alterar a chave de uma conta de armazenamento, o HDInsight não poderá mais acessar a conta de armazenamento. O HDInsight usa uma cópia em cache da chave no core-site.xml do cluster. Essa cópia em cache deve ser atualizada para corresponder à nova chave.
Executar a ação de script novamente não atualiza a chave, pois o script verifica se já existe uma entrada para a conta de armazenamento. Se já existir uma entrada, ela não fará alterações.
Para contornar este problema:
Consulte Atualizar chaves de acesso da conta de armazenamento sobre como girar as chaves de acesso.
Você também pode remover a conta de armazenamento e, em seguida, adicionar novamente a conta de armazenamento.
Próximos passos
Você aprendeu como adicionar contas de armazenamento adicionais a um cluster HDInsight existente. Para obter mais informações sobre ações de script, consulte Personalizar clusters HDInsight baseados em Linux usando ação de script