Tous les produits
Search
Centre de documentation

E-MapReduce:FAQ

Dernière mise à jour :Aug 09, 2026

Cette rubrique traite des problèmes courants rencontrés lors de l'exécution d'Apache Druid sur E-MapReduce (EMR), notamment les échecs d'indexation et les erreurs d'exécution fréquentes.

Résolution des problèmes d'indexation

Pour diagnostiquer un échec d'indexation, suivez ces étapes en procédant de la couche externe vers l'interne.

Indexation par lots

  1. Exécutez la commande curl et vérifiez sa sortie. Si celle-ci affiche une erreur ou reste vide, contrôlez le format de votre fichier d'entrée. Pour inspecter la réponse API brute, ajoutez l'indicateur -v à la commande curl.

  2. Ouvrez la page Overlord et vérifiez l'état d'exécution de la tâche. En cas d'échec, consultez les journaux directement sur cette page.

  3. Si aucun journal n'apparaît sur la page Overlord, ouvrez la page YARN et vérifiez la génération d'une tâche d'indexation. Cette étape s'applique aux tâches basées sur Hadoop.

  4. Si la cause reste indéterminée, connectez-vous au cluster EMR Druid et examinez le journal Overlord :

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

    Pour un cluster haute disponibilité (HA), vérifiez l'Overlord ayant reçu la soumission de la tâche.

  5. Si MiddleManager a renvoyé un échec après soumission de la tâche, identifiez le nœud de travail assigné dans Overlord, connectez-vous à ce nœud et examinez le journal MiddleManager :

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

Indexation Tranquility en temps réel

Vérifiez d'abord le journal Tranquility pour confirmer la réception ou le rejet des messages. Appliquez ensuite les étapes 2 à 5 de la procédure d'indexation par lots décrite ci-dessus.

La plupart des erreurs d'indexation relèvent de deux catégories :

  • Erreurs de configuration du cluster : paramètres mémoire JVM, connectivité inter-clusters, accès en mode haute sécurité et principaux Kerberos.

  • Erreurs de tâche : format du fichier de description, analyse des données d'entrée et autres paramètres tels que ioConfig.

Erreurs courantes et correctifs

Échec du démarrage du service

Cause : La mémoire disponible sur la machine est insuffisante pour les paramètres JVM configurés pour le composant Druid (par exemple, une taille de tas importante ou un nombre élevé de threads sur une machine à mémoire limitée).

Correctif : Consultez les journaux du composant pour identifier le paramètre surdimensionné, puis réduisez-le. La mémoire JVM se compose de la mémoire de tas et de la mémoire directe. Pour obtenir des conseils d'optimisation, consultez la section FAQ sur les performances d'Apache Druid.

Échec d'une tâche YARN avec une erreur de conflit JAR

Erreur :

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;

Cause : Conflit entre les dépendances de Druid et les fichiers JAR déjà présents sur le cluster Hadoop.

Correctif : Ajoutez l'une des propriétés suivantes à la section tuningConfig de la configuration de la tâche d'indexation :

Propriété Effet
mapreduce.job.classloader: "true" Permet aux tâches MapReduce d'utiliser des chargeurs de classes isolés
mapreduce.job.user.classpath.first: "true" Donne la priorité aux packages JAR utilisateur dans MapReduce

Sélectionnez l'un de ces deux éléments de configuration. Exemple :

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

Pour plus d'informations, consultez la section Apache Druid : Utilisation de différentes versions de Hadoop.

La tâche Reduce ne peut pas créer le répertoire de segments

Correctif : Vérifiez la configuration du stockage profond, en particulier les champs type et directory :

  • **Si type est défini sur local** : Vérifiez l'existence du répertoire et les autorisations d'écriture du compte EMR Druid.

  • **Si type est défini sur hdfs** : Indiquez le chemin sous forme d'URI HDFS complet, par exemple hdfs://<hdfs_master>:9000/. Pour hdfs_master, utilisez l'adresse IP. Si vous devez utiliser un nom d'hôte, indiquez le nom complet, par exemple emr-header-1.cluster-xxxxxxxx plutôt que emr-header-1.

Pour l'indexation par lots Hadoop sur un cluster EMR Druid autonome, le stockage profond doit être défini sur "hdfs". L'utilisation de "local" place la tâche MapReduce dans un état indéfini, car le cluster YARN distant ne peut pas écrire dans un chemin local sur une autre machine.

Échec de création du répertoire après 10 000 tentatives

Cause : Le chemin java.io.tmp spécifié dans la configuration JVM n'existe pas.

Correctif : Créez le répertoire et assurez-vous que le compte EMR Druid dispose des autorisations nécessaires pour y accéder.

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

Cause : Incompatibilité de la connexion ZooKeeper entre Druid et Tranquility.

Correctif : Assurez-vous que les deux services utilisent la même chaîne de connexion ZooKeeper.

Le chemin ZooKeeper par défaut pour EMR Druid est /druid ; la valeur zookeeper.connect de votre configuration Tranquility doit donc inclure /druid.

Si vous utilisez Tranquility avec Kafka, deux paramètres ZooKeeper distincts existent :

Paramètre Se connecte à
zookeeper.connect ZooKeeper du cluster EMR Druid
kafka.zookeeper.connect ZooKeeper du cluster Kafka

Ces deux clusters ZooKeeper peuvent différer. Vérifiez que chaque paramètre pointe vers le cluster approprié.

MiddleManager ne trouve pas com.hadoop.compression.lzo.LzoCodec

Cause : Le cluster EMR Hadoop est configuré avec la compression LZO, mais les fichiers requis sont absents du répertoire de dépendances de Druid.

Correctif : Copiez le fichier JAR LZO et sa bibliothèque native depuis HADOOP_HOME/lib sur le cluster EMR vers le répertoire druid.extensions.hadoopDependenciesDir de Druid (par défaut : DRUID_HOME/hadoop-dependencies).

L'indexation échoue avec une IOException GPLNativeCodeLoader

Erreur :

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:?]

Cause : Le chemin java.io.tmp n'existe pas.

Correctif : Créez le répertoire et assurez-vous que le compte EMR Druid dispose des autorisations nécessaires pour y accéder.