Adicionar contas de armazenamento adicionais ao HDInsight

Saiba como usar as ações de script para adicionar contas adicionais de Armazenamento Azure ao HDInsight. Os passos deste documento adicionam uma conta de armazenamento a um cluster HDInsight existente. Este artigo aplica-se às contas de armazenamento (não à conta de armazenamento padrão), e não ao armazenamento adicional, tais como Azure Data Lake Storage Gen1 .Azure Data Lake Storage Gen2

Importante

A informação neste documento é sobre a adição de contas de armazenamento adicionais a um cluster depois de ter sido criada. Para obter informações sobre a adição de contas de armazenamento durante a criação do cluster, consulte Configurar clusters em HDInsight com Apache Hadoop, Apache Spark, Apache Kafka, entre outros.

Pré-requisitos

Como funciona

Durante o processamento, o script faz as seguintes ações:

  • Se a conta de armazenamento já existir na configuração core-site.xml para o cluster, o script sai e não são feitas mais ações.

  • Verifique se a conta de armazenamento existe e pode ser acedida através da chave.

  • Encripta a chave utilizando a credencial de cluster.

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

  • Para e reinicia os serviços Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 e Apache Hadoop HDFS. Parar e iniciar estes serviços permite-lhes utilizar a nova conta de armazenamento.

Aviso

A utilização de uma conta de armazenamento num local diferente do cluster HDInsight não é suportada.

Adicionar conta de armazenamento

Utilize a Ação do Script para aplicar as alterações com as seguintes considerações:

Propriedade Valor
URI de guião de bash https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Tipo de nó(s) Head
Parâmetros ACCOUNTNAMEACCOUNTKEY-p (opcional)
  • ACCOUNTNAME é o nome da conta de armazenamento a adicionar ao cluster HDInsight.
  • ACCOUNTKEY é a chave de acesso para ACCOUNTNAME.
  • -p é opcional. Se especificado, a chave não é encriptada e é armazenada no ficheiro core-site.xml como texto simples.

Verificação

Ao visualizar o cluster HDInsight no portal do Azure, a seleção da entrada de Contas de Armazenamento em Propriedades não apresenta contas de armazenamento adicionadas através desta ação de script. Azure PowerShell e Azure CLI também não exibem a conta de armazenamento adicional. A informação de armazenamento não é apresentada porque o script apenas modifica a core-site.xml configuração para o cluster. Esta informação não é usada quando se recupera a informação do cluster utilizando AS DE Gestão Azure.

Para verificar a utilização adicional do armazenamento, um dos métodos a seguir indicados:

PowerShell

O script devolverá o(s) nome(s) da Conta de Armazenamento associado ao cluster dado. Substitua-o CLUSTERNAME pelo nome do cluster real e, em seguida, 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. A partir de um navegador web, navegue para https://CLUSTERNAME.azurehdinsight.net, onde CLUSTERNAME está o nome do seu cluster.

  2. Navegue para o hdfs>configs>advanced>custom core-site.

  3. Observe as chaves que começam com fs.azure.account.key. O nome da conta será uma parte da chave vista nesta imagem de amostra:

    verificação através de Apache Ambari

Remover conta de armazenamento

  1. A partir de um navegador web, navegue para https://CLUSTERNAME.azurehdinsight.net, onde CLUSTERNAME está o nome do seu cluster.

  2. Navegue para o hdfs>configs>advanced>custom core-site.

  3. Retire as seguintes teclas:

    • 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 estas teclas e guardar a configuração, precisa reiniciar Oozie, Yarn, MapReduce2, HDFS e Hive um a um.

Problemas conhecidos

Firewall de armazenamento

Se optar por proteger a sua conta de armazenamento com as restrições de Firewalls e redes virtuais em redes Selecionadas, certifique-se de ativar a exceção Permitir serviços de Microsoft fidedignos para que o HDInsight possa aceder à sua conta de armazenamento.

Não conseguir aceder ao armazenamento depois de mudar a chave

Se alterar a chave para uma conta de armazenamento, o HDInsight já não pode aceder à conta de armazenamento. O HDInsight utiliza uma cópia em cache da chave no core-site.xml para o cluster. Esta cópia em cache deve ser atualizada para corresponder à nova chave.

Executar a ação do script novamente não atualiza a chave, uma vez que o script verifica para ver se já existe uma entrada para a conta de armazenamento. Se uma entrada já existe, não faz alterações.

Para contornar este problema:

Passos seguintes

Aprendeu a adicionar contas de armazenamento adicionais a um cluster HDInsight existente. Para obter mais informações sobre as ações de script, consulte os clusters HDInsight baseados em Linux utilizando ação de script