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:
Dari browser web, arahkan ke
https://CLUSTERNAME.azurehdinsight.net
, di manaCLUSTERNAME
merupakan nama kluster Anda.Dengan menggunakan daftar di sebelah kiri, pilih area layanan yang ingin Anda ubah. Contohnya, HDFS. Di area tengah, pilih tab Konfigurasi.
Dengan menggunakan entri Filter..., masukkan opts. Hanya item yang berisi teks ini yang ditampilkan.
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: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.
Setelah perubahan diterapkan, ikon Hidupkan ulang diperlukan muncul di samping satu atau beberapa layanan.
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.
Setelah Anda mengaktifkan mode pemeliharaan, gunakan tombol Hidupkan Ulang untuk layanan ke Hidupkan Ulang Semua yang Terdampak
Catatan
Entri untuk tombol Hidupkan Ulang mungkin berbeda untuk layanan lain.
Setelah layanan dihidupkan ulang, gunakan tombol Tindakan Layanan untuk Mematikan Mode Pemeliharaan. Ambari ini untuk melanjutkan pemantauan peringatan untuk layanan.