Compartir vía


Uso de la replicación de Apache Hive en clústeres de Azure HDInsight

En el contexto de las bases de datos y los almacenes, la replicación es el proceso por el cual se duplican las entidades de un almacén a otro. La duplicación puede aplicarse a una base de datos completa o a un nivel más pequeño, como una tabla o una partición. El objetivo es tener una réplica que cambie cada vez que lo hace la entidad base. La replicación en Apache Hive se centra en la recuperación ante desastres y ofrece replicación unidireccional de copia principal. En los clústeres de HDInsight, la replicación de Hive se puede usar para replicar unidireccionalmente el metastore de Hive y el lago de datos subyacente asociado en Azure Data Lake Storage Gen2.

La replicación de Hive ha evolucionado a lo largo de los años con nuevas versiones que proporcionan una mejor funcionalidad y son más rápidas y que consumen menos recursos. En este artículo, se describe la replicación de Hive (Replv2), que se admite en los tipos de clúster de HDInsight 3.6 y HDInsight 4.0.

Ventajas de replv2

Hive ReplicationV2 (también conocido como Replv2) tiene las ventajas siguientes con respecto a la primera versión de la replicación de Hive que usaba Hive IMPORT-EXPORT:

  • Replicación incremental basada en eventos
  • Replicación de un momento dado
  • Requisitos de ancho de banda reducidos
  • Reducción del número de copias intermedias
  • Se mantiene el estado de replicación
  • Replicación restringida
  • Compatibilidad con un modelo radial
  • Compatibilidad con tablas ACID (en HDInsight 4.0)

Fases de replicación

La replicación basada en eventos de Hive se configura entre los clústeres principal y secundario. Esta replicación se compone de dos fases distintas: arranque y ejecuciones incrementales.

Arranque

El arranque está diseñado para ejecutarse una vez para replicar el estado base de las bases de datos del servidor principal al secundario. Puede configurar el arranque, si es necesario, para incluir un subconjunto de las tablas en la base de datos de destino donde se debe habilitar la replicación.

Ejecuciones incrementales

Después del arranque, las ejecuciones incrementales se automatizan en el clúster principal y los eventos generados durante estas ejecuciones incrementales se reproducen en el clúster secundario. Cuando el clúster secundario se pone al día con el clúster principal, el secundario se vuelve coherente con los eventos del principal.

Comandos de replicación

Hive ofrece un conjunto de comandos de REPL: DUMP, LOAD y STATUS para organizar el flujo de eventos. El comando DUMP genera un registro local de todos los eventos DDL/DML en el clúster principal. El comando LOAD es un enfoque para copiar los metadatos y los datos registrados de forma diferida en la salida del volcado de replicación extraído que se ejecuta en el clúster de destino. El comando STATUS se ejecuta desde el clúster de destino para proporcionar el último identificador de evento en el que se ha replicado correctamente la carga de replicación más reciente.

Establecimiento del origen de la replicación

Antes de comenzar con la replicación, asegúrese de que la base de datos que se va a replicar esté establecida como el origen de la replicación. Puede usar el comando DESC DATABASE EXTENDED <db_name> para determinar si el parámetro repl.source.for se establece con el nombre de la directiva.

Si la directiva está programada y no se ha establecido el parámetro repl.source.for, primero debe establecer este parámetro mediante ALTER DATABASE <db_name> SET DBPROPERTIES ('repl.source.for'='<policy_name>').

ALTER DATABASE tpcds_orc SET DBPROPERTIES ('repl.source.for'='replpolicy1') 

Volcado de metadatos en el lago de datos

El comando REPL DUMP [database name]. => location / event_id se usa en la fase de arranque para volcar los metadatos relevantes en Azure Data Lake Storage Gen2. El elemento event_id especifica el evento mínimo en el que se han colocado los metadatos pertinentes en Azure Data Lake Storage Gen2.

repl dump tpcds_orc; 

Salida de ejemplo:

dump_dir last_repl_id
/tmp/hive/repl/38896729-67d5-41b2-90dc-46eeed4c5dd0 2925

Carga de datos en el clúster de destino

El comando REPL LOAD [database name] FROM [ location ] { WITH ( ‘key1’=‘value1’{, ‘key2’=‘value2’} ) } se usa para cargar datos en el clúster de destino para el arranque y las fases incrementales de la replicación. El elemento [database name] puede ser el mismo que el origen o un nombre diferente en el clúster de destino. El elemento [location] representa la ubicación de la salida del comando REPL DUMP anterior. Esto significa que el clúster de destino debe ser capaz de comunicarse con el clúster de origen. La cláusula WITH se agregó principalmente para impedir que se reinicie el clúster de destino, lo que permite la replicación.

repl load tpcds_orc from '/tmp/hive/repl/38896729-67d5-41b2-90dc-46eeed4c5dd0'; 

Generación del último identificador de evento replicado

El comando REPL STATUS [database name] se ejecuta en los clústeres de destino y genera el último event_id replicado. El comando también permite que los usuarios sepan a qué estado se ha replicado su clúster de destino. Puede usar la salida de este comando para construir el siguiente comando REPL DUMP para la replicación incremental.

repl status tpcds_orc;

Salida de ejemplo:

last_repl_id
2925

Volcado de datos y metadatos relevantes en el lago de datos

El comando REPL DUMP [database name] FROM [event-id] { TO [event-id] } { LIMIT [number of events] } se usa para volcar los metadatos y los datos relevantes en Azure Data Lake Storage. Este comando se usa en la fase incremental y se ejecuta en el almacén de origen. El elemento FROM [event-id] es necesario para la fase incremental, y el valor de event-id se puede derivar mediante la ejecución del comando REPL STATUS [database name] en el almacén de destino.

repl dump tpcds_orc from 2925;

Salida de ejemplo:

dump_dir last_repl_id
/tmp/hive/repl/38896729-67d5-41b2-90dc-466466agadd0 2960

Proceso de replicación de Hive

Los pasos siguientes son los eventos secuenciales que tienen lugar durante el proceso de replicación de Hive.

  1. Asegúrese de que las tablas que se van a replicar se establecen como el origen de replicación para una directiva determinada.

  2. El comando REPL_DUMP se emite para el clúster principal con restricciones asociadas como el nombre de la base de datos, el intervalo del identificador de evento y la dirección URL de almacenamiento de Azure Data Lake Storage Gen2.

  3. El sistema serializa un volcado de todos los eventos de los que se ha realizado un seguimiento desde el metastore hasta el más reciente. Este volcado se almacena en la cuenta de almacenamiento de Azure Data Lake Storage Gen2 en el clúster principal, en la dirección URL especificada por el comando REPL_DUMP.

  4. El clúster principal conserva los metadatos de replicación en el almacenamiento de Azure Data Lake Storage Gen2 del clúster principal. La ruta de acceso se puede configurar en la interfaz de usuario de configuración de Hive en Ambari. El proceso proporciona la ruta de acceso donde se almacenan los metadatos y el identificador del evento DML/DDL sometido a seguimiento más reciente.

  5. El comando REPL_LOAD se emite desde el clúster secundario. El comando apunta a la ruta de acceso configurada en el paso 3.

  6. El clúster secundario lee el archivo de metadatos con los eventos sometidos a seguimiento creados en el paso 3. Asegúrese de que el clúster secundario tiene conectividad de red con el almacenamiento de Azure Data Lake Storage Gen2 del clúster principal en el que se almacenan los eventos REPL_DUMP sometidos a seguimiento.

  7. El clúster secundario genera un proceso de copia distribuida (DistCP).

  8. El clúster secundario copia los datos del almacenamiento del clúster principal.

  9. El metastore del clúster secundario está actualizado.

  10. El último identificador de evento sometido a seguimiento está almacenado en el metastore principal.

La replicación incremental sigue el mismo proceso y requiere el último identificador de evento replicado como entrada. Esto genera una copia incremental desde el último evento de replicación. Las replicaciones incrementales normalmente se automatizan con una frecuencia predeterminada para lograr los objetivos de punto de recuperación (RPO) necesarios.

Diagrama de replicación de Hive.

Patrones de replicación

Normalmente, la replicación se configura de forma unidireccional entre el clúster principal y el secundario, donde el principal se encarga de las solicitudes de lectura y escritura, mientras que el secundario solo se ocupa de las solicitudes de lectura. Se permiten las escrituras en el clúster secundario si se produce un desastre, pero es necesario volver a configurar en el principal la replicación inversa.

Patrón de replicación de Hive.

Hay muchos patrones adecuados para la replicación de Hive, como principal-secundario, radial y retransmisión.

En HDInsight, el patrón clúster principal activo y secundario en espera es un patrón común de continuidad empresarial y recuperación ante desastres (BCDR), y HiveReplicationV2 puede usar este patrón con clústeres de HDInsight Hadoop separados por regiones con emparejamiento de VNet. Se puede usar una máquina virtual común emparejada con ambos clústeres para hospedar los scripts de automatización de la replicación. Para obtener más información sobre los posibles patrones de BCDR de HDInsight, consulte Documentación de continuidad empresarial de HDInsight.

Replicación de Hive con Enterprise Security Package

En los casos en los que la replicación de Hive está planeada en clústeres de Hadoop de HDInsight con Enterprise Security Package, debe tener en cuenta los mecanismos de replicación para el metastore de Ranger y Microsoft Entra Domain Services.

Use la característica conjuntos de réplicas de Microsoft Entra Domain Services para crear más de un conjunto de réplicas de Microsoft Entra Domain Services por inquilino de Microsoft Entra en varias regiones. Cada conjunto de réplicas individual debe estar emparejado con las redes virtuales de HDInsight en sus respectivas regiones. En esta configuración, los cambios en Microsoft Entra Domain Services, incluida la configuración, la identidad de usuario y las credenciales, los grupos, los objetos de directiva de grupo, los objetos de equipo y otros cambios se aplican a todos los conjuntos de réplicas del dominio administrado mediante la replicación de Microsoft Entra Domain Services.

Se pueden realizar copias de seguridad periódicas de las directivas de Ranger y replicarlas desde el clúster principal al secundario mediante la funcionalidad de importación y exportación de Ranger. Puede optar por replicar todas o un subconjunto de directivas de Ranger según el nivel de autorización que busque implementar en el clúster secundario.

Código de ejemplo

La siguiente secuencia de código proporciona un ejemplo de cómo se puede implementar el arranque y la replicación incremental en una tabla de ejemplo denominada tpcds_orc.

  1. Establezca la tabla como el origen de una directiva de replicación.

    ALTER DATABASE tpcds_orc SET DBPROPERTIES ('repl.source.   for'='replpolicy1');
    
  2. Volcado de arranque en el clúster principal.

    repl dump tpcds_orc with ('hive.repl.rootdir'='/tmpag/hiveag/replag'); 
    

    Salida de ejemplo:

    dump_dir last_repl_id
    /tmpag/hiveag/replag/675d1bea-2361-4cad-bcbf-8680d305a27a 2925
  3. Carga de arranque en el clúster secundario.

    repl load tpcds_orc from '/tmpag/hiveag/replag 675d1bea-2361-4cad-bcbf-8680d305a27a'; 
    
  4. Compruebe el estado de REPL en el clúster secundario.

    repl status tpcds_orc; 
    
    last_repl_id
    2925
  5. Volcado incremental en el clúster principal.

    repl dump tpcds_orc from 2925 with ('hive.repl.rootdir'='/tmpag/hiveag/ replag');
    

    Salida de ejemplo:

    dump_dir last_repl_id
    /tmpag/hiveag/replag/31177ff7-a40f-4f67-a613-3b64ebe3bb31 2960
  6. Carga incremental en el clúster secundario.

    repl load tpcds_orc from '/tmpag/hiveag/replag/31177ff7-a40f-4f67-a613-3b64ebe3bb31';
    
  7. Compruebe el estado REPL en el clúster secundario.

    repl status tpcds_orc;
    
    last_repl_id
    2960

Pasos siguientes

Para más información sobre los elementos que se describen en este artículo, consulte: