Video: TensorFlow Ecosystem: Integrating TensorFlow with your infrastructure (TensorFlow Dev Summit 2017) 2024
Aplikasi MapReduce memproses data dalam pemecah masukan berdasarkan basis data record-by-record dan setiap record dipahami oleh MapReduce sebagai kunci / nilai pasangan Setelah pemecahan masukan telah dihitung, tugas pemeta dapat mulai memprosesnya - yaitu, tepat setelah fasilitas penjadwalan Resource Manager memberi mereka sumber pemrosesan mereka. (Di Hadoop 1, JobTracker menugaskan tugas pemetaan ke slot pemrosesan tertentu.)
Tugas pemetaan itu sendiri memproses inputnya membagi satu record pada satu waktu - pada gambar, catatan tunggal ini ditunjukkan oleh pasangan kunci / nilai. Dalam kasus data penerbangan kami, saat input split dihitung (menggunakan metode pemrosesan file default untuk file teks), anggapannya adalah bahwa setiap baris dalam file teks adalah satu catatan.
Untuk setiap record, teks dari baris itu sendiri mewakili nilai, dan offset byte dari setiap baris dari awal split dianggap sebagai kuncinya.
Anda mungkin bertanya-tanya mengapa nomor baris tidak digunakan sebagai pengganti offset byte. Bila Anda menganggap bahwa file teks yang sangat besar dipecah menjadi banyak blok data individual, dan diproses sebanyak mungkin, nomor baris adalah konsep berisiko.
Jumlah baris di setiap perpecahan bervariasi, jadi tidak mungkin menghitung jumlah baris sebelum yang sedang diproses. Namun, dengan offset byte, Anda bisa tepat, karena setiap blok memiliki jumlah byte yang tetap.
Sebagai tugas pemetaan proses setiap record, ia menghasilkan pasangan kunci / nilai baru: Kunci dan nilainya di sini bisa sangat berbeda dari pasangan input. Output dari tugas mapper adalah kumpulan lengkap dari semua pasangan kunci / nilai ini.
Sebelum file output akhir untuk setiap tugas mapper ditulis, output dipartisi berdasarkan kunci dan disortir. Partisi ini berarti semua nilai untuk setiap kunci dikelompokkan bersama.
Dalam kasus aplikasi sampel yang cukup mendasar, hanya ada satu peredam tunggal, jadi semua output dari tugas mapper ditulis ke satu file. Tapi dalam kasus dengan banyak reduksi, setiap tugas mapper dapat menghasilkan banyak file output juga.
Rincian file output ini didasarkan pada kunci partisi. Misalnya, jika hanya ada tiga kunci partisi yang berbeda untuk tugas pemetaan dan Anda telah mengonfigurasikan tiga reduksi untuk pekerjaan itu, akan ada tiga file keluaran mapper. Dalam contoh ini, jika tugas mapper tertentu memproses split input dan menghasilkan output dengan dua dari tiga tombol, hanya ada dua file output.
Selalu kompres file output tugas mapper Anda. Manfaat terbesar di sini adalah pada peningkatan kinerja, karena menulis file hasil yang lebih kecil meminimalkan biaya yang tak terelakkan untuk mentransfer keluaran mapper ke simpul dimana reduksi berjalan.
Partisi default lebih dari cukup dalam kebanyakan situasi, namun terkadang Anda mungkin ingin menyesuaikan bagaimana data dipartisi sebelum diproses oleh reduksi. Misalnya, Anda mungkin ingin data di kumpulan hasil Anda diurutkan menurut kunci dan nilainya - yang dikenal sebagai sortir sekunder .
Untuk melakukan ini, Anda dapat mengganti partisi default dan menerapkannya sendiri. Proses ini memerlukan perawatan, namun, karena Anda ingin memastikan bahwa jumlah record di setiap partisi seragam. (Jika satu peredam harus memproses lebih banyak data daripada pengurang lainnya, Anda akan menunggu pekerjaan MapReduce Anda selesai sementara pengurang terlalu banyak bekerja sama slogging melalui kumpulan data yang tidak proporsional.)
Dengan menggunakan file menengah berukuran seragam, Anda Sebaiknya manfaatkan paralelisme yang tersedia dalam pengolahan MapReduce.