Compartir vía


Migración de un clúster de Apache HBase a una versión nueva

En este artículo se indica cómo actualizar el clúster de Apache HBase en Azure HDInsight a una versión más reciente.

Este artículo solo se aplica si usa la misma cuenta de Azure Storage para los clústeres de origen y destino. Para actualizar con una cuenta de Storage nueva o diferente para el clúster de destino, consulte Migración de Apache HBase a una nueva versión con una nueva cuenta de Storage.

El tiempo de inactividad durante la actualización debe ser de solo unos minutos. Este tiempo de inactividad se debe a los pasos que se necesitan para vaciar todos los datos en memoria y el tiempo para configurar y reiniciar los servicios en el clúster nuevo. Los resultados variarán en función del número de nodos, la cantidad de datos y otras variables.

Revisión de la compatibilidad de Apache HBase

Antes de actualizar Apache HBase, asegúrese de que las versiones de HBase en los clústeres de origen y de destino sean compatibles. Revise la matriz de compatibilidad de versiones de HBase y las notas de la versión de la guía de referencia de HBase para asegurarse de que la aplicación es compatible con la versión nueva.

Este es un ejemplo de una matriz de compatibilidad. Y indica la compatibilidad y N indica una posible no compatibilidad:

Tipo de compatibilidad Versión principal Versión secundaria Revisión
Compatibilidad de conexión cliente-servidor N Y Y
Compatibilidad servidor-servidor N Y Y
Compatibilidad de formato de archivo N Y Y
Compatibilidad de API de cliente N Y Y
Compatibilidad binaria de cliente N N Y
Compatibilidad de API limitada del servidor
Stable N Y Y
En evolución N N Y
Inestable N N N
Compatibilidad de dependencia N Y Y
Compatibilidad de las operaciones N N Y

Para más información sobre las versiones y la compatibilidad de HDInsight, consulte Versiones de Azure HDInsight.

Introducción a la migración de clústeres de Apache HBase

Para actualizar el clúster de Apache HBase en Azure HDInsight, siga estos pasos básicos. Para obtener instrucciones detalladas, consulte los pasos y comandos, o bien use los scripts de la sección Migración de HBase mediante scripts para la migración automatizada.

Prepare el clúster de origen:

  1. Detenga la ingesta de datos.
  2. Vacíe los datos de memstore.
  3. Detenga HBase desde Ambari.
  4. En el caso de los clústeres con escrituras aceleradas, haga una copia de seguridad del directorio del registro de escritura previa.

Prepare el clúster de destino:

  1. Cree el clúster de destino.
  2. Detenga HBase desde Ambari.
  3. Actualice fs.defaultFS en las configuraciones del servicio HDFS para hacer referencia al contenedor de clústeres de origen original.
  4. Para los clústeres con escrituras aceleradas, actualice hbase.rootdir en las configuraciones del servicio HBase para hacer referencia al contenedor de clústeres de origen original.
  5. Limpie datos de Zookeeper.

Complete la migración:

  1. Limpie y migre el WAL.
  2. Copie las aplicaciones del contenedor predeterminado del clúster de destino en el contenedor de origen original.
  3. Inicie todos los servicios desde el clúster de destino de Ambari.
  4. Compruebe HBase.
  5. Elimine el clúster de origen.

Pasos y comandos detallados para la migración

Use estos pasos y comandos detallados para migrar el clúster de Apache HBase.

Preparación del clúster de origen

  1. Detenga la ingesta al clúster de HBase de origen.

  2. Vacíe el clúster de HBase de origen que está actualizando.

    HBase escribe los datos entrantes a un almacén en memoria denominado memstore. Una vez que memstore alcanza un determinado tamaño, HBase se vacía en el disco para un almacenamiento a largo plazo en la cuenta de almacenamiento del clúster. Al eliminar el clúster de origen después de una actualización, también se eliminan los datos de los almacenes memstore. Para conservar los datos, vacíe manualmente el almacén memstore de cada tabla en el disco antes de actualizar.

    Puede vaciar los datos de memstore ejecutando el script flush_all_tables.sh desde el repositorio de GitHub hbase-utils de Azure.

    También puede vaciar los datos de memstore ejecutando el siguiente comando de shell de HBase desde el clúster de HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Inicie sesión en Apache Ambari en el clúster de origen con https://<OLDCLUSTERNAME>.azurehdinsight.net y detenga los servicios de HBase.

  4. En la solicitud de confirmación, seleccione la casilla para activar el modo de mantenimiento de HBase.

    Para más información sobre la conexión y el uso de Ambari, consulte Administración de clústeres de HDInsight con la interfaz de usuario web de Ambari.

  5. Si el clúster de HBase de origen no tiene la característica Escrituras aceleradas, omita este paso. Para los clústeres de HBase de origen con escrituras aceleradas, haga una copia de seguridad del directorio WAL en HDFS mediante la ejecución de los siguientes comandos desde una sesión SSH en cualquiera de los nodos de Zookeeper o nodos de trabajo del clúster de origen.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Preparación del clúster de destino

  1. En Azure Portal, configure un nuevo clúster de HDInsight de destino con la misma cuenta de almacenamiento que el clúster de origen, pero con un nombre de contenedor diferente:

  2. Inicie sesión en Apache Ambari en el clúster nuevo en https://<NEWCLUSTERNAME>.azurehdinsight.net y detenga los servicios de HBase.

  3. En Services>HDFS>Configs>Advanced>Advanced core-site (Servicios > HDFS > Configuraciones > Opciones avanzadas > Sitio central avanzado), cambie el valor de HDFS fs.defaultFS para que apunte al nombre de contenedor del clúster de origen original. Por ejemplo, el valor de la siguiente captura de pantalla debería cambiarse a wasbs://hbase-upgrade-old-2021-03-22.

    En Ambari, seleccione Services> HDFS > Configs > Advanced > Advanced core-site (Servicios > HDFS > Configuraciones > Opciones avanzadas > Sitio central avanzado).

  4. Si el clúster de destino tiene la característica Escrituras aceleradas, cambie la ruta de acceso hbase.rootdir para que apunte al nombre del contenedor del clúster de origen original. Por ejemplo, la ruta de acceso siguiente debe cambiarse a hbase-upgrade-old-2021-03-22. Si el clúster no tiene escrituras aceleradas, omita este paso.

    En Ambari, cambie el nombre del contenedor del directorio raíz de HBase.

  5. Limpie los datos de Zookeeper en el clúster de destino mediante la ejecución de los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Limpieza y migración de WAL

Ejecute los siguientes comandos, en función de la versión de HDI de origen y de si los clústeres de origen y destino tienen escrituras aceleradas.

  • El clúster de destino siempre es la versión 4.0 de HDI, ya que HDI 3.6 está en soporte técnico Basic y no se recomienda para los clústeres nuevos.
  • El comando de copia de HDFS es hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Nota

  • <source-container-fullpath> para el tipo de almacenamiento WASB es wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • <source-container-fullpath> para el tipo de almacenamiento Azure Data Lake Storage Gen2 es abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

El clúster de origen es HDI 3.6 o HDI 4.0 con escrituras aceleradas, y el clúster de destino tiene escrituras aceleradas.

Limpie los datos de WAL FS para el clúster de destino y copie el directorio de WAL del clúster de origen en el HDFS del clúster de destino. Copie el directorio mediante la ejecución de los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper en el clúster de destino:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://mycluster/

El clúster de origen es HDI 3.6 sin escrituras aceleradas, y el clúster de destino tiene escrituras aceleradas.

Limpie los datos de WAL FS para el clúster de destino y copie el directorio de WAL del clúster de origen en el HDFS del clúster de destino. Copie el directorio mediante la ejecución de los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper en el clúster de destino:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container>/hbase/*WALs hdfs://mycluster/hbasewal

El clúster de origen es HDI 3.6 sin escrituras aceleradas, y el clúster de destino no tiene escrituras aceleradas.

Limpie los datos de WAL FS para el clúster de destino y copie el directorio de WAL del clúster de origen en el HDFS del clúster de destino. Para copiar el directorio, ejecute los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper en el clúster de destino:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals

El clúster de origen es HDI 4.0 sin escrituras aceleradas, y el clúster de destino tiene escrituras aceleradas.

Limpie los datos de WAL FS para el clúster de destino y copie el directorio de WAL del clúster de origen en el HDFS del clúster de destino. Copie el directorio mediante la ejecución de los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper en el clúster de destino:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

El clúster de origen es HDI 4.0 sin escrituras aceleradas, y el clúster de destino no tiene escrituras aceleradas.

Limpie los datos de WAL FS para el clúster de destino y copie el directorio de WAL del clúster de origen en el HDFS del clúster de destino. Para copiar el directorio, ejecute los siguientes comandos en cualquier nodo o nodo de trabajo de Zookeeper en el clúster de destino:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /

Completar la migración

  1. Con el contexto de usuario sudo -u hdfs, copie la carpeta /hdp/apps/<new-version-name> y su contenido de <destination-container-fullpath> en la carpeta /hdp/apps en <source-container-fullpath>. Puede copiar la carpeta ejecutando los siguientes comandos en el clúster de destino:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Por ejemplo:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/4.1.3.6 wasbs://hbase-upgrade-old-2021-03-22@hbaseupgrade.blob.core.windows.net/hdp/apps
    
  2. En el clúster de destino, guarde los cambios y reinicie todos los servicios necesarios como indica Ambari.

  3. Dirija la aplicación al clúster de destino.

    Nota

    El nombre DNS estático de la aplicación cambia cuando se realiza la actualización. En lugar de codificar de forma rígida este nombre DNS, puede configurar un CNAME en los valores de DNS del nombre de dominio que apunta al nombre del clúster. Otra opción es usar un archivo de configuración para la aplicación que se puede actualizar sin volver a implementar.

  4. Inicie la ingesta.

  5. Compruebe la coherencia de HBase y las operaciones del lenguaje de definición de datos (DDL) y el lenguaje de manipulación de datos (DML).

  6. Si el clúster de destino funciona de manera satisfactoria, elimine el clúster de origen.

Migración de HBase mediante scripts

  1. Ejecute el script migrate-hbase-source.sh en el clúster de origen y migrate-hbase-dest.sh en el clúster de destino. Siga las siguientes instrucciones para ejecutar estos scripts.

    Nota

    Estos scripts no copian los archivos WAL de HBase antiguos como parte de la migración; por lo tanto, los scripts no se usarán en clústeres que tengan habilitada la característica Copia de seguridad o replicación de HBase.

  2. En el clúster de origen

    sudo bash migrate-hbase-source.sh
    
  3. En el clúster de destino

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Argumento obligatorio para el comando anterior:

   -f, --src-fs
   The fs.defaultFS of the source cluster
   For example:
   -f wasb://anynamehbase0316encoder-2021-03-17t01-07-55-935z@anynamehbase0hdistorage.blob.core.windows.net

Pasos siguientes

Para más información sobre Apache HBase y sobre la actualización de los clústeres de HDInsight, consulte los artículos siguientes: