Adicionar outras contas de armazenamento ao HDInsight

Saiba como utilizar ações de script para adicionar mais contas de Armazenamento do Microsoft Azure ao HDInsight. As etapas neste documento adicionam uma conta de armazenamento a um cluster HDInsight existente. Este artigo se aplica a contas de armazenamento (não à conta de armazenamento de cluster padrão) e não ao armazenamento adicional, como Azure Data Lake Storage Gen1 e Azure Data Lake Storage Gen2.

Importante

As informações neste documento mostram como adicionar contas de armazenamento a um cluster após a sua criação. Para saber mais sobre como adicionar contas de armazenamento durante a criação do cluster, veja Configurar clusters no HDInsight com Apache Hadoop, Apache Spark, Apache Kafka e mais.

Pré-requisitos

Como ele funciona

Durante o processamento, o script executa as ações a seguir:

  • Se a conta de armazenamento já existir na configuração de core-site.xml do cluster, o script será encerrado e nenhuma ação será executada.

  • Verifica se a conta de armazenamento existe e se pode ser acessada usando a chave.

  • Criptografa a chave usando a credencial do cluster.

  • Adiciona a conta de armazenamento ao arquivo core-site.xml.

  • Pare e reinicie o Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2, e HDFS do Apache Hadoop serviços. Interromper 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.

Nova conta de armazenamento

Use a Ação de script para aplicar as alterações com as seguintes considerações:

Propriedade Valor
URI do script Bash https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Tipo(s) de nó Head
Parâmetros ACCOUNTNAMEACCOUNTKEY-p (opcional)
  • ACCOUNTNAME é o nome da conta de armazenamento a ser adicionada ao cluster do HDInsight.
  • ACCOUNTKEY é a chave de acesso para ACCOUNTNAME.
  • -p é opcional. Se especificada, a chave não será criptografada e será armazenada no arquivo core-site.xml como texto sem formatação.

Verificação

Quando você exibe o cluster do Microsoft HDInsight no portal do Microsoft Azure, selecionar a entrada Contas de Armazenamento em Propriedades não exibe as contas de armazenamento adicionadas por meio desta 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 modifica apenas a configuração core-site.xml do cluster. Essas informações não são usadas ao recuperar as informações do cluster usando as APIs de gerenciamento do Azure.

Para verificar o armazenamento adicional, utilize um dos métodos mostrados:

PowerShell

O script retorna o(s) nome(s) da(s) Conta(s) de Armazenamento associada(s) ao cluster fornecido. 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, em que CLUSTERNAME é o nome do cluster.

  2. Navegue até HDFS>Configurações>Avançado>Core-site personalizado.

  3. Observe as chaves que começam com fs.azure.account.key. O nome da conta faz parte da chave, como 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, em que CLUSTERNAME é o nome do cluster.

  2. Navegue até HDFS>Configurações>Avançado>Core-site personalizado.

  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ê precisará reiniciar o Oozie, o Yarn, o MapReduce2, o HDFS e o Hive um por um.

Problemas conhecidos

Firewall de armazenamento

Se você optar por proteger a conta de armazenamento com as restrições de Redes virtuais e firewalls em Redes selecionadas, habilite a exceção Permitir serviços confiáveis da Microsoft para que o HDInsight possa acessar a conta de armazenamento.

Não é possível acessar o armazenamento após a alteração da 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 armazenada 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 alguma entrada para a conta de armazenamento. Se já houver uma entrada, ele não fará alterações.

Para solucionar esse problema:

Próximas etapas

Você aprendeu a adicionar outras contas de armazenamento a um cluster do HDInsight existente. Para saber mais sobre as ações de script, confira Personalizar clusters HDInsight com base em Linux usando a ação de script