Video: Tutorial MapInfo (Tahap Perisapan) - Pembuatan Peta 2024
Aplikasi MapReduce memproses data dalam pemisah input pada dasar rekod demi rekod dan setiap rekod dipahami oleh MapReduce menjadi kunci / nilai Pasangan . Selepas pemisahan input dikira, tugas pemetaan boleh mula memprosesnya - iaitu, selepas kemudahan penjadualan Pengurus Sumber memberikan mereka sumber pemprosesan. (Dalam Hadoop 1, JobTracker memberikan tugasan mapper ke slot pemprosesan khusus.)
Tugas pemetaan itu sendiri memproses inputnya berpecah satu rekod pada satu masa - dalam angka, rekod tunggal ini diwakili oleh pasangan kunci / nilai. Dalam kes data penerbangan kami, apabila pecahan input dikira (menggunakan kaedah pemprosesan fail lalai untuk fail teks), andaian adalah bahawa setiap baris dalam fail teks adalah satu rekod tunggal.
Bagi setiap rekod, teks baris itu sendiri mewakili nilai, dan offset byte setiap baris dari permulaan perpecahan dianggap sebagai kunci.
Anda mungkin tertanya-tanya mengapa nombor baris tidak digunakan dan bukannya offset byte. Apabila anda menganggap bahawa fail teks yang sangat besar dipecah menjadi banyak blok data individu, dan diproses sebagai banyak pecahan, nombor baris adalah konsep yang berisiko.
Bilangan baris dalam setiap perpecahan berbeza-beza, oleh itu adalah mustahil untuk mengira bilangan baris sebelum yang diproses. Walau bagaimanapun, dengan offset byte, anda boleh menjadi tepat, kerana setiap blok mempunyai bilangan bait tetap.
Seperti tugas pemetaan memproses setiap rekod, ia menghasilkan pasangan kunci / nilai baru: Kunci dan nilai di sini boleh sama sekali berbeza dari pasangan input. Output tugas mapper adalah koleksi penuh semua pasangan kunci / nilai ini.
Sebelum fail output akhir untuk setiap tugas mapper ditulis, output dibahagikan berdasarkan kunci dan disusun. Pembahagian ini bermaksud bahawa semua nilai bagi setiap kunci dikumpulkan bersama.
Dalam kes aplikasi sampel yang agak asas, hanya terdapat pengurang tunggal, jadi semua output tugas mapper dituliskan kepada satu fail. Tetapi dalam kes-kes dengan banyak reducers, setiap tugas mapper boleh menghasilkan banyak fail output juga.
Pecahan fail output ini berdasarkan pada kunci partitioning. Sebagai contoh, jika terdapat hanya tiga output kekunci partition yang berbeza untuk tugas-tugas pemetaan dan anda telah mengkonfigurasi tiga pengurangan untuk kerja, akan ada tiga fail output pemetaan. Dalam contoh ini, jika tugas pemetaan tertentu memproses pemisahan masukan dan menghasilkan output dengan dua daripada tiga kunci, hanya terdapat dua fail output.
Sentiasa mampatkan fail output tugas pemetaan anda. Manfaat terbesar di sini adalah dalam prestasi prestasi, kerana penulisan fail output yang lebih kecil meminimumkan kos yang tidak dapat dielakkan untuk memindahkan output mapper ke node di mana pengurangannya berjalan.
Pemisah lalai adalah lebih daripada mencukupi dalam kebanyakan situasi, tetapi kadang-kadang anda mungkin mahu menyesuaikan bagaimana data dibahagikan sebelum diproses oleh reducers. Sebagai contoh, anda mungkin mahu data dalam keputusan anda ditetapkan disusun oleh kunci dan nilai mereka - dikenali sebagai jenis menengah .
Untuk melakukan ini, anda boleh menggantikan partition lalai dan melaksanakan sendiri. Proses ini memerlukan sedikit perhatian, bagaimanapun, kerana anda ingin memastikan bahawa jumlah rekod dalam setiap partition adalah seragam. (Jika pengurangan perlu memproses lebih banyak data daripada pengurangan yang lain, anda akan menunggu kerja MapReduce anda selesai manakala pengurang kerja yang satu lagi menyumbat melalui set data yang tidak seimbang.)
Menggunakan fail perantaraan bersaiz seragam, anda boleh memanfaatkan lebih paralelisme yang terdapat dalam pemprosesan MapReduce.