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 Gen1 e 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

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 ACCOUNTNAMEACCOUNTKEY-p (opcional)
  • ACCOUNTNAME é o nome da conta de armazenamento a ser adicionada ao cluster HDInsight.
  • ACCOUNTKEY é a chave de acesso para ACCOUNTNAME.
  • -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

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net, onde CLUSTERNAME é o nome do cluster.

  2. Navegue até HDFS>Configs>Advanced>Custom core-site.

  3. 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:

    verification through Apache Ambari.

Remover conta de armazenamento

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net, onde CLUSTERNAME é o nome do cluster.

  2. Navegue até HDFS>Configs>Advanced>Custom core-site.

  3. 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