Adición de más cuentas de almacenamiento a HDInsight
Obtenga información sobre cómo utilizar acciones de script para agregar cuentas adicionales de Azure Storage a HDInsight. Los pasos descritos en este documento agregan una cuenta de almacenamiento a un clúster de HDInsight existente. Este artículo se aplica a las cuentas de almacenamiento (no la cuenta de almacenamiento predeterminada del clúster) y tampoco al almacenamiento adicional, como Azure Data Lake Storage Gen2
.
Importante
La información de este documento trata sobre cómo agregar cuentas de almacenamiento adicionales a un clúster después de que se ha creado. Para información sobre cómo agregar cuentas de almacenamiento durante la creación de clústeres, consulte Configuración de clústeres en HDInsight con Apache Hadoop, Apache Spark, Apache Kafka, etc.
Requisitos previos
- Un clúster de Hadoop en HDInsight. Consulte Introducción a HDInsight en Linux.
- Nombre y clave de la cuenta de almacenamiento. Vea Administración de las claves de acceso de la cuenta de almacenamiento.
- Si utiliza PowerShell, necesitará el Módulo AZ. Consulte Introducción a Azure PowerShell.
Funcionamiento
Durante el procesamiento, el script realiza las siguientes acciones:
Si la cuenta de almacenamiento ya existe en la configuración de core-site.xml para el clúster, el script se cierra y no se lleva a cabo ninguna otra acción.
Comprueba que la cuenta de almacenamiento existe y que se puede acceder a ella mediante la clave.
Cifra la clave con la credencial del clúster.
Agrega la cuenta de almacenamiento al archivo core-site.xml.
Detiene y reinicia los servicios Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 y Apache Hadoop HDFS. Detener e iniciar estos servicios permite que usen la nueva cuenta de almacenamiento.
Advertencia
No se admite el uso de una cuenta de almacenamiento en una ubicación diferente a la del clúster de HDInsight.
Agregar cuenta de almacenamiento
Use Acción de script para aplicar los cambios con las siguientes consideraciones:
Propiedad | Value |
---|---|
URI de script de Bash | https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh |
Tipos de nodo | Head |
Parámetros | ACCOUNTNAME ACCOUNTKEY -p (opcional) |
ACCOUNTNAME
es el nombre de la cuenta de almacenamiento que se agregará al clúster de HDInsight.ACCOUNTKEY
es la clave de acceso paraACCOUNTNAME
.-p
es opcional. si se especifica, la clave no se cifra y se almacena en el archivo core-site.xml como texto sin formato.
Comprobación
Al ver el clúster de HDInsight en el portal de Azure, seleccione la entrada Cuentas de almacenamiento en Propiedades no muestra las cuentas de almacenamiento agregadas a través de esta acción de script. Azure PowerShell y la CLI de Azure tampoco mostrarán la cuenta de almacenamiento adicional. Esto se debe a que el script solo modifica la configuración de core-site.xml
del clúster. Esta información no se usa al recuperar la información del clúster mediante las API de administración de Azure.
Para verificar el almacenamiento adicional utilice uno de los métodos mostrados:
PowerShell
El script devuelve el nombre de las Cuentas de almacenamiento asociadas al clúster dado. Reemplace CLUSTERNAME
por el nombre de clúster real y después ejecute el 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
En un explorador web, vaya a
https://CLUSTERNAME.azurehdinsight.net
, dondeCLUSTERNAME
es el nombre del clúster.Vaya a HDFS>Configs>Advanced>Custom core-site (HDFS > Configuraciones > Avanzado > Sitio principal personalizado).
Observe las claves que comienzan por
fs.azure.account.key
. El nombre de la cuenta forma parte de la clave, como se ve en esta imagen de ejemplo:
Eliminación de la cuenta de almacenamiento
En un explorador web, vaya a
https://CLUSTERNAME.azurehdinsight.net
, dondeCLUSTERNAME
es el nombre del clúster.Vaya a HDFS>Configs>Advanced>Custom core-site (HDFS > Configuraciones > Avanzado > Sitio principal personalizado).
Quite las siguientes claves:
fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
Después de quitar estas claves y guardar la configuración, debe reiniciar Oozie, Yarn, MapReduce2, HDFS y Hive uno a uno.
Problemas conocidos
Firewall de almacenamiento
Si decide proteger la cuenta de almacenamiento con las restricciones de Firewalls y redes virtuales en Redes seleccionadas, asegúrese de habilitar la excepción Permitir servicios de Microsoft de confianza para que HDInsight pueda acceder a su cuenta de almacenamiento.
No se puede acceder a almacenamiento después de cambiar la clave
Si cambia la clave de una cuenta de almacenamiento, HDInsight ya no podrá acceder a dicha cuenta. HDInsight usa una copia en caché de clave del archivo core-site.xml para el clúster. Esta copia en caché debe actualizarse para que coincida con la nueva.
Volver a ejecutar la acción de script no actualizará la clave, ya que el script comprueba si ya existe una entrada para la cuenta de almacenamiento. Si ya existe una entrada, no realiza ningún cambio.
Para solucionar temporalmente este problema:
Consulte Actualización de las claves de acceso de la cuenta de almacenamiento para saber cómo rotar las claves de acceso.
También puede quitar la cuenta de almacenamiento y, después, volver a agregarla.
Pasos siguientes
En este documento aprendió a agregar más cuentas de almacenamiento a un clúster de HDInsight. Para más información sobre las acciones de script, consulte Personalización de clústeres de HDInsight basados en Linux mediante la acción de script.