Todos los productos
Search
Centro de documentos

E-MapReduce:FAQ

Última actualización: Sep 09, 2026

Este tema cubre los problemas comunes que puede encontrar al ejecutar Apache Druid en E-MapReduce (EMR), incluidos los fallos de indexación y los errores de tiempo de ejecución frecuentes.

Solucionar fallos de indexación

Siga estos pasos para diagnosticar un fallo de indexación, comenzando desde la capa externa y avanzando hacia la interna.

Indexación por lotes

  1. Ejecute el comando curl y compruebe su salida. Si la salida muestra un error o no muestra nada, compruebe el formato del archivo de entrada. Para inspeccionar la respuesta sin procesar de la API, agregue la opción -v al comando curl.

  2. Abra la página Overlord y compruebe el estado de ejecución del trabajo. Si el trabajo finalizó con errores, consulte los registros directamente en esa página.

  3. Si no aparecen registros en la página Overlord, abra la página YARN y compruebe si se generó un trabajo de indexación. Este paso se aplica a los trabajos basados en Hadoop.

  4. Si aún no puede identificar la causa, inicie sesión en el clúster EMR Druid y compruebe el registro de Overlord:

    /mnt/disk1/log/druid/overlord-emr-header-1.cluster-xxxx.log

    En un clúster de alta disponibilidad (HA), compruebe el Overlord que recibió el envío del trabajo.

  5. Si el trabajo se envió a MiddleManager pero MiddleManager devolvió un error, busque en Overlord el nodo de trabajo asignado al trabajo, inicie sesión en ese nodo y compruebe el registro de MiddleManager:

    /mnt/disk1/log/druid/middleManager-emr-header-1.cluster-xxxx.log

Indexación en tiempo real de Tranquility

Comience por comprobar el registro de Tranquility y confirme si los mensajes se recibieron o se descartaron. Después siga los pasos 2 a 5 del procedimiento de indexación por lotes anterior.

La mayoría de los errores de indexación se dividen en dos categorías:

  • Errores de configuración del clúster: parámetros de memoria de la JVM, conectividad entre clústeres, acceso en modo de alta seguridad y principales de Kerberos.

  • Errores del trabajo: formato del archivo de descripción del trabajo, análisis sintáctico de los datos de entrada y otras configuraciones del trabajo, como ioConfig.

Errores comunes y soluciones

Error al iniciar el servicio

Causa: La memoria disponible de la máquina es insuficiente para los parámetros de la JVM configurados para el componente Druid. Por ejemplo, un tamaño del montón grande o una cantidad alta de hilos en una máquina con memoria limitada.

Solución: Compruebe los registros del componente para identificar qué parámetro está sobredimensionado. Después redúzcalo. La memoria de la JVM tiene dos partes: memoria del montón y memoria directa. Para obtener orientación sobre el ajuste, consulte Preguntas frecuentes sobre rendimiento de Apache Druid.

La tarea de YARN falla con un error de conflicto de JAR

Error:

Error: class com.fasterxml.jackson.datatype.guava.deser.HostAndPortDeserializer overrides final method deserialize.(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;)Ljava/lang/Object;

Causa: Las dependencias de Druid entran en conflicto con archivos JAR que ya están presentes en el clúster Hadoop.

Solución: Agregue una de las propiedades que se muestran a continuación a la sección tuningConfig de la configuración del trabajo de indexación:

Propiedad

Efecto

mapreduce.job.classloader: "true"

Permite que los trabajos de MapReduce usen cargadores de clases independientes

mapreduce.job.user.classpath.first: "true"

Da prioridad a MapReduce para usar sus paquetes JAR

Seleccione uno de estos dos elementos de configuración. Ejemplo:

"tuningConfig": {
    "jobProperties": {
        "mapreduce.job.classloader": "true"
    }
}

Para obtener más información, consulte Apache Druid: trabajar con diferentes versiones de Hadoop.

La tarea Reduce no puede crear el directorio de segmentos

Solución: Compruebe la configuración de almacenamiento profundo, específicamente los campos type y directory:

  • **Si type es local**: Compruebe que el directorio existe y que la cuenta de EMR Druid tiene permiso de escritura.

  • **Si type es hdfs**: Escriba la ruta como un URI HDFS completo; por ejemplo, hdfs://<hdfs_master>:9000/. Para hdfs_master, use la dirección IP. Si debe usar un nombre de host, use el nombre de host completo; por ejemplo, emr-header-1.cluster-xxxxxxxx en lugar de emr-header-1.

Para la indexación por lotes de Hadoop en un clúster EMR Druid independiente, establezca el almacenamiento profundo en "hdfs". Si usa "local", el trabajo de MapReduce entra en un estado indefinido porque el clúster YARN remoto no puede escribir en una ruta local en una máquina diferente.

La creación del directorio finalizó con errores después de 10,000 intentos

Causa: La ruta java.io.tmp especificada en la configuración de la JVM no existe.

Solución: Cree el directorio y asegúrese de que la cuenta de EMR Druid tenga permiso para acceder a él.

com.twitter.finagle.NoBrokersAvailableException: No hosts are available for disco!firehose:druid:overlord

Causa: La cadena de conexión de ZooKeeper de Druid no coincide con la de Tranquility.

Solución: Asegúrese de que ambos servicios usen la misma cadena de conexión de ZooKeeper.

La ruta predeterminada de ZooKeeper para EMR Druid es /druid, por lo que el valor zookeeper.connect de la configuración de Tranquility debe incluir /druid.

Si usa Tranquility con Kafka, existen dos configuraciones separadas de ZooKeeper:

Configuración

Se conecta a

zookeeper.connect

ZooKeeper del clúster EMR Druid

kafka.zookeeper.connect

ZooKeeper del clúster de Kafka

Estos dos clústeres de ZooKeeper pueden ser diferentes. Compruebe que cada configuración apunte al clúster correcto.

MiddleManager no puede encontrar com.hadoop.compression.lzo.LzoCodec

Causa: El clúster EMR Hadoop está configurado con compresión LZO, pero los archivos obligatorios no están en el directorio de dependencias de Druid.

Solución: Copie el JAR de LZO y su biblioteca nativa desde HADOOP_HOME/lib en el clúster EMR al druid.extensions.hadoopDependenciesDir de Druid (predeterminado: DRUID_HOME/hadoop-dependencies).

La indexación falla con GPLNativeCodeLoader IOException

Error:

2018-02-01T09:00:32,647 ERROR [task-runner-0-priority-0] com.hadoop.compression.lzo.GPLNativeCodeLoader - could not unpack the binaries
  java.io.IOException: No such file or directory
          at java.io.UnixFileSystem.createFileExclusively(Native Method) ~[?:1.8.0_151]
          at java.io.File.createTempFile(File.java:2024) ~[?:1.8.0_151]
          at java.io.File.createTempFile(File.java:2070) ~[?:1.8.0_151]
          at com.hadoop.compression.lzo.GPLNativeCodeLoader.unpackBinaries(GPLNativeCodeLoader.java:115) [hadoop-lzo-0.4.21-SNAPSHOT.jar:?]

Causa: La ruta java.io.tmp no existe.

Solución: Cree el directorio y asegúrese de que la cuenta de EMR Druid tenga permiso para acceder a él.