Berikut adalah jawaban atas beberapa pertanyaan umum terkait YARN.
FAQ tentang kluster:
Bagaimana cara memeriksa apakah layanan ResourceManager normal?
Apa yang harus dilakukan jika modifikasi konfigurasi YARN tidak berlaku?
FAQ tentang manajemen grup sumber daya atau antrian:
FAQ tentang manajemen log komponen:
FAQ tentang komponen:
FAQ tentang ResourceManager:
FAQ tentang NodeManager:
FAQ tentang antarmuka web atau API RESTful:
FAQ tentang Timeline Server:
Apa yang dimaksud dengan restart kluster stateful?
Restart kluster stateful mencakup restart ResourceManager dan restart NodeManager. ResourceManager mempertahankan informasi dasar serta status aplikasi, sedangkan NodeManager mempertahukan informasi dan status kontainer yang sedang berjalan. ResourceManager dan NodeManager secara terus-menerus menyinkronkan status mereka ke sistem penyimpanan eksternal seperti ZooKeeper, LevelDB, dan Hadoop Distributed File System (HDFS). Setelah di-restart, status ResourceManager dan NodeManager dapat dimuat ulang dan dipulihkan secara otomatis, sehingga memastikan bahwa status aplikasi dan kontainer juga pulih secara otomatis setelah peningkatan atau restart kluster. Dalam sebagian besar kasus, peningkatan atau restart kluster tidak terdeteksi oleh aplikasi dan kontainer.
Bagaimana cara mengaktifkan high availability (HA) ResourceManager?
Periksa atau konfigurasikan parameter pada tab Configure di halaman layanan YARN kluster melalui konsol E-MapReduce (EMR). Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi |
yarn.resourcemanager.ha.enabled | Menentukan apakah akan mengaktifkan ResourceManager HA. Atur nilainya menjadi true untuk mengaktifkan ResourceManager HA. Nilai default: false. |
yarn.resourcemanager.ha.automatic-failover.enabled | Menentukan apakah akan mengaktifkan failover otomatis untuk ResourceManager. Nilai default: true. |
yarn.resourcemanager.ha.automatic-failover.embedded | Menentukan apakah akan mengaktifkan failover otomatis tertanam untuk ResourceManager. Nilai default: true. |
yarn.resourcemanager.ha.curator-leader-elector.enabled | Menentukan apakah akan menggunakan Curator. Atur nilainya menjadi true untuk menggunakan Curator. Nilai default: false. |
yarn.resourcemanager.ha.automatic-failover.zk-base-path | Jalur tempat informasi tentang pemimpin disimpan. Gunakan nilai default /yarn-leader-electionleader-elector. |
Bagaimana cara mengonfigurasi pembaruan panas?
Operasi pada bagian ini hanya dapat dilakukan di Hadoop 3.2.0 atau versi lebih baru.
Konfigurasikan parameter utama.
Anda dapat memeriksa atau mengonfigurasi parameter terkait pembaruan panas pada tab Configure di halaman layanan YARN kluster melalui konsol EMR. Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Nilai yang direkomendasikan
yarn.scheduler.configuration.store.class
Tipe penyimpanan cadangan. Jika Anda mengatur parameter ini ke fs, sistem file digunakan sebagai penyimpanan cadangan.
fs
yarn.scheduler.configuration.max.version
Jumlah maksimum file konfigurasi yang dapat disimpan dalam sistem file. File konfigurasi yang berlebih akan dihapus secara otomatis jika jumlah file konfigurasi melebihi nilai parameter ini.
100
yarn.scheduler.configuration.fs.path
Jalur tempat file capacity-scheduler.xml disimpan.
Jika Anda tidak mengonfigurasi parameter ini, jalur penyimpanan akan dibuat secara otomatis. Jika tidak ada awalan yang ditentukan, jalur relatif dari sistem file default digunakan sebagai jalur penyimpanan.
/yarn/<Nama Kluster>/scheduler/conf
PentingGanti <Nama Kluster> dengan nama kluster spesifik. Beberapa kluster tempat layanan YARN diterapkan mungkin menggunakan penyimpanan terdistribusi yang sama.
Lihat konfigurasi file capacity-scheduler.xml.
Metode 1 (API RESTful): Akses URL dalam format berikut: http://<rm-address>/ws/v1/cluster/scheduler-conf.
Metode 2 (HDFS): Akses jalur konfigurasi ${yarn.scheduler.configuration.fs.path}/capacity-scheduler.xml.<timestamp> untuk melihat konfigurasi file capacity-scheduler.xml. <timestamp> menunjukkan waktu pembuatan file capacity-scheduler.xml. File capacity-scheduler.xml dengan nilai timestamp terbesar adalah file konfigurasi terbaru.
Perbarui konfigurasi.
Sebagai contoh, Anda dapat memodifikasi parameter yarn.scheduler.capacity.maximum-am-resource-percent dan menghapus parameter yarn.scheduler.capacity.xxx. Untuk menghapus parameter, cukup hapus nilai bidang parameter tersebut.
curl -X PUT -H "Content-type: application/json" 'http://<rm-address>/ws/v1/cluster/scheduler-conf' -d ' { "global-updates": [ { "entry": [{ "key":"yarn.scheduler.capacity.maximum-am-resource-percent", "value":"0.2" },{ "key":"yarn.scheduler.capacity.xxx" }] } ] }'
Bagaimana cara menangani distribusi sumber daya yang tidak merata di antara aplikasi dalam antrian?
Operasi pada bagian ini hanya dapat dilakukan di Hadoop 2.8.0 atau versi lebih baru.
Dalam banyak kasus, pekerjaan besar mendominasi sumber daya dalam antrian, sehingga pekerjaan kecil kesulitan mendapatkan alokasi sumber daya yang memadai. Untuk memastikan distribusi sumber daya yang lebih merata di antara pekerjaan, ikuti langkah-langkah berikut:
Ubah nilai parameter yarn.scheduler.capacity.<queue-path>.ordering-policy dari nilai default fifo menjadi fair untuk antrian tersebut.
CatatanPengatur jadwal First in, first out (FIFO) dan fair scheduler merupakan dua jenis pengatur jadwal dalam YARN.
Anda juga dapat memodifikasi parameter yarn.scheduler.capacity.<queue-path>.ordering-policy.fair.enable-size-based-weight. Nilai default parameter ini adalah false, yang mengurutkan pekerjaan berdasarkan penggunaan sumber daya dalam urutan menaik. Jika parameter ini diatur ke true, pekerjaan akan diurutkan berdasarkan hasil bagi penggunaan sumber daya dibagi dengan permintaan sumber daya dalam urutan menaik.
Aktifkan preemption sumber daya intra-antrian.
Tabel berikut menjelaskan parameter yang digunakan untuk mengontrol preemption sumber daya intra-antrian.
Parameter
Deskripsi
Nilai yang direkomendasikan
yarn.resourcemanager.scheduler.monitor.enable
Menentukan apakah akan mengaktifkan preemption. Parameter ini dikonfigurasi pada tab yarn-site. Parameter lainnya terkait dengan preemption sumber daya antrian dikonfigurasi pada tab capacity-scheduler.
true
yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled
Menentukan apakah akan mengaktifkan preemption sumber daya intra-antrian. Preemption sumber daya inter-antrian diaktifkan secara default dan tidak dapat dinonaktifkan.
true
yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.preemption-order-policy
Kebijakan berdasarkan mana preemption sumber daya intra-antrian dilakukan. Nilai default: userlimit_first.
priority_first
yarn.scheduler.capacity.<queue-path>.disable_preemption
Menentukan apakah akan menonaktifkan preemption sumber daya untuk antrian yang ditentukan. Nilai default: false.
Jika Anda mengatur parameter ini ke true, sumber daya antrian yang ditentukan tidak dapat diambil alih. Jika parameter ini tidak dikonfigurasi untuk antrian anak, antrian anak mewarisi konfigurasi parameter ini dari antrian induk.
true
yarn.scheduler.capacity.<queue-path>.intra-queue-preemption.disable_preemption
Menentukan apakah akan menonaktifkan preemption sumber daya intra-antrian untuk antrian yang ditentukan. Nilai default: false.
Jika Anda mengatur parameter ini ke true, preemption sumber daya intra-antrian dinonaktifkan. Jika parameter ini tidak dikonfigurasi untuk antrian anak, antrian anak mewarisi konfigurasi parameter ini dari antrian induk.
true
Bagaimana cara melihat penggunaan sumber daya antrian?
Anda dapat melihat nilai parameter Used Capacity pada UI web YARN untuk memeriksa penggunaan sumber daya antrian. Parameter Used Capacity menunjukkan persentase sumber daya yang digunakan oleh antrian dibandingkan dengan total sumber daya yang dialokasikan ke antrian tersebut. Persentase penggunaan memori dan jumlah vCores dihitung secara terpisah, dengan nilai tertinggi di antara keduanya digunakan sebagai nilai parameter Used Capacity. Untuk melihat penggunaan sumber daya antrian, ikuti langkah-langkah berikut:
Akses UI web YARN. Untuk informasi lebih lanjut, lihat Akses UI web komponen open source.
Pada halaman All Applications, klik ID pekerjaan yang ingin diperiksa.
Klik antrian yang diinginkan pada baris Queue.
Klik antrian yang diinginkan pada baris Queue. Di bagian Application Queues, tinjau penggunaan sumber daya antrian.

Sejumlah besar file log .out dihasilkan oleh komponen layanan YARN dan tidak dapat dibersihkan secara otomatis. Mengapa?
Penyebab: Beberapa pustaka dependensi dari komponen Hadoop memanggil API logging Java untuk menghasilkan catatan log, namun tidak mendukung rotasi log berbasis Log4j. Output standar kesalahan (stderr) dari komponen daemon dialihkan ke file log
.out. Karena mekanisme pembersihan otomatis tidak tersedia, akumulasi log yang berkepanjangan dapat menyebabkan penyimpanan disk terisi sepenuhnya.Solusi: Gunakan perintah
headdantailbersama dengan informasi timestamp dalam log untuk memeriksa apakah log yang dihasilkan oleh API logging Java memakan ruang penyimpanan yang signifikan. Umumnya, pustaka dependensi menghasilkan log tingkat INFO, yang tidak memengaruhi penggunaan komponen. Untuk mencegah penyimpanan disk terisi, Anda dapat memodifikasi konfigurasi untuk menonaktifkan pembuatan log tingkat INFO.Berikut adalah langkah-langkah untuk menonaktifkan pembuatan log pustaka dependensi Jersey Timeline Server:
Jalankan perintah berikut untuk memantau file log
.outyang relevan dengantimelineserver-di jalur penyimpanan log YARN. Di kluster DataLake, jalurnya adalah/var/log/emr/yarn/, sedangkan di kluster Hadoop, jalurnya adalah/mnt/disk1/log/hadoop-yarn.tail /var/log/emr/yarn/*-hadoop-timelineserver-*.outOutput akan mencakup catatan yang dihasilkan oleh paket com.sun.jersey.

Di node tempat Timeline Server dijalankan, jalankan perintah berikut sebagai root untuk membuat dan mengonfigurasi file guna menonaktifkan pembuatan log Timeline Server. Ini mencegah log tingkat INFO dari pustaka dependensi Jersey diekspor ke file log .out.
sudo su root -c "echo 'com.sun.jersey.level = OFF' > $HADOOP_CONF_DIR/off-logging.properties"Di tab Configure halaman layanan YARN di konsol EMR, temukan parameter
YARN_TIMELINESERVER_OPTS(setara dengan parameteryarn_timelineserver_optsdi kluster Hadoop), dan tambahkan-Djava.util.logging.config.file=off-logging.propertieske nilai parameter untuk menentukan lokasi file konfigurasi yang telah dibuat.
Simpan konfigurasi dan restart Timeline Server agar perubahan diterapkan. Jika Timeline Server dapat dimulai seperti yang diharapkan, dan file log
.outtidak lagi berisi informasi log terkaitcom.sun.jersey, pembuatan log pustaka dependensi Jersey berhasil dinonaktifkan.
Bagaimana cara memeriksa apakah layanan ResourceManager normal?
Gunakan salah satu metode berikut untuk memeriksa status layanan:
Periksa status HA ResourceManager. Dalam kluster HA, pastikan hanya satu proses ResourceManager yang berstatus Aktif. Gunakan salah satu metode berikut untuk memverifikasi apakah nilai bidang haState adalah ACTIVE atau STANDBY, serta apakah nilai bidang haZooKeeperConnectionState adalah CONNECTED. Status HA ResourceManager ditentukan berdasarkan nilai kedua bidang tersebut.
Antarmuka baris perintah (CLI): Jalankan perintah yarn rmadmin -getAllServiceState.
API RESTful: Akses URL dalam format http://<rmAddress>/ws/v1/cluster/info.
Kode sampel

Periksa status aplikasi YARN.
Jalankan perintah berikut untuk memastikan tidak ada aplikasi yang macet dalam status dikirimkan atau diterima:
yarn application -listPeriksa apakah aplikasi baru yang dikirimkan dapat dijalankan dan dihentikan sesuai harapan. Contoh perintah:
hadoop jar <hadoop_home>/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*-tests.jar sleep -m 1 -mt 1000 -r 0Anda dapat menambahkan parameter bernama -Dmapreduce.job.queuename antara sleep dan -m untuk menentukan antrian. Nilai default untuk parameter ini adalah
default.
Bagaimana cara mendapatkan status aplikasi?
Anda dapat melihat informasi berikut terkait aplikasi untuk memeriksa statusnya.
Informasi | Deskripsi |
Informasi dasar | Informasi dasar tentang aplikasi mencakup ID, Pengguna, Nama, Tipe Aplikasi, Status, Antrian, Prioritas Aplikasi, Waktu Mulai, Waktu Selesai, Status Akhir, Kontainer Berjalan, CPU VCores Terlokasi, Memori MB Terlokasikan, dan Diagnostik. Anda dapat melihat informasi dasar tentang aplikasi di salah satu halaman atau menggunakan salah satu metode berikut:
|
Informasi antrian |
|
Log kontainer |
|
Bagaimana cara menangani masalah untuk sebuah aplikasi?
Periksa status aplikasi. Anda dapat membuka halaman detail aplikasi atau memanggil API RESTful untuk melihat status aplikasi. Aplikasi mungkin berada dalam salah satu dari status berikut:
Status aplikasi tidak diketahui. Kemungkinan penyebab:
Aplikasi gagal dan keluar sebelum dikirimkan ke YARN. Dalam hal ini, periksa log pengiriman aplikasi untuk memastikan tidak ada masalah pada komponen klien seperti BRS dan FlowAgent.
Aplikasi tidak dapat terhubung ke ResourceManager. Pastikan titik akhir ResourceManager benar dan koneksi jaringan normal. Jika koneksi jaringan abnormal, kesalahan berikut mungkin muncul di klien:
com.aliyun.emr.flow.agent.common.exceptions.EmrFlowException: ###[E40001,RESOURCE_MANAGER]: Gagal mengakses resource manager, cause: The stream is closed.
NEW_SAVING: Informasi aplikasi sedang ditulis ke penyimpanan status Zookeeper. Kemungkinan alasan aplikasi macet dalam status NEW_SAVING:
Kesalahan terjadi pada layanan ZooKeeper. Periksa apakah layanan ZooKeeper berfungsi dengan baik.
Kesalahan terjadi pada operasi baca atau tulis ZooKeeper. Untuk solusi lebih lanjut, lihat Apa yang harus dilakukan jika ResourceManager tidak dapat beralih secara otomatis dari keadaan Standby ke Active?.
SUBMITTED: Umumnya, aplikasi tidak berada dalam status ini. Namun, jika akuisisi kunci terjadi karena permintaan pembaruan node yang berlebihan di Capacity Scheduler dan menyebabkan pemblokiran, aplikasi mungkin berada dalam status SUBMITTED. Masalah ini sering terjadi di kluster berskala besar. Optimalkan prosedur pemrosesan permintaan untuk menyelesaikan masalah. Untuk informasi lebih lanjut, lihat YARN-9618.
ACCEPTED: Jika aplikasi berada dalam status ini, periksa informasi diagnostik dan pilih solusi berdasarkan pesan kesalahan:
Pesan kesalahan: Batas sumber daya AM antrian terlampaui.
Kemungkinan penyebab: Jumlah sumber daya ApplicationMaster (AM) yang digunakan dan diminta melebihi batas atas sumber daya AM dalam antrian. Penggunaan sumber daya AM harus mematuhi ketidaksamaan berikut: ${Used Application Master Resources} + ${AM Resource Request} < ${Max Application Master Resources}.
Solusi: Tingkatkan batas atas sumber daya AM dalam antrian. Contohnya, atur parameter yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent menjadi 0.5.
Pesan kesalahan: Batas sumber daya AM pengguna terlampaui.
Kemungkinan penyebab: Jumlah sumber daya AM yang digunakan dan diminta melebihi batas atas sumber daya AM dalam antrian untuk pengguna tertentu.
Solusi: Tingkatkan batas atas sumber daya AM dalam antrian untuk pengguna tersebut. Contohnya, modifikasi parameter yarn.scheduler.capacity.<queue-path>.user-limit-factor dan yarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent.
Pesan kesalahan: Kontainer AM diluncurkan, menunggu kontainer AM untuk mendaftar dengan RM.
Kemungkinan penyebab: AM dimulai tetapi inisialisasi belum selesai, misalnya karena koneksi ZooKeeper habis waktu.
Solusi: Lakukan pemecahan masalah lebih lanjut berdasarkan log AM.
Pesan kesalahan: Aplikasi diaktifkan, menunggu sumber daya dialokasikan untuk AM.
Lakukan Langkah 3 untuk menganalisis penyebab sumber daya AM yang tidak memadai.
RUNNING: Jika aplikasi berada dalam status ini, lakukan Langkah 2 untuk memeriksa apakah permintaan sumber daya kontainer lengkap.
FAILED: Jika aplikasi berada dalam status ini, periksa informasi diagnostik dan pilih solusi berdasarkan pesan kesalahan:
Pesan kesalahan: Batas aplikasi sistem maksimum tercapai, tidak dapat menerima pengiriman aplikasi.
Kemungkinan penyebab: Jumlah aplikasi yang berjalan di kluster melebihi batas atas yang ditentukan oleh parameter yarn.scheduler.capacity.maximum-applications. Nilai default parameter ini adalah 10.000.
Solusi: Periksa metrik Java Management Extensions (JMX) untuk memastikan jumlah aplikasi yang berjalan di setiap antrian sesuai dengan harapan. Lakukan pemecahan masalah pada aplikasi yang dikirimkan secara berulang. Jika semua aplikasi berfungsi dengan baik, Anda dapat menetapkan parameter ke nilai yang lebih besar berdasarkan Penggunaan kluster.
Pesan kesalahan: Aplikasi XXX yang dikirimkan oleh pengguna YYY ke antrian tidak dikenal: ZZZ.
Penyebab potensial: Aplikasi dikirimkan ke antrian yang tidak tersedia.
Solusi: Kirim aplikasi ke antrian daun yang valid.
Pesan kesalahan: Aplikasi XXX yang dikirimkan oleh pengguna YYY ke antrian tidak dikenal: ZZZ.
Kemungkinan penyebab: Aplikasi telah dikirim ke antrian induk.
Solusi: Kirim aplikasi ke antrian daun yang ada.
Pesan kesalahan: Antrian XXX telah BERHENTI. Tidak dapat menerima pengiriman aplikasi: YYY.
Kemungkinan penyebab: Aplikasi dikirimkan ke antrian induk.
Solusi: Kirim aplikasi ke antrian daun yang ada.
Pesan kesalahan: Antrian XXX sudah memiliki YYY aplikasi dan tidak dapat menerima pengajuan aplikasi: ZZZ.
Kemungkinan penyebab: Jumlah aplikasi dalam antrian mencapai batas maksimum.
Solusi:
Periksa apakah sejumlah besar aplikasi diajukan berulang kali ke antrian.
Ubah parameter yarn.scheduler.capacity.<queue-path>.maximum-applications.
Pesan kesalahan: Antrian XXX sudah memiliki YYY aplikasi, tidak dapat menerima pengiriman aplikasi: ZZZ.
Kemungkinan penyebab: Jumlah aplikasi dalam antrian untuk seorang pengguna mencapai batas maksimum.
Solusi:
Periksa apakah sejumlah besar aplikasi secara berulang dikirimkan ke antrian untuk pengguna tersebut.
Ubah parameter yarn.scheduler.capacity.<queue-path>.maximum-applications, yarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent, dan yarn.scheduler.capacity.<queue-path>.user-limit-factor.
Verifikasi bahwa alokasi sumber daya YARN belum selesai.
Pada halaman daftar aplikasi, klik ID aplikasi untuk membuka halaman detail aplikasi.
Klik ID percobaan aplikasi pada halaman detail aplikasi untuk membuka halaman detail percobaan aplikasi.
Periksa apakah ada sumber daya dalam keadaan Pending di daftar Total Outstanding Resource Requests. Anda juga dapat memeriksa sumber daya dalam keadaan Pending dengan memanggil RESTful API untuk permintaan tertunda.
Jika tidak ada sumber daya dalam keadaan Pending, maka alokasi sumber daya YARN telah selesai. Keluar dari prosedur pemecahan masalah dan periksa alokasi sumber daya AM.

Jika ada sumber daya dalam keadaan Pending, maka alokasi sumber daya YARN belum selesai. Lanjutkan ke langkah berikutnya.
Periksa batas pada sumber daya.
Periksa sumber daya dalam kluster atau dalam antrian. Contohnya, periksa nilai parameter Effective Max Resource dan Used Resources.
Periksa apakah sumber daya berikut telah sepenuhnya digunakan: sumber daya dalam kluster, sumber daya dalam antrian, atau sumber daya dalam antrian induk.
Periksa apakah sumber daya dari dimensi dalam antrian daun mendekati atau mencapai batas atas.
Jika penggunaan sumber daya dalam kluster mendekati 100%, seperti lebih dari 85%, kecepatan alokasi sumber daya ke aplikasi mungkin menurun. Salah satu alasannya adalah bahwa sebagian besar mesin tidak memiliki sumber daya. Jika sebuah mesin tidak memiliki sumber daya untuk dialokasikan, mesin tersebut akan dicadangkan. Jika jumlah mesin yang dicadangkan mencapai angka tertentu, kecepatan alokasi sumber daya mungkin menurun. Alasan lain yang mungkin adalah ketidakseimbangan antara sumber daya memori dan CPU. Contohnya, beberapa mesin memiliki sumber daya memori yang menganggur tetapi tidak memiliki sumber daya CPU yang menganggur, dan sebaliknya.
Periksa apakah sumber daya berhasil dialokasikan ke sebuah container tetapi container gagal memulai. Di halaman App Attempt pada antarmuka web YARN, Anda dapat melihat jumlah container yang dialokasikan sumber dayanya dan perubahan jumlah container dalam periode waktu singkat. Jika sebuah container gagal memulai, lakukan pemecahan masalah berdasarkan log NodeManager atau log dari container tersebut.
Secara dinamis menyesuaikan tingkat log. Di halaman Tingkat Log dari antarmuka web YARN di http://RM_IP:8088/logLevel, ubah tingkat log untuk parameter org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity menjadi DEBUG. Parameter ini menunjukkan paket dari Capacity Scheduler. Gambar berikut memberikan contohnya.
PentingAnda dapat menyesuaikan tingkat log saat mereproduksi masalah dan mengubah kembali tingkat log ke INFO setelah puluhan detik. Hal ini karena banyak log dapat dihasilkan dalam waktu singkat.
Parameter apa yang menentukan jumlah maksimum sumber daya yang tersedia untuk satu tugas atau kontainer?
Jumlah maksimum sumber daya yang tersedia untuk satu tugas atau kontainer ditentukan oleh parameter penjadwal atau antrian. Tabel berikut menjelaskan parameter tersebut.
Parameter | Deskripsi | Nilai default |
yarn.scheduler.maximum-allocation-mb | Sumber daya memori maksimum yang dapat dijadwalkan di tingkat kluster. Unit: MB. | Sumber daya memori yang tersedia dari grup inti atau tugas node dengan ukuran memori terbesar. Ukuran memori grup node ditentukan saat pembuatan kluster dan sesuai dengan nilai parameter yarn.nodemanager.resource.memory-mb dari grup node dengan memori terbesar. |
yarn.scheduler.maximum-allocation-vcores | Sumber daya CPU maksimum yang dapat dijadwalkan di tingkat kluster. Unit: VCore. | 32. |
yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb | Sumber daya memori maksimum yang dapat dijadwalkan untuk antrian tertentu. Unit: MB. | Secara default, parameter ini tidak dikonfigurasi. Jika dikonfigurasi, pengaturan tingkat kluster akan ditimpa. Parameter ini hanya berlaku untuk antrian tertentu. |
yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores | Sumber daya CPU maksimum yang dapat dijadwalkan untuk antrian tertentu. Unit: VCore. | Secara default, parameter ini tidak dikonfigurasi. Jika dikonfigurasi, pengaturan tingkat kluster akan ditimpa. Parameter ini hanya berlaku untuk antrian tertentu. |
Jika sumber daya yang diminta melebihi sumber daya maksimum yang tersedia untuk satu tugas atau kontainer, pengecualian InvalidResourceRequestException: Invalid resource request… akan dicatat dalam log aplikasi.
Apa yang harus dilakukan jika modifikasi konfigurasi YARN tidak berlaku?
Kemungkinan Penyebab:
Untuk konfigurasi lainnya, komponen terkait belum di-restart.
Untuk konfigurasi pembaruan panas, operasi tertentu yang diperlukan agar konfigurasi berlaku belum dilakukan.
Solusi: Pastikan semua operasi yang diperlukan untuk penerapan konfigurasi telah dilakukan dengan benar.
File konfigurasi
Kategori
Operasi selanjutnya
capacity-scheduler.xml
fair-scheduler.xml
Konfigurasi penjadwal
Lakukan operasi refresh_queues pada ResourceManager. Konfigurasi ini adalah konfigurasi pembaruan panas.
yarn-env.sh
yarn-site.xml
mapred-env.sh
mapred-site.xml
Konfigurasi komponen YARN
Mulai ulang komponen yang terkait dengan konfigurasi. Contohnya:
Mulai ulang ResourceManager setelah Anda memodifikasi parameter YARN_RESOURCEMANAGER_HEAPSIZE di file yarn-env.sh atau parameter yarn.resourcemanager.nodes.exclude-path di file yarn-site.xml.
Mulai ulang NodeManager setelah Anda memodifikasi parameter YARN_NODEMANAGER_HEAPSIZE di file yarn-env.sh atau parameter yarn.nodemanager.log-dirs di file yarn-site.xml.
Mulai ulang MRHistoryServer setelah Anda memodifikasi parameter MAPRED_HISTORYSERVER_OPTS di file mapred-env.sh atau parameter mapreduce.jobhistory.http.policys di file mapred-site.xml.
Apa yang harus dilakukan jika pesan kesalahan berikut dilaporkan untuk pengecualian yang terjadi pada klien aplikasi: Exception while invoking getClusterNodes of class ApplicationClientProtocolPBClientImpl over rm2 after 1 fail over attempts. Trying to fail over immediately?
Deskripsi Masalah: ResourceManager aktif tidak dapat diakses. Log ResourceManager mencatat informasi pengecualian berikut: WARN org.apache.hadoop.ipc.Server: Header atau versi salah dari 10.33.**.**:53144 got version 6 expected version 9.
Penyebab: Versi Hadoop yang lebih lama digunakan. Versi remote procedure call (RPC) pada klien aplikasi tidak kompatibel dengan versi Hadoop.
Solusi: Gunakan versi Hadoop yang kompatibel dengan versi RPC klien aplikasi.
Apa yang harus dilakukan jika ResourceManager tidak dapat beralih secara otomatis dari keadaan Standby ke keadaan Aktif?
Anda dapat menggunakan salah satu metode berikut untuk memecahkan masalah:
Periksa apakah parameter yang digunakan untuk mengaktifkan pemulihan status otomatis dikonfigurasi dengan benar. Parameter tersebut harus dikonfigurasi sesuai dengan tabel berikut.
Parameter
Deskripsi
yarn.resourcemanager.ha.enabled
Atur nilainya menjadi true.
yarn.resourcemanager.ha.automatic-failover.enabled
Atur nilainya menjadi true.
yarn.resourcemanager.ha.automatic-failover.embedded
Atur nilainya menjadi true.
Jika masalah tetap ada setelah Anda mengatur parameter sebelumnya menjadi true, gunakan salah satu metode berikut untuk memecahkan masalah lebih lanjut:
Periksa apakah layanan ZooKeeper berfungsi normal.
Periksa apakah data yang dibaca oleh klien ZooKeeper (ResourceManager) melebihi batas atas buffer ResourceManager.
Deskripsi masalah: Log ResourceManager berisi informasi pengecualian berikut: Zookeeper error len*** is out of range! atau Unreasonable length = ***.
Solusi: Di tab yarn-env pada halaman layanan YARN kluster di konsol EMR, atur parameter yarn_resourcemanager_opts menjadi -Djute.maxbuffer=4194304. Kemudian, mulai ulang ResourceManager.
Periksa apakah data yang ditulis oleh server ZooKeeper melebihi batas atas buffer server ZooKeeper.
Deskripsi masalah: Log ZooKeeper berisi informasi pengecualian berikut: Exception causing close of session 0x1000004d5701b6a: Len error ***.
Solusi: Tambahkan parameter -Djute.maxbuffer= atau perbarui konfigurasi parameter -Djute.maxbuffer= untuk setiap node layanan ZooKeeper. Anda dapat mengonfigurasi parameter ini untuk meningkatkan batas atas buffer. Unit: byte.
Periksa apakah node ZooKeeper yang ditandai dengan flag ephemeral dan dipilih sebagai pemimpin oleh ResourceManagers ditempati oleh sesi lain dan tidak dilepaskan. Lakukan pemeriksaan ini jika tidak ada informasi pengecualian yang terkandung dalam log ResourceManager atau ZooKeeper. Anda dapat menjalankan perintah stat pada node ZooKeeper yang ditandai dengan flag ephemeral di ZooKeeper-cli untuk memeriksa apakah node ZooKeeper tersebut ditempati oleh sesi lain dan tidak dilepaskan. ${yarn.resourcemanager.zk-state-store.parent-path}/${yarn.resourcemanager.cluster-id}/ActiveStandbyElectorLock adalah jalur konfigurasi node ZooKeeper. Masalah ini mungkin disebabkan oleh masalah yang tidak diketahui dari metode pemilihan pemimpin default atau oleh masalah di ZooKeeper.
Kami menyarankan Anda memodifikasi metode pemilihan pemimpin. Di tab yarn-site, Anda dapat menambahkan parameter bernama yarn.resourcemanager.ha.curator-leader-elector.enabled dan mengatur parameternya menjadi true. Jika parameter sudah dikonfigurasi, pastikan nilai parameternya adalah true. Kemudian, mulai ulang ResourceManager.
Apa yang harus dilakukan jika terjadi masalah OOM di ResourceManager?
Masalah OOM (Out of Memory) dapat dikategorikan ke dalam beberapa jenis. Identifikasi jenis masalah berdasarkan log ResourceManager. Bagian ini menjelaskan jenis, penyebab potensial, dan solusi untuk masalah OOM.
Pesan kesalahan: Java heap space, GC overhead limit exceeded, atau FullGC (dilaporkan berulang kali)
Penyebab:
Penyebab langsung: Memori heap Java Virtual Machine (JVM) tidak mencukupi. Objek internal dalam proses ResourceManager tidak memperoleh sumber daya yang cukup. Beberapa putaran pengumpulan sampah penuh (GC) dilakukan untuk memulihkan objek yang tidak valid sebelum pengecualian OOM dilemparkan. Namun, objek tersebut tetap tidak mendapatkan memori heap yang cukup untuk alokasi sumber daya.
Analisis: ResourceManager memiliki banyak objek tetap yang tidak dapat diklaim oleh JVM, seperti kluster, antrian, aplikasi, kontainer, dan node. Memori heap yang digunakan oleh objek-objek ini meningkat seiring dengan bertambahnya ukuran kluster. Oleh karena itu, ResourceManager membutuhkan lebih banyak sumber daya memori pada kluster yang lebih besar. Selain itu, ruang memori yang ditempati oleh data aplikasi historis juga meningkat seiring waktu. Bahkan kluster dengan hanya satu node memerlukan ruang memori tertentu untuk menyimpan data aplikasi historis. Kami menyarankan Anda mengonfigurasi memori heap minimal 2 GB untuk ResourceManager.
Solusi:
Jika node master memiliki sumber daya yang cukup, tingkatkan ukuran memori heap untuk ResourceManager sesuai kebutuhan bisnis Anda. Modifikasi parameter YARN_RESOURCEMANAGER_HEAPSIZE di file yarn-env.sh untuk meningkatkan ukuran memori heap.
Untuk kluster skala kecil, kurangi jumlah aplikasi historis yang datanya perlu disimpan. Modifikasi parameter yarn.resourcemanager.max-completed-applications di file yarn-site.xml. Nilai default parameter ini adalah 10000.
Pesan kesalahan: unable to create new native thread
Penyebab: Jumlah thread yang digunakan pada node tempat ResourceManager berada telah mencapai batas sistem atas, sehingga thread baru tidak dapat dibuat.
Jumlah maksimum thread bergantung pada jumlah maksimum thread yang tersedia untuk pengguna dan jumlah maksimum pengenal proses (PIDs). Jalankan perintah
ulimit -a | grep "max user processes"dancat /proc/sys/kernel/pid_maxuntuk melihat jumlah maksimum thread dan PIDs yang tersedia.Solusi:
Jika jumlah thread yang tersedia tidak memenuhi kebutuhan bisnis Anda, tingkatkan jumlah tersebut ke nilai yang lebih besar dalam pengaturan sistem. Untuk node spesifikasi kecil, konfigurasikan puluhan ribu thread. Untuk node spesifikasi besar, konfigurasikan ratusan ribu thread.
Jika jumlah thread yang tersedia sudah dikonfigurasi dengan benar, beberapa proses mungkin menggunakan terlalu banyak thread. Identifikasi proses tersebut lebih lanjut.
Jalankan perintah
ps -eLf | awk '{print $2}' | uniq -c | awk '{print $2"\t"$1}' | sort -nrk2 | headuntuk melihat 10 proses teratas yang menggunakan thread paling banyak. Jumlah thread ditampilkan dalam format [ID Proses] [Jumlah Thread].
Mengapa lokalisasi gagal ketika sebuah node mulai menjalankan pekerjaan, dan mengapa log pekerjaan tidak dapat dikumpulkan atau dihapus?
Deskripsi masalah: Log NodeManager mencatat informasi pengecualian berikut: java.io.IOException: Couldn't create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.
Penyebab: Konfigurasi HDFS salah.
Solusi:
Pesan pengecualian tersebut dienkapsulasi dan bukan penyebab utama masalah. Untuk menemukan penyebab utama, periksa log tingkat debug.
Di antarmuka baris perintah (CLI) untuk klien Hadoop, jalankan perintah seperti
hadoop fs -ls /untuk mengakses Hadoop. Kemudian, aktifkan debugging dengan menjalankan perintah berikut:export HADOOP_LOGLEVEL=DEBUGDalam lingkungan runtime dengan konfigurasi Log4j, tambahkan
log4j.logger.org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider=DEBUGke akhir file konfigurasi Log4j.
Gambar berikut menunjukkan bahwa penyebab utama masalah adalah pengguna memodifikasi konfigurasi NameServices. Pengguna mengubah emr-cluster menjadi hadoop-emr-cluster. Namun, node baru menggunakan konfigurasi NameServices asli setelah penskalaan keluar.

Di tab Configure halaman layanan HDFS kluster pada konsol EMR, pastikan parameter telah dikonfigurasi dengan benar.
Bagaimana cara menangani pengecualian lokalisasi sumber daya?
Deskripsi Masalah:
Kontainer AM yang digunakan untuk memproses pekerjaan gagal memulai, dengan pesan kesalahan berikut dilaporkan:
Aplikasi application_1412960082388_788293 gagal 2 kali karena Kontainer AM untuk appattempt_1412960082388_788293_000002 keluar dengan exitCode: -1000 karena EPERM: Operasi tidak diizinkan. Informasi pengecualian tersebut adalah informasi diagnostik tentang pekerjaan yang gagal.Kesalahan terjadi saat paket sumber daya aplikasi diekstraksi setelah diunduh untuk lokalisasi sumber daya. Periksa log NodeManager berikut untuk informasi lebih lanjut:
INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService: Gagal mengunduh rsrc { { hdfs://hadoopnnvip.cm6:9000/user/heyuan.lhy/apv/small_apv_20141128.tar.gz, 1417144849604, ARCHIVE, null },pending,[(container_1412960082388_788293_01_000001)],14170282104675332,DOWNLOADING} EPERM: Operasi tidak diizinkan at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmodImpl(Native Method) at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmod(NativeIO.java:226) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:629) at org.apache.hadoop.fs.DelegateToFileSystem.setPermission(DelegateToFileSystem.java:186) at org.apache.hadoop.fs.FilterFs.setPermission(FilterFs.java:235) at org.apache.hadoop.fs.FileContext$10.next(FileContext.java:949) at org.apache.hadoop.fs.FileContext$10.next(FileContext.java:945) at org.apache.hadoop.fs.FSLinkResolver.resolve(FSLinkResolver.java:90) at org.apache.hadoop.fs.FileContext.setPermission(FileContext.java:945) at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:398) at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:412) at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:412) at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:352) at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:57) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744)
Penyebab: Paket sumber daya aplikasi mengandung tautan simbolik, yang menyebabkan pengecualian lokalisasi sumber daya.
Solusi: Hapus tautan simbolik dari paket sumber daya aplikasi.
Apa yang harus dilakukan jika pesan kesalahan "No space left on device" ditampilkan dan kontainer gagal memulai atau berjalan?
Penyebab Potensial dan Solusi:
Periksa apakah ruang disk telah habis.
Periksa konfigurasi CGroups untuk cgroup.clone_children di direktori /sys/fs/cgroup/cpu/hadoop-yarn/ dan /sys/fs/cgroup/cpu/.
Jika nilai cgroup.clone_children adalah 0, ubah menjadi 1 dengan menjalankan perintah
echo 1 > /sys/fs/cgroup/cpu/cgroup.clone_childrenuntuk item startup.Jika masalah tetap ada, periksa file cpuset.mems atau cpuset.cpus di direktori level yang sama. Nilai cgroup.clone_children di direktori hadoop-yarn harus sama dengan nilai cgroup.clone_children di direktori level atas.
Periksa apakah jumlah subdirektori dalam direktori CGroups melebihi batas maksimum, yaitu 65.535. Untuk memeriksa jumlah subdirektori, temukan file konfigurasi YARN dan verifikasi parameter yarn.nodemanager.linux-container-executor.cgroups.delete-delay-ms atau yarn.nodemanager.linux-container-executor.cgroups.delete-timeout-ms.
Nama domain gagal diselesaikan di NodeManager atau selama pekerjaan berjalan. Apa yang harus dilakukan?
Deskripsi masalah: Pesan kesalahan berikut muncul: java.net.UnknownHostException: Nama host tidak valid: local host is: (unknown).
Penyebab potensial dan solusi:
Periksa apakah server Domain Name System (DNS) dikonfigurasi dengan benar.
Jalankan perintah berikut untuk memeriksa konfigurasi server DNS:
cat /etc/resolv.confPeriksa apakah aturan yang diperlukan telah dikonfigurasikan untuk Port 53 firewall.
Jika aturan yang diperlukan telah dikonfigurasikan, nonaktifkan firewall.
Periksa apakah layanan Name Service Cache Daemon (NSCD) diaktifkan untuk server DNS.
Jalankan perintah berikut untuk memeriksa status layanan NSCD:
systemctl status nscdJika layanan NSCD diaktifkan untuk server DNS, jalankan perintah berikut untuk menonaktifkan layanan NSCD:
systemctl stop nscd
Apa yang harus dilakukan jika terjadi masalah OOM di NodeManager?
Masalah OOM dapat dikategorikan menjadi beberapa jenis. Identifikasi jenis masalah berdasarkan log NodeManager. Bagian ini menjelaskan jenis, penyebab potensial, dan solusi untuk masalah OOM.
Pesan kesalahan: Java heap space, GC overhead limit exceeded, atau FullGC (dilaporkan berulang kali)
Penyebab:
Penyebab langsung: Memori heap JVM tidak mencukupi. Objek dalam proses NodeManager tidak mendapatkan sumber daya yang memadai. Beberapa putaran pengumpulan sampah penuh (full GC) dilakukan untuk memulihkan objek yang tidak valid sebelum pengecualian OOM dilemparkan, tetapi objek tersebut tetap tidak mendapatkan cukup memori heap untuk alokasi sumber daya.
Analisis: NodeManager memiliki sedikit objek tetap, seperti node saat ini, aplikasi, dan kontainer. Objek-objek ini tidak menempati banyak memori heap. Namun, cache dan buffer layanan shuffle eksternal dapat menggunakan sejumlah besar memori heap. Penggunaan memori heap oleh layanan shuffle eksternal ditentukan oleh konfigurasi layanan shuffle, seperti parameter spark.shuffle.service.index.cache.size atau spark.shuffle.file.buffer untuk Spark, serta mapreduce.shuffle.ssl.file.buffer.size atau mapreduce.shuffle.transfer.buffer.size untuk MapReduce. Penggunaan memori heap juga sebanding dengan jumlah aplikasi atau kontainer yang menggunakan layanan shuffle eksternal. Oleh karena itu, NodeManager pada node dengan spesifikasi lebih tinggi yang mendukung lebih banyak tugas memerlukan sumber daya memori yang lebih besar. Kami menyarankan Anda mengonfigurasi memori heap minimal 1 GB untuk NodeManager.
Solusi:
Jika node tempat NodeManager berada memiliki sumber daya yang cukup, kami sarankan meningkatkan ukuran memori heap untuk NodeManager sesuai kebutuhan bisnis Anda. Anda dapat melakukannya dengan memodifikasi parameter YARN_NODEMANAGER_HEAPSIZE di file yarn-env.sh.
Periksa apakah konfigurasi layanan shuffle sudah optimal. Sebagai contoh, cache Spark tidak boleh menempati sebagian besar memori heap.
Pesan kesalahan: Direct buffer memory
Penyebab:
Penyebab langsung: Masalah OOM disebabkan oleh overflow memori off-heap dan umumnya terkait dengan layanan shuffle eksternal. Sebagai contoh, memori off-heap digunakan jika panggilan prosedur jarak jauh (RPC) layanan shuffle menggunakan NIO DirectByteBuffer.
Analisis: Penggunaan memori off-heap sebanding dengan jumlah aplikasi atau kontainer yang menggunakan layanan shuffle. Untuk node tempat sejumlah besar tugas menggunakan layanan shuffle, periksa apakah ukuran memori off-heap untuk NodeManager terlalu kecil.
Solusi:
Periksa apakah ukuran memori off-heap terlalu kecil. Lihat nilai XX:MaxDirectMemorySize dalam parameter YARN_NODEMANAGER_OPTS di file yarn-env.sh. Jika parameter ini tidak dikonfigurasikan, ukuran memori off-heap sama dengan ukuran memori heap secara default. Jika ukuran memori off-heap terlalu kecil, tingkatkan nilainya ke angka yang lebih besar.
Pesan kesalahan: unable to create new native thread
Untuk informasi lebih lanjut, lihat solusi untuk kesalahan "unable to create new native thread" di bagian Apa yang harus dilakukan jika terjadi masalah OOM di ResourceManager? dalam topik ini.
Setelah instance ECS di-restart, NodeManager gagal dimulai karena direktori cgroups hilang. Apa yang harus dilakukan?
Pesan kesalahan: ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount point:/proc/mounts User:hadoop Path:/sys/fs/cgroup/cpu/hadoop-yarn
Penyebab: Restart abnormal instance ECS kemungkinan disebabkan oleh cacat kernel pada instance tersebut. Ini merupakan masalah yang diketahui di versi 4.19.91-21.2.al7.x86_64. Setelah instance ECS di-restart, cgroups menjadi tidak valid karena data cgroups di memori dihapus setelah restart.
Solusi: Modifikasi skrip bootstrap grup node untuk membuat direktori cgroups di kluster. Jalankan skrip rc.local untuk membuat direktori jika instance ECS dimulai. Contoh kode berikut mengilustrasikan langkah-langkahnya:
# aktifkan cgroups mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn chown -R hadoop:hadoop /sys/fs/cgroup/cpu/hadoop-yarn # aktifkan cgroups setelah reboot echo "mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn" >> /etc/rc.d/rc.local echo "chown -R hadoop:hadoop /sys/fs/cgroup/cpu/hadoop-yarn" >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local
Apa yang harus dilakukan jika konfigurasi sumber daya NodeManager tidak berlaku setelah saya menyimpan konfigurasi dan me-restart NodeManager?
Deskripsi: Parameter yarn.nodemanager.resource.cpu-vcores dan yarn.nodemanager.resource.memory-mb telah dimodifikasi dan disimpan, namun konfigurasi tidak diterapkan setelah NodeManager di-restart.
Penyebab: Jumlah core CPU dan ukuran memori instance dalam grup node mungkin berbeda-beda. Modifikasi parameter yarn.nodemanager.resource.cpu-vcores dan yarn.nodemanager.resource.memory-mb untuk grup node diperlukan agar pengaturan dapat diterapkan.
Solusi: Masuk ke konsol E-MapReduce (EMR). Pada tab Configure halaman layanan YARN, pilih Konfigurasi Grup Node dari daftar drop-down di sebelah kanan kotak pencarian, lalu pilih grup node tempat NodeManager berada. Selanjutnya, modifikasi parameter yarn.nodemanager.resource.cpu-vcores dan yarn.nodemanager.resource.memory-mb. Untuk informasi lebih lanjut, lihat Kelola item konfigurasi.

Apa yang harus dilakukan jika sebuah node ditandai sebagai tidak sehat?
Penyebab:
Pengecualian terdeteksi selama pemeriksaan kesehatan disk: Jika rasio jumlah direktori normal terhadap jumlah total direktori di node lebih rendah dari nilai yang ditentukan, node akan ditandai sebagai tidak sehat. Rasio ini dikontrol oleh parameter yarn.nodemanager.disk-health-checker.min-healthy-disks dalam file yarn-site.xml. Nilai default untuk parameter ini adalah 0,25. Misalnya, jika empat disk digunakan pada node tempat NodeManager berada, node hanya akan ditandai sebagai tidak sehat jika semua empat disk mengalami masalah. Jika tidak, pesan "local-dirs are bad" atau "log-dirs are bad" akan dicatat dalam laporan status NodeManager. Untuk informasi lebih lanjut, lihat Apa yang Harus Dilakukan Jika Pesan "local-dirs are bad" atau "log-dirs are bad" Dilaporkan?.
Pengecualian terdeteksi oleh skrip pemeriksaan kesehatan NodeManager: Secara default, skrip ini dinonaktifkan. Anda perlu mengonfigurasi parameter yarn.nodemanager.health-checker.script.path dalam file yarn-site.xml untuk mengaktifkan skrip pemeriksaan kesehatan.
Solusi:
Jika masalah disebabkan oleh pengecualian disk, lihat solusi di bagian Apa yang Harus Dilakukan Jika Pesan "local-dirs are bad" atau "log-dirs are bad" Dilaporkan?.
Jika masalah terdeteksi oleh skrip pemeriksaan kesehatan, selesaikan masalah sesuai dengan logika skrip kustom yang digunakan.
Apa yang harus dilakukan jika pesan "local-dirs are bad" atau "log-dirs are bad" muncul?
Penyebab: Pengecualian terdeteksi selama pemeriksaan kesehatan disk. Secara default, fitur pemeriksaan kesehatan disk diaktifkan dan secara berkala memeriksa apakah local-dirs dan log-dirs memenuhi kondisi tertentu. Local-dirs adalah direktori cache tugas yang menyimpan file dan data perantara untuk menjalankan tugas, sedangkan log-dirs adalah direktori log tugas yang menyimpan semua log tugas. Jika salah satu dari kondisi berikut tidak terpenuhi, local-dirs atau log-dirs ditandai sebagai buruk:
Dapat dibaca.
Dapat ditulis.
Dapat dieksekusi.
Penggunaan disk lebih rendah dari ambang batas yang ditentukan oleh parameter yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage di file yarn-site.xml. Nilai default parameter ini adalah 90%.
Ruang disk tersisa lebih besar dari ruang minimum yang tersedia yang ditentukan oleh parameter yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb di file yarn-site.xml. Nilai default parameter ini adalah 0 MB.
Solusi:
Dalam kebanyakan kasus, masalah disebabkan oleh ruang disk yang tidak mencukupi. Jika salah satu dari kondisi berikut terpenuhi, kami sarankan Anda menambah kapasitas disk:
Spesifikasi node tempat NodeManager berada tinggi, dan sejumlah besar tugas berjalan di node tersebut.
Ruang disk kecil.
Ukuran data atau file yang diperlukan untuk menjalankan tugas besar.
Sejumlah besar data perantara dihasilkan saat tugas berjalan.
Ukuran log tugas besar, dan log tugas menempati proporsi tinggi dari ruang disk.
Periksa parameter yarn.nodemanager.localizer.cache.target-size-mb di file yarn-site.xml. Jika rasio ukuran cache terhadap ukuran disk terlalu besar, sebagian besar ruang disk akan ditempati oleh data cache tugas karena cache hanya dapat dibersihkan secara otomatis jika ambang batas tertentu terlampaui.
Perbaiki disk yang rusak. Untuk informasi lebih lanjut tentang cara memperbaiki disk yang rusak, lihat Ganti disk lokal yang rusak untuk kluster EMR.
Apa yang harus dilakukan jika pesan kesalahan "User [dr.who] is not authorized to view the logs for application ***" ditampilkan?
Deskripsi masalah: Informasi berikut muncul saat halaman log dibuka.

Penyebab: Aturan Daftar Kontrol Akses (ACL) diperiksa saat mengakses halaman Log NodeManager. Jika aturan ACL diaktifkan, pengguna jarak jauh yang ingin melihat log aplikasi harus memenuhi salah satu kondisi berikut:
Pengguna remote adalah admin.
Pengguna remote adalah pemilik aplikasi.
Pengguna remote memenuhi aturan ACL yang disesuaikan untuk aplikasi.
Solusi: Pastikan pengguna remote memenuhi salah satu kondisi yang telah disebutkan.
Apa yang harus saya lakukan jika pesan kesalahan "HTTP ERROR 401 Authentication required" atau "HTTP ERROR 403 Unauthenticated users are not authorized to access this page" ditampilkan?
Deskripsi masalah: Kesalahan HTTP ERROR 401 atau HTTP ERROR 403 terjadi saat mengakses antarmuka web atau memanggil API RESTful. Detail dari HTTP ERROR 401 ditampilkan pada gambar berikut.

Penyebab: YARN menggunakan metode autentikasi sederhana dan tidak mengizinkan akses anonim. Untuk informasi lebih lanjut, lihat Autentikasi untuk Hadoop HTTP web-consoles di dokumentasi resmi Apache Hadoop.
Solusi:
Metode 1: Konfigurasikan parameter URL untuk menentukan pengguna jarak jauh, seperti user.name=***.
Metode 2: Di bagian Configuration Filter pada tab Configure halaman layanan HDFS kluster di konsol EMR, cari parameter hadoop.http.authentication.simple.anonymous.allowed dan ubah nilai parameternya menjadi true untuk mengizinkan akses anonim. Untuk informasi lebih lanjut tentang parameter ini, lihat Autentikasi untuk Hadoop HTTP web-consoles di dokumentasi resmi Apache Hadoop. Kemudian, mulai ulang layanan HDFS. Untuk informasi lebih lanjut, lihat Mulai ulang layanan.
Mengapa nilai tampilan TotalVcore salah?
Di bagian cluster atau metrics RESTful API di pojok kanan atas antarmuka web YARN, nilai tampilan TotalVcore salah. Masalah ini disebabkan oleh logika perhitungan untuk TotalVcore pada versi Apache Hadoop sebelum 2.9.2. Untuk informasi lebih lanjut, lihat Total #VCores dalam cluster metrics salah ketika CapacityScheduler memesan beberapa kontainer di dokumentasi resmi Apache Hadoop.
Masalah ini telah diperbaiki di EMR V3.37.x, EMR V5.3.x, dan versi minor berikutnya.
Apa yang harus saya lakukan jika informasi tentang aplikasi yang ditampilkan di antarmuka web TEZ tidak lengkap?
Buka Developer tools pada browser untuk memperbaiki masalah ini.
Jika Anda menemui masalah saat mengakses alamat dalam format http://<rmAddress>/ws/v1/cluster/apps/APPID, kemungkinan besar aplikasi telah dibersihkan oleh ResourceManager. Secara default, ResourceManager di YARN menyimpan informasi maksimal 1.000 aplikasi. Aplikasi yang melebihi batas tersebut akan dibersihkan berdasarkan urutan waktu dimulainya.
Jika Anda menemui masalah saat mengakses alamat dalam format http://<tsAddress>/ws/v1/applicationhistory/... dan menerima kode kesalahan 500 yang menunjukkan bahwa aplikasi tidak ditemukan, kemungkinan penyebabnya adalah informasi aplikasi gagal disimpan atau telah dibersihkan oleh Timeline store. Periksa konfigurasi parameter yarn.resourcemanager.system-metrics-publisher.enabled untuk memastikan apakah informasi aplikasi gagal disimpan. Selain itu, periksa masa hidup (TTL) LevelDB untuk menentukan apakah informasi aplikasi telah dibersihkan oleh Timeline store.
Jika Anda menemui masalah saat mengakses alamat dalam format http://<tsAddress>/ws/v1/timeline/... dan menerima kode 200 tetapi dengan pesan NotFound, lakukan langkah-langkah berikut:
Periksa informasi yang dicetak saat layanan AM syslog dimulai. Pastikan inisialisasi normal berikut terjadi:
[INFO] [main] |history.HistoryEventHandler|: Menginisialisasi HistoryEventHandler dengan recoveryEnabled=true, historyServiceClassName=org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService [INFO] [main] |ats.ATSHistoryLoggingService|: Menginisialisasi ATSHistoryLoggingService dengan maxEventsPerBatch=5, maxPollingTime(ms)=10, waitTimeForShutdown(ms)=-1, TimelineACLManagerClass=org.apache.tez.dag.history.ats.acls.ATSHistoryACLPolicyManagerJika pengecualian berikut terjadi, konfigurasi parameter yarn.timeline-service.enabled tidak benar untuk AM yang sedang berjalan. Kemungkinan besar terdapat masalah di FlowAgent. Pekerjaan Hive dapat diimplementasikan di FlowAgent dengan menjalankan perintah Hive atau Beeline. Secara default, nilai parameter yarn.timeline-service.enabled diatur ke false di FlowAgent.
[WARN] [main] |ats.ATSHistoryLoggingService|: org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService dinonaktifkan karena Layanan Timeline dinonaktifkan, yarn.timeline-service.enabled diatur ke false
Mengapa tugas Spark Thrift JDBC/ODBC Server berjalan di web UI YARN?
Jika Anda memilih Spark saat membuat kluster, layanan Spark Thrift Server akan otomatis dimulai secara default. Layanan ini menggunakan sumber daya dari satu driver YARN. Secara default, tugas yang dijalankan di Spark Thrift Server meminta sumber daya yang diperlukan dari YARN melalui driver ini.
Apakah parameter yarn.timeline-service.leveldb-timeline-store.path dapat diatur ke URL Bucket OSS?
Tidak, parameter yarn.timeline-service.leveldb-timeline-store.path tidak dapat diatur ke URL Bucket OSS.
Jika kluster yang Anda buat adalah kluster Hadoop, nilai default dari parameter yarn.timeline-service.leveldb-timeline-store.path sama dengan nilai parameter hadoop.tmp.dir. Jangan ubah parameter hadoop.tmp.dir, karena hal ini akan memengaruhi pengaturan parameter yarn.timeline-service.leveldb-timeline-store.path.
Apa yang harus saya lakukan jika koneksi ke Timeline Server mengalami timeout atau beban CPU atau penggunaan memori sangat tinggi?
Jika terdapat sejumlah besar pekerjaan Tez, koneksi ke Timeline Server dari YARN dapat mengalami timeout saat data ditulis ke Timeline Server. Hal ini disebabkan oleh penggunaan sumber daya CPU yang tinggi oleh proses Timeline Server, sehingga beban CPU pada node tempat server berjalan mencapai batas maksimum. Akibatnya, layanan non-inti seperti pembuatan laporan dan pengembangan pekerjaan lainnya terpengaruh. Untuk mengurangi beban CPU pada node, Anda dapat sementara menghentikan proses Timeline Server. Selain itu, Anda dapat menambahkan atau memodifikasi item konfigurasi berikut untuk menyelesaikan masalah ini.
Tambahkan atau modifikasi konfigurasi layanan Tez dan YARN melalui konsol EMR. Untuk informasi lebih lanjut, lihat Kelola Item Konfigurasi.
Buka tab tez-site.xml di tab Configure halaman layanan Tez di konsol EMR. Tambahkan item konfigurasi dengan nama tez.yarn.ats.event.flush.timeout.millis dan nilai 60000. Item konfigurasi ini menentukan periode timeout yang diizinkan saat pekerjaan Tez menulis peristiwa ke Timeline Server YARN.
Buka tab yarn-site.xml di tab Configure halaman layanan YARN di konsol EMR, lalu tambahkan atau modifikasi item konfigurasi sesuai tabel berikut. Setelah penambahan atau modifikasi selesai, mulai ulang Timeline Server di tab Status halaman layanan YARN.
Item konfigurasi
Nilai
Deskripsi
yarn.timeline-service.store-class
org.apache.hadoop.yarn.server.timeline.RollingLevelDBTimelineStore
Menentukan kelas penyimpanan peristiwa YARN Timeline Server.
yarn.timeline-service.rolling-period
daily
Menentukan periode rolling peristiwa YARN Timeline Server.
yarn.timeline-service.leveldb-timeline-store.read-cache-size
4.194.304
Menentukan ukuran cache baca dari YARN Timeline Server LevelDB store.
yarn.timeline-service.leveldb-timeline-store.write-buffer-size
4.194.304
Menentukan ukuran buffer tulis dari YARN Timeline Server LevelDB store.
yarn.timeline-service.leveldb-timeline-store.max-open-files
500
Menentukan jumlah maksimum file yang dapat dibuka di YARN Timeline Server LevelDB store.