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 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
- Um cluster Hadoop no HDInsight. Consulte Introdução ao HDInsight no Linux.
- Nome e chave da conta de armazenamento. Veja Gerenciar chaves de acesso da conta de armazenamento.
- Se estiver utilizando o PowerShell, você precisará do módulo AZ. Veja Visão geral do Azure PowerShell.
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 | ACCOUNTNAME ACCOUNTKEY -p (opcional) |
ACCOUNTNAME
é o nome da conta de armazenamento a ser adicionada ao cluster do HDInsight.ACCOUNTKEY
é a chave de acesso paraACCOUNTNAME
.-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
Em um navegador da Web, navegue até
https://CLUSTERNAME.azurehdinsight.net
, em queCLUSTERNAME
é o nome do cluster.Navegue até HDFS>Configurações>Avançado>Core-site personalizado.
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:
Remover conta de armazenamento
Em um navegador da Web, navegue até
https://CLUSTERNAME.azurehdinsight.net
, em queCLUSTERNAME
é o nome do cluster.Navegue até HDFS>Configurações>Avançado>Core-site personalizado.
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:
Confira em Atualizar chaves de acesso da conta de armazenamento como girar as chaves de acesso.
Você também pode remover a conta de armazenamento e adicioná-la novamente.
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