Video: DJ GAGAK - ENTAH APA YANG MERASUKIMU - SALAH APA AKU 2024
Selepas fasa Peta dan sebelum permulaan fasa Mengurangkan adalah proses handoff yang dikenali sebagai shuffle dan semak . Di sini, data dari tugas pemetaan disediakan dan dipindahkan ke nod di mana tugas reducer akan dijalankan. Apabila tugas mapper selesai, hasilnya disusun dengan kunci, dipartisi sekiranya terdapat pengurang berganda, dan kemudian ditulis ke cakera.
Anda dapat melihat konsep ini dalam angka berikut, yang menunjukkan aliran pemprosesan DataReduce dan interaksi dengan komponen fizikal cluster Hadoop. (Satu nota cepat: Data dalam memori diwakili oleh dataran putih, dan data yang disimpan ke cakera diwakili oleh dataran kelabu.)
Untuk mempercepatkan keseluruhan proses MapReduce, data akan segera dipindahkan ke nod tugas reducer, untuk mengelakkan banjir aktiviti rangkaian apabila tugas pemetaan akhir selesai kerja. Pemindahan ini berlaku semasa tugas pemetaan dijalankan, sebagai output untuk setiap rekod - ingat - disimpan dalam memori tugas reducer menunggu. (Anda boleh mengkonfigurasi sama ada ini berlaku - atau tidak berlaku - dan juga bilangan benang yang terlibat.)
Perlu diingat bahawa walaupun tugas reducer mungkin mempunyai kebanyakan output tugas pemetaan, pemprosesan mengurangkan tugas tidak dapat dimulakan sehingga semua tugas mapper selesai.
Untuk mengelakkan senario di mana prestasi kerja MapReduce terhalang oleh satu tugas mapper yang berlarutan yang berjalan pada nod hamba yang tidak berfungsi, Rangka Kerja MapReduce menggunakan konsep yang disebut pelaksanaan spekulasi .
Sekiranya beberapa tugas mapper berjalan lebih lambat daripada apa yang dianggap munasabah, Master Aplikasi akan menimbulkan tugas duplikat (dalam Hadoop 1, JobTracker melakukan ini). Tugas yang mana pun selesai pertama - pendua atau asal - hasilnya disimpan ke cakera, dan tugas lain dibunuh. Sekiranya anda memantau pekerjaan anda dengan teliti dan tertanya-tanya mengapa terdapat lebih banyak tugas pemetaan daripada yang anda harapkan, inilah sebabnya.
Output dari tugas mapper tidak dituliskan ke HDFS, tetapi sebaliknya ke cakera lokal pada node hamba di mana tugas mapper dijalankan. Oleh itu, ia tidak direplikasi di seluruh kelompok Hadoop.
Selain memampatkan output, anda boleh meningkatkan prestasi dengan menjalankan tugas combiner. Taktik mudah ini, yang ditunjukkan di sini, melibatkan pelaksanaan penurunan output tempatan untuk tugas pemetaan individu.
Dalam majoriti kes, tiada pengaturcaraan tambahan diperlukan, kerana anda boleh memberitahu sistem untuk menggunakan fungsi reducer. Jika anda tidak menggunakan fungsi reducer anda, anda perlu memastikan bahawa output fungsi combiner adalah sama dengan fungsi reducer.
Terserah pada kerangka MapReduce sama ada fungsi combiner perlu dijalankan sekali, beberapa kali, atau tidak, jadi sangat kritikal bahawa kod combiner memastikan bahawa hasil akhir tidak terpengaruh oleh banyak larian. Menjalankan kombinen boleh menghasilkan faedah prestasi dengan mengurangkan jumlah data perantaraan yang sepatutnya perlu dipindahkan ke atas rangkaian.
Ini juga mengurangkan jumlah pemprosesan yang perlu dilakukan pengurangan. Anda menjalankan tugas tambahan di sini, jadi kemungkinan bahawa sebarang keuntungan prestasi dapat diabaikan atau mungkin menyebabkan prestasi keseluruhan yang lebih buruk. Perbatuan anda mungkin berbeza-beza, jadi cuba dengan teliti ini.
Selepas semua keputusan tugas pemetaan disalin ke nod tugas reducer, fail-fail ini digabungkan dan disusun.