All Products
Search
Document Center

E-MapReduce:FAQ

Last Updated:Mar 27, 2026

Topik ini mencakup masalah umum yang mungkin Anda temui saat menjalankan Apache Druid di E-MapReduce (EMR), termasuk kegagalan pengindeksan dan error runtime yang sering muncul.

Atasi kegagalan pengindeksan

Ikuti langkah-langkah berikut untuk mendiagnosis kegagalan pengindeksan, mulai dari lapisan terluar menuju ke dalam.

Pengindeksan Batch

  1. Jalankan perintah curl dan periksa output-nya. Jika output menampilkan error atau tidak ada sama sekali, periksa format file input Anda. Untuk memeriksa respons API mentah, tambahkan flag -v ke perintah curl.

  2. Buka halaman Overlord dan periksa status eksekusi pekerjaan. Jika pekerjaan gagal, lihat log langsung di halaman tersebut.

  3. Jika tidak ada log yang muncul di halaman Overlord, buka halaman YARN dan periksa apakah pekerjaan indeks telah dibuat. Langkah ini berlaku untuk pekerjaan berbasis Hadoop.

  4. Jika Anda masih belum dapat mengidentifikasi penyebabnya, masuk ke kluster EMR Druid dan periksa log Overlord:

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

    Untuk kluster dengan Ketersediaan tinggi (HA), periksa Overlord yang menerima pengiriman pekerjaan tersebut.

  5. Jika pekerjaan telah dikirim ke MiddleManager tetapi MiddleManager mengembalikan kegagalan, temukan node pekerja yang ditugaskan untuk pekerjaan tersebut di Overlord, masuk ke node tersebut, dan periksa log MiddleManager:

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

Pengindeksan Real-time Tranquility

Mulailah dengan memeriksa log Tranquility untuk memastikan apakah pesan diterima atau dibuang. Kemudian ikuti langkah 2 hingga 5 dari prosedur pengindeksan batch di atas.

Sebagian besar error pengindeksan termasuk dalam dua kategori:

  • Error konfigurasi kluster: Parameter memori JVM, konektivitas lintas kluster, akses mode keamanan tinggi, dan principal Kerberos.

  • Error pekerjaan: Format file deskripsi pekerjaan, penguraian data masukan, dan pengaturan lain di tingkat pekerjaan seperti ioConfig.

Error umum dan solusinya

Gagal startup layanan

Penyebab: Memori yang tersedia pada mesin tidak mencukupi untuk parameter JVM yang dikonfigurasi pada komponen Druid — misalnya, ukuran heap yang besar atau jumlah thread yang tinggi pada mesin dengan memori terbatas.

Solusi: Periksa log komponen untuk mengidentifikasi parameter mana yang berlebihan, lalu kurangi nilainya. Memori JVM terdiri dari dua bagian: heap memory dan direct memory. Untuk panduan penyetelan, lihat Apache Druid Performance FAQ.

Tugas YARN gagal dengan error konflik 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;

Penyebab: Dependensi Druid bentrok dengan file JAR yang sudah ada di kluster Hadoop.

Solusi: Tambahkan salah satu properti berikut ke bagian tuningConfig pada konfigurasi pekerjaan pengindeksan:

Properti Efek
mapreduce.job.classloader: "true" Memungkinkan pekerjaan MapReduce menggunakan class loader mandiri
mapreduce.job.user.classpath.first: "true" Memberikan prioritas kepada MapReduce untuk menggunakan paket JAR Anda

Anda dapat memilih salah satu dari dua item konfigurasi ini. Contoh:

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

Untuk informasi lebih lanjut, lihat Apache Druid: Working with different versions of Hadoop.

Tugas Reduce tidak dapat membuat direktori segments

Solusi: Periksa konfigurasi deep storage Anda — khususnya bidang type dan directory:

  • Jika type bernilai local: Pastikan direktori tersebut ada dan akun EMR Druid memiliki izin menulis.

  • Jika type bernilai hdfs: Tulis path sebagai URI HDFS lengkap, misalnya hdfs://<hdfs_master>:9000/. Untuk hdfs_master, gunakan alamat IP. Jika Anda harus menggunakan hostname, gunakan hostname lengkap — misalnya, emr-header-1.cluster-xxxxxxxx bukan emr-header-1.

Untuk pengindeksan batch Hadoop pada kluster EMR Druid standalone, deep storage harus diatur ke "hdfs". Menggunakan "local" menyebabkan pekerjaan MapReduce masuk ke kondisi tidak terdefinisi karena kluster YARN remote tidak dapat menulis ke path lokal pada mesin yang berbeda.

Gagal membuat direktori dalam 10.000 percobaan

Penyebab: Path java.io.tmp yang ditentukan dalam konfigurasi JVM tidak ada.

Solusi: Buat direktori tersebut dan pastikan akun EMR Druid memiliki izin untuk mengaksesnya.

com.twitter.finagle.NoBrokersAvailableException: Tidak ada host yang tersedia untuk disco!firehose:druid:overlord

Penyebab: Ketidaksesuaian koneksi ZooKeeper antara Druid dan Tranquility.

Solusi: Pastikan kedua layanan menggunakan string koneksi ZooKeeper yang sama.

Path ZooKeeper default untuk EMR Druid adalah /druid, sehingga nilai zookeeper.connect dalam konfigurasi Tranquility Anda harus menyertakan /druid.

Jika Anda menggunakan Tranquility dengan Kafka, terdapat dua pengaturan ZooKeeper terpisah:

Pengaturan Terhubung ke
zookeeper.connect ZooKeeper kluster EMR Druid
kafka.zookeeper.connect ZooKeeper kluster Kafka

Kedua kluster ZooKeeper ini mungkin berbeda. Pastikan setiap pengaturan mengarah ke kluster yang benar.

MiddleManager tidak dapat menemukan com.hadoop.compression.lzo.LzoCodec

Penyebab: Kluster Hadoop EMR dikonfigurasi dengan kompresi LZO, tetapi file yang diperlukan tidak berada di direktori dependensi Druid.

Solusi: Salin JAR LZO dan library native-nya dari HADOOP_HOME/lib pada kluster EMR ke druid.extensions.hadoopDependenciesDir Druid (default: DRUID_HOME/hadoop-dependencies).

Pengindeksan gagal dengan 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:?]

Penyebab: Path java.io.tmp tidak ada.

Solusi: Buat direktori tersebut dan pastikan akun EMR Druid memiliki izin untuk mengaksesnya.