HBase
 sql >> Teknologi Basis Data >  >> NoSQL >> HBase

Eksekusi Spekulatif di Hadoop MapReduce

Dalam artikel Eksekusi Spekulatif MapReduce ini, Anda akan menjelajahi eksekusi spekulatif Hadoop secara detail. Anda akan mempelajari apa itu eksekusi spekulatif, apa kebutuhannya, bagaimana kami dapat mengaktifkan dan menonaktifkannya.

Artikel tersebut juga menjelaskan apakah itu bermanfaat atau tidak dan bagaimana cara kerjanya.

Apa itu Eksekusi Spekulatif di Hadoop?

Model MapReduce dalam kerangka Hadoop memecah pekerjaan menjadi tugas-tugas independen dan menjalankan tugas-tugas ini secara paralel untuk mengurangi waktu eksekusi pekerjaan secara keseluruhan.

Hal ini membuat waktu eksekusi pekerjaan sensitif untuk tugas yang berjalan lambat karena hanya satu tugas lambat yang dapat membuat seluruh waktu eksekusi pekerjaan lebih lama dari yang diharapkan. Ketika pekerjaan apa pun terdiri dari ribuan atau ratusan tugas, maka kemungkinan beberapa tugas yang terhampar sangat nyata.

Tugas bisa lambat karena berbagai alasan, seperti kesalahan konfigurasi perangkat lunak atau degradasi perangkat keras. Namun penyebab yang membuat pekerjaan menjadi lambat sulit dideteksi karena tugas tetap berhasil diselesaikan, meskipun membutuhkan waktu lebih lama dari yang diharapkan.

Kerangka kerja Hadoop tidak mencoba mendiagnosis atau memperbaiki tugas yang berjalan lambat. Kerangka kerja mencoba mendeteksi tugas yang berjalan lebih lambat dari kecepatan yang diharapkan dan meluncurkan tugas lain, yang merupakan tugas yang setara sebagai cadangan.

Tugas pencadangan dikenal sebagai tugas spekulatif, dan proses ini dikenal sebagai eksekusi spekulatif di Hadoop.

Apa perlunya eksekusi spekulatif di Hadoop?

Dalam kerangka Hadoop, file input dipartisi menjadi beberapa blok, dan blok-blok tersebut disimpan pada node yang berbeda di cluster Hadoop.

Ketika pekerjaan MapReduce dikirimkan oleh klien, maka itu menghitung jumlah InputSplits dan menjalankan sebanyak mungkin pemetaan sebagai jumlah InputSplit. Pemeta ini (tugas peta) berjalan secara paralel di DataNodes, tempat data terpisah berada.

Sekarang, Bagaimana jika beberapa DataNodes di cluster Hadoop tidak menjalankan tugas secepat DataNodes lainnya baik karena kegagalan perangkat keras atau masalah jaringan.

Jadi tugas peta yang berjalan di DataNodes tersebut akan lebih lambat dibandingkan dengan tugas peta yang berjalan di DataNodes lainnya. Peredam dapat memulai eksekusinya hanya jika output perantara dari semua pembuat peta tersedia.

Jadi semakin sedikit tugas peta yang berjalan lambat akan menunda eksekusi Reducer.

Jika Reducer berjalan pada node yang lebih lambat, maka itu juga akan menunda hasil akhir pekerjaan secara keseluruhan.

Jadi untuk menghindari tugas yang berjalan lambat seperti itu, kerangka kerja Hadoop memulai tugas yang sama di node lain. Pengoptimalan oleh kerangka kerja Hadoop ini disebut eksekusi tugas secara spekulatif.

Bagaimana Eksekusi Spekulatif bekerja di Hadoop?

Eksekusi spekulatif tidak meluncurkan dua tugas duplikat dari setiap tugas independen dari suatu pekerjaan pada waktu yang hampir bersamaan sehingga mereka dapat saling berlomba. Jika kerangka kerja melakukannya, maka itu akan menyebabkan pemborosan sumber daya cluster.

Alih-alih itu, penjadwal melacak kemajuan semua tugas dengan jenis yang sama (seperti peta dan pengurangan) dalam pekerjaan, dan hanya meluncurkan duplikat spekulatif untuk proporsi kecil yang berjalan lebih lambat dari rata-rata.

Ketika tugas berhasil diselesaikan, maka tugas duplikat apa pun yang sedang berjalan akan dihentikan karena tidak lagi diperlukan.

Jadi, dalam kasus jika tugas asli selesai sebelum tugas spekulatif, maka tugas spekulatif dimatikan. Jika tugas spekulatif selesai sebelum tugas asli, maka yang asli akan mati.

Perhatikan bahwa eksekusi spekulatif adalah pengoptimalan. Ini bukan fitur untuk membuat pekerjaan MapReduce berjalan lebih andal.

Bagaimana cara mengkonfigurasi eksekusi spekulatif di Hadoop?

Secara default, eksekusi spekulatif diaktifkan untuk tugas Peta serta untuk tugas pengurangan. Propertinya disetel di mapred-site.xml file konfigurasi.

  • mapreduce.map.speculative :Jika properti ini disetel ke true, maka eksekusi spekulatif dari tugas peta diaktifkan. Secara default, ini benar.
  • mapreduce.reduce.speculative :Jika properti ini disetel ke true, maka eksekusi spekulatif dari tugas pengurangan diaktifkan. Secara default, ini benar.

Mengapa Anda ingin mematikan eksekusi spekulatif?

Tujuan utama dari eksekusi spekulatif adalah untuk mengurangi waktu eksekusi pekerjaan. Tapi ini akan mengorbankan efisiensi cluster Hadoop.

Pada kluster Hadoop yang sibuk, ini dapat mengurangi throughput keseluruhan karena tugas yang berlebihan sedang dieksekusi untuk mengurangi waktu eksekusi untuk satu tugas.

Karena alasan ini, beberapa administrator cluster menonaktifkan eksekusi spekulatif pada cluster Hadoop dan meminta pengguna mengaktifkannya secara eksplisit untuk tugas individu.

Kami dapat menonaktifkannya untuk tugas pengurangan karena tugas pengurangan duplikat apa pun harus mengambil keluaran mapper yang sama dengan tugas aslinya, yang secara signifikan akan meningkatkan lalu lintas jaringan di kluster.

Apakah Eksekusi Spekulatif Menguntungkan?

Eksekusi spekulatif di Hadoop bermanfaat dalam beberapa kasus karena di cluster Hadoop yang memiliki ratusan atau ribuan node, masalah seperti kemacetan jaringan atau kegagalan perangkat keras sering terjadi.

Jadi menjalankan tugas paralel atau duplikat akan lebih baik. Namun dalam kasus, jika dua tugas duplikat dari setiap tugas independen dari suatu pekerjaan diluncurkan pada waktu yang hampir bersamaan, maka itu akan menjadi pemborosan sumber daya cluster.

Ringkasan

Saya harap setelah membaca artikel ini, Anda memahami dengan jelas apa itu eksekusi spekulatif di Hadoop dan mengapa itu diperlukan. Anda juga telah melihat bagaimana kami dapat menonaktifkannya untuk tugas peta dan mengurangi tugas satu per satu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. bunuh server wilayah mati zombie

  2. Hadoop Partitioner – Pelajari Dasar-dasar MapReduce Partitioner

  3. 6 Teknik Pengoptimalan Pekerjaan MapReduce Terbaik

  4. MapReduce Shuffle dan Sorting di Hadoop

  5. Cloudera Impala:Query Real-Time di Apache Hadoop, Nyata