Video: 2018-2019 Raptor Whipple Stage 1 Performance Kit Review & Dyno Test 2024
Setelah fase Peta dan sebelum awal fase Mengurangi adalah proses handoff, yang dikenal sebagai shuffle dan urutkan . Di sini, data dari tugas mapper disiapkan dan dipindahkan ke node dimana tugas reducer akan dijalankan. Ketika tugas mapper selesai, hasilnya diurutkan berdasarkan kunci, dipartisi jika ada banyak reducer, dan kemudian ditulis ke disk.
Anda dapat melihat konsep ini pada gambar berikut, yang menunjukkan aliran pengolahan data MapReduce dan interaksinya dengan komponen fisik cluster Hadoop. (Satu catatan cepat: Data dalam memori diwakili oleh kotak putih, dan data yang disimpan ke disk diwakili oleh kotak abu-abu.)
Untuk mempercepat proses MapReduce secara keseluruhan, data segera dipindahkan ke node tugas peredam, untuk menghindari banjir aktivitas jaringan saat tugas pemeriksa akhir menyelesaikan pekerjaannya. Transfer ini terjadi saat tugas mapper berjalan, karena output untuk setiap record - ingat - disimpan dalam memori tugas reducer yang menunggu. (Anda dapat mengkonfigurasi apakah ini terjadi - atau tidak terjadi - dan juga jumlah benang yang terlibat.)
Ingatlah bahwa meskipun tugas peredam mungkin sebagian besar dari keluaran tugas pengumpul, pemrosesan tugas dikurangi tidak dapat dimulai sampai semua tugas pengeta selesai.
Untuk menghindari skenario dimana kinerja pekerjaan MapReduce terhambat oleh satu tugas mapper yang acak yang berjalan pada simpul budak yang berkinerja buruk, kerangka MapReduce menggunakan konsep yang disebut eksekusi spekulatif .
Jika beberapa tugas mapper berjalan lebih lambat dari yang dianggap masuk akal, Master Aplikasi akan menelurkan tugas duplikat (di Hadoop 1, JobTracker melakukan ini). Apapun tugas yang diselesaikan pertama - duplikat atau yang asli - hasilnya disimpan ke disk, dan tugas lainnya terbunuh. Jika Anda memantau pekerjaan Anda dengan cermat dan bertanya-tanya mengapa ada lebih banyak tugas pengatur berjalan daripada yang Anda harapkan, ini adalah alasan yang mungkin.
Keluaran dari tugas mapper tidak ditulis ke HDFS, melainkan ke disk lokal pada node budak tempat tugas pengemudi dijalankan. Dengan demikian, ini tidak direplikasi di cluster Hadoop.
Selain mengompres output, Anda berpotensi meningkatkan kinerja dengan menjalankan tugas penggabung. Taktik sederhana ini, yang ditunjukkan di sini, melibatkan pengurangan keluaran lokal untuk tugas pemeta individual.
Pada sebagian besar kasus, tidak ada pemrograman tambahan yang diperlukan, karena Anda dapat memberitahu sistem untuk menggunakan fungsi peredam. Jika Anda tidak menggunakan fungsi peredam Anda, Anda perlu memastikan bahwa keluaran fungsi penggabung sama dengan fungsi peredam.
Terserah pada kerangka MapReduce apakah fungsi penggabung perlu dijalankan sekali, beberapa kali, atau tidak sama sekali, jadi penting bahwa kode penggabung memastikan bahwa hasil akhir tidak terpengaruh oleh beberapa putaran. Menjalankan penggabung dapat menghasilkan keuntungan kinerja dengan mengurangi jumlah data perantara yang jika tidak perlu ditransfer melalui jaringan.
Ini juga menurunkan jumlah pemrosesan yang harus dilakukan peredam reducer. Anda menjalankan tugas ekstra di sini, jadi ada kemungkinan keuntungan kinerja apapun dapat diabaikan atau bahkan menghasilkan kinerja keseluruhan yang buruk. Jarak tempuh Anda mungkin berbeda, jadi uji ini dengan hati-hati.
Setelah semua hasil tugas mapper disalin ke node tugas reducer, file-file ini digabungkan dan diurutkan.