Penyetelan kinerja di Hadoop membantu mengoptimalkan kinerja cluster Hadoop. Dalam artikel Penyesuaian Kinerja MapReduce ini, pertama-tama Anda akan menjelajahi berbagai cara untuk meningkatkan kinerja cluster Hadoop dan mencapai hasil terbaik dari pemrograman MapReduce di Hadoop.
Kemudian artikel ini akan membahas tujuh cara atau konsep penting untuk Hadoop MapReduce Performance Tuning. Cara-cara tersebut adalah Memory Tuning di Hadoop, Meningkatkan Kinerja IO, Map Disk spill di Hadoop, menyetel tugas mapper dan reducer, menulis combiner, menggunakan skewed join, dan Speculative execution.
Teknik ini dapat digunakan untuk menyiapkan kluster Hadoop dalam produksi dengan perangkat keras komoditas untuk meningkatkan kinerja dengan biaya operasional minimal.
Pengantar Hadoop MapReduce Performance Tuning
Memasang cluster Hadoop dalam produksi hanyalah setengah dari pertempuran yang dimenangkan. Untuk administrator Hadoop, sangat penting untuk menyetel penyiapan cluster Hadoop untuk mendapatkan performa maksimal.
Penyesuaian kinerja Hadoop membantu mengoptimalkan kinerja cluster Hadoop dan mencapai hasil terbaik saat menjalankan tugas MapReduce di perusahaan Big Data.
Selama instalasi Hadoop, cluster Hadoop dikonfigurasi dengan pengaturan konfigurasi default.
Sangat penting bagi administrator Hadoop untuk mengetahui beberapa spesifikasi perangkat keras seperti kapasitas RAM, jumlah disk yang terpasang pada DataNodes, jumlah inti CPU, jumlah inti fisik atau virtual, Kartu NIC, dll.
Dengan demikian, tidak ada teknik penyetelan kinerja tunggal yang cocok untuk semua pekerjaan Hadoop karena sangat sulit untuk mendapatkan keseimbangan di antara semua sumber daya sambil memecahkan masalah data besar.
Kami dapat memilih tip dan trik penyetelan kinerja berdasarkan jumlah data yang akan dipindahkan dan jenis pekerjaan Hadoop yang akan dijalankan dalam produksi. Penyetelan performa terbaik dan paling efektif membantu mencapai performa maksimal.
Untuk melakukan hal yang sama, kita harus mengulangi proses yang disebutkan di bawah ini hingga output yang diinginkan tercapai dengan cara yang optimal.
Run Job –> Identifikasi Bottleneck –> Address Bottleneck.
Jadi pada dasarnya, untuk penyetelan kinerja, pertama-tama kita harus menjalankan pekerjaan Hadoop MapReduce, mengidentifikasi hambatan, dan kemudian mengatasi masalah menggunakan metode di bawah ini. Kita harus mengulangi langkah di atas sampai tingkat kinerja yang diinginkan tercapai.
Tips dan Trik untuk Penyesuaian Performa MapReduce
Cara yang digunakan untuk penyetelan kinerja Hadoop MapReduce dapat dikategorikan ke dalam dua kategori. Kedua kategori tersebut adalah:
1. Penyetelan kinerja berdasarkan parameter run-time Hadoop
2. Penyetelan kinerja khusus aplikasi Hadoop
Sekarang mari kita bahas bagaimana kita dapat meningkatkan kinerja cluster Hadoop berdasarkan dua kategori ini.
1. Penyetelan Kinerja Berbasis Parameter Waktu Proses Hadoop
Kategori ini berkaitan dengan penyetelan parameter run-time Hadoop seperti penyetelan penggunaan CPU, penggunaan memori, penggunaan disk, dan penggunaan jaringan untuk penyetelan kinerja. Teknik yang termasuk dalam kategori ini adalah:
a. Penyetelan Memori
Langkah terpenting untuk memastikan kinerja maksimum tugas Hadoop adalah menyetel parameter konfigurasi untuk memori dengan memantau penggunaan memori di server.
Setiap pekerjaan MapReduce di Hadoop mengumpulkan informasi tentang berbagai catatan input yang dibaca, jumlah catatan peredam, jumlah catatan yang disalurkan untuk eksekusi lebih lanjut, memori swap, set ukuran heap, dll.
Tugas Hadoop umumnya tidak terikat oleh CPU. Jadi, perhatian utama adalah mengoptimalkan penggunaan memori dan tumpahan disk.
Aturan praktis terbaik untuk penyetelan memori untuk memaksimalkan kinerja adalah memastikan bahwa pekerjaan MapReduce tidak memicu pertukaran. Itu berarti gunakan memori sebanyak mungkin tanpa memicu pertukaran.
Software seperti Cloudera Manager, Nagios, atau Ganglia dapat digunakan untuk memantau penggunaan memori swap.
Setiap kali ada penggunaan memori swap yang besar, maka penggunaan memori harus dioptimalkan melalui konfigurasi mapred.child.java.opts properti dengan mengurangi jumlah RAM yang dialokasikan untuk setiap tugas di mapred.child.java.opts .
Kita dapat menyesuaikan memori untuk tugas dengan menyetel mapred.child.java.opts hingga -Xmx2048M di mapred-site.xml.
b. Minimalkan Tumpahan Disk Peta
Disk IO adalah hambatan kinerja di Apache Hadoop. Ada banyak parameter yang bisa kita sesuaikan untuk meminimalkan tumpahan. Kita dapat menyetel parameter seperti:
- Kompresi keluaran mapper
- Pastikan mapper menggunakan 70% memori heap untuk buffer tumpahan.
Namun menurut Anda, apakah sering menumpahkan air adalah ide yang bagus?
Sangat disarankan agar Anda tidak menumpahkan lebih dari sekali karena jika kita menumpahkan sekali, maka kita perlu membaca ulang dan menulis ulang semua data:3x IO.
c. Menyesuaikan Tugas Pemeta
Kami secara implisit dapat mengatur jumlah tugas peta. Cara paling umum dan efektif untuk penyetelan kinerja Hadoop untuk pembuat peta adalah dengan mengontrol jumlah pembuat peta dan ukuran setiap tugas.
Saat menangani file besar, kerangka kerja membagi file menjadi potongan-potongan kecil sehingga pembuat peta dapat menjalankannya secara paralel. Namun, inisialisasi pekerjaan mapper baru biasanya membutuhkan waktu beberapa detik, yang juga merupakan biaya tambahan dan harus diminimalkan. Jadi saran untuk hal yang sama adalah:
- Gunakan kembali tugas jvm
- Bertujuan untuk tugas peta yang masing-masing berjalan 1 hingga 3 menit. Jadi, jika waktu berjalan rata-rata pembuat peta kurang dari satu menit, tingkatkan mapred.min.split.size, untuk mengalokasikan lebih sedikit pembuat peta dalam slot dan dengan demikian mengurangi overhead inisialisasi mapper.
- Gunakan format input Gabungkan file untuk sekumpulan file yang lebih kecil.
2. Penyesuaian Kinerja Khusus Aplikasi Hadoop
Teknik yang termasuk dalam kategori ini adalah:
a. Meminimalkan Output Pemeta
Dengan meminimalkan output mapper, kita dapat meningkatkan kinerja karena output mapper sangat sensitif terhadap IO disk, IO jaringan, dan sensitivitas memori pada fase shuffle. Kita dapat mencapai ini dengan:
- Memfilter catatan di sisi mapper alih-alih di sisi peredam.
- Menggunakan data minimal untuk membentuk kunci dan nilai keluaran mapper kami di MapReduce.
- Mengompresi keluaran mapper
b. Menyeimbangkan Pemuatan Peredam
Tugas pengurangan yang tidak seimbang menciptakan masalah kinerja. Beberapa reduksi mengambil sebagian besar output dari mapper dan berjalan sangat lama dibandingkan dengan reduksi lainnya. Kita dapat menyeimbangkan pemuatan peredam dengan:
- Menerapkan fungsi hash yang lebih baik di kelas Partitioner.
- Menulis pekerjaan praproses untuk memisahkan kunci menggunakan beberapa keluaran. Kemudian gunakan tugas pengurangan peta lainnya untuk memproses kunci khusus yang dapat menyebabkan masalah.
c. Kurangi Data Menengah dengan Combiner di Hadoop
Selanjutnya kita dapat menyetel kinerja cluster Hadoop dengan menulis sebuah combiner. Combiner mengurangi jumlah data yang akan ditransfer dari mapper ke peredam. Ini terbukti bermanfaat karena mengurangi kemacetan jaringan.
d. Eksekusi Spekulatif
Kinerja pekerjaan MapReduce sangat terpengaruh ketika tugas membutuhkan waktu lebih lama untuk menyelesaikan eksekusinya. Eksekusi spekulatif di Hadoop adalah pendekatan umum untuk memecahkan masalah ini dengan mencadangkan tugas lambat di mesin alternatif.
Kita dapat mengaktifkan eksekusi spekulatif dengan menyetel parameter konfigurasi ‘mapreduce.map.tasks.speculative.execution' dan ‘mapreduce.reduce.tasks.speculative.execution’ untuk benar. Ini akan mengurangi waktu pelaksanaan pekerjaan.
Ringkasan
Terakhir, kami telah melihat Penyetelan kinerja di Hadoop membantu dalam mengoptimalkan kinerja klaster Hadoop. Artikel tersebut menjelaskan berbagai tips dan trik untuk penyetelan performa cluster Hadoop.
Artikel tersebut telah menyoroti beberapa trik terbaik dan paling efektif untuk memaksimalkan kinerja.
Namun, Jika Anda memiliki pertanyaan tentang topik ini, jangan ragu untuk membagikannya kepada kami di bagian komentar.