Bagikan melalui


Mengaktifkan pembuangan timbunan untuk layanan Apache Hadoop pada HDInsight berbasis Linux

Pembuangan timbunan berisi rekam jepret dari memori aplikasi, termasuk nilai variabel pada saat dump dibuat. Jadi mereka berguna untuk mendiagnosis masalah yang terjadi pada run-time.

Layanan

Anda dapat mengaktifkan pembuangan timbunan untuk layanan berikut:

  • Apache hcatalog - tempelton
  • Apache hive - hiveserver2, metastore, derbyserver
  • mapreduce - jobhistoryserver
  • Apache yarn - resourcemanager, nodemanager, timelineserver
  • Apache hdfs - datanode, secondarynamenode, namenode

Anda juga dapat mengaktifkan pembuangan timbunan untuk memetakan dan mengurangi proses yang dijalankan oleh HDInsight.

Memahami konfigurasi heap dump

Pembuangan timbunan diaktifkan dengan meneruskan opsi (kadang-kadang dikenal sebagai opt, atau parameter) ke JVM ketika layanan dimulai. Untuk sebagian besar layanan Apache Hadoop, Anda dapat memodifikasi skrip shell yang digunakan untuk memulai layanan untuk meneruskan opsi ini.

Di setiap skrip, ada ekspor untuk *_OPTS, yang berisi opsi yang diteruskan ke JVM. Misalnya, dalam skrip hadoop-env.sh, baris yang dimulai dengan export HADOOP_NAMENODE_OPTS= berisi opsi untuk layanan NameNode.

Memetakan dan mengurangi memiliki sedikit perbedaan, karena operasi ini adalah proses turunan dari layanan MapReduce. Setiap proses pemetaan atau pengurangan berjalan dalam kontainer turunan, dan ada dua entri yang berisi opsi JVM. Keduanya terkandung dalam mapred-site.xml:

  • mapreduce.admin.map.child.java.opts
  • mapreduce.admin.reduce.child.java.opts

Catatan

Sebaiknya gunakan Apache Ambari untuk memodifikasi skrip dan mapred-site.xml, karena Ambari menangani perubahan replikasi melintasi simpul di kluster. Lihat bagian Menggunakan Apache Ambari untuk langkah-langkah tertentu.

Mengaktifkan pembuangan timbunan

Opsi berikut mengaktifkan pembuangan timbunan saat OutOfMemoryError terjadi:

-XX:+HeapDumpOnOutOfMemoryError

+ menunjukkan bahwa opsi ini diaktifkan. Default dinonaktifkan.

Peringatan

Pembuangan timbunan tidak diaktifkan untuk layanan Hadoop pada HDInsight secara default, karena file cadangan bisa menjadi besar. Jika Anda mengaktifkannya untuk pemecahan masalah, ingatlah untuk menonaktifkannya setelah Anda mereproduksi masalah dan mengumpulkan file cadangan.

Lokasi cadangan

Lokasi default untuk file cadangan adalah direktori kerja saat ini. Anda dapat mengontrol tempat file disimpan menggunakan opsi berikut:

-XX:HeapDumpPath=/path

Contohnya, menggunakan -XX:HeapDumpPath=/tmp penyebab cadangan disimpan di direktori /tmp.

Skrip

Anda juga dapat memicu skrip saat OutOfMemoryError terjadi. Contohnya, memicu pemberitahuan sehingga Anda tahu bahwa eror telah terjadi. Gunakan opsi berikut untuk memicu skrip pada OutOfMemoryError:

-XX:OnOutOfMemoryError=/path/to/script

Catatan

Karena Apache Hadoop adalah sistem terdistribusi, skrip apa pun yang digunakan harus ditempatkan pada semua simpul di kluster tempat layanan berjalan.

Skrip juga harus berada di lokasi yang dapat diakses oleh akun yang dijalankan layanan, dan harus memberikan izin eksekusi. Contohnya, Anda mungkin ingin menyimpan skrip di /usr/local/bin dan menggunakan chmod go+rx /usr/local/bin/filename.sh untuk mengizinkan membaca dan menjalankan izin.

Menggunakan Apache Ambari

Untuk mengubah konfigurasi untuk layanan, gunakan langkah-langkah berikut:

  1. Dari browser web, arahkan ke https://CLUSTERNAME.azurehdinsight.net, di mana CLUSTERNAME merupakan nama kluster Anda.

  2. Dengan menggunakan daftar di sebelah kiri, pilih area layanan yang ingin Anda ubah. Contohnya, HDFS. Di area tengah, pilih tab Konfigurasi.

    Image of Ambari web with HDFS Configs tab selected.

  3. Dengan menggunakan entri Filter..., masukkan opts. Hanya item yang berisi teks ini yang ditampilkan.

    Apache Ambari config filtered list.

  4. Temukan entri *_OPTS untuk layanan yang ingin Anda aktifkan heap dump-nya, dan tambahkan opsi yang ingin Anda aktifkan. Pada gambar berikut, saya telah menambahkan -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ ke entri HADOOP_NAMENODE_OPTS:

    Apache Ambari hadoop-namenode-opts.

    Catatan

    Ketika mengaktifkan pembuangan timbunan untuk memetakan atau mengurangi proses turunan, cari bidang bernama mapreduce.admin.map.child.java.opts dan mapreduce.admin.reduce.child.java.opts.

    Gunakan tombol Simpan untuk menyimpan perubahan. Anda dapat memasukkan catatan singkat yang menjelaskan perubahan.

  5. Setelah perubahan diterapkan, ikon Hidupkan ulang diperlukan muncul di samping satu atau beberapa layanan.

    restart required icon and restart button.

  6. Pilih setiap layanan yang memerlukan hidupkan ulang, dan gunakan tombol Tindakan Layanan untuk Menyalakan Mode Pemeliharaan. Mode pemeliharaan mencegah pemberitahuan yang dihasilkan dari layanan saat Anda menghidupkan ulang.

    Turn on hdi maintenance mode menu.

  7. Setelah Anda mengaktifkan mode pemeliharaan, gunakan tombol Hidupkan Ulang untuk layanan ke Hidupkan Ulang Semua yang Terdampak

    Apache Ambari Restart All Affected entry.

    Catatan

    Entri untuk tombol Hidupkan Ulang mungkin berbeda untuk layanan lain.

  8. Setelah layanan dihidupkan ulang, gunakan tombol Tindakan Layanan untuk Mematikan Mode Pemeliharaan. Ambari ini untuk melanjutkan pemantauan peringatan untuk layanan.