Apa itu MapReduce di Hadoop? Archikuliah & Diagram

โšก Ringkasan Cerdas

MapReduce adalah model pemrograman Hadoop yang mengubah dataset besar menjadi hasil kecil dengan menjalankan fungsi map pada setiap input yang telah dibagi, kemudian menjalankan fungsi reduce pada nilai-nilai perantara yang telah dikelompokkan.

  • ๐Ÿ”˜ Empat fase: Setiap pekerjaan berjalan sebagai pemisahan, pemetaanping, mengacak dan mengurangi, dengan pasangan kunci-nilai mengalir di antara setiap tahap.
  • โ˜‘๏ธ Contoh yang dikerjakan: Tiga baris teks menjadi tujuh hitungan kata, yang menunjukkan secara tepat kontribusi setiap fase.
  • โœ… Ukuran terpisah: Satu tugas pemetaan berjalan per pembagian input, dan ukuran pembagian biasanya sesuai dengan ukuran blok HDFS.
  • ๐Ÿงช Data sementara: Output peta ditulis ke disk lokal dan bukan ke HDFS, karena mereplikasi data yang tidak terpakai akan membuang-buang sumber daya.
  • ๏ธ Koordinasi: Sebuah pekerjaanTracker menjadwalkan pekerjaan dan tugasTracKERS melaporkan kemajuan melalui sinyal detak jantung periodik.
  • โš ๏ธ Catatan versi: YARN menggantikan pasangan tersebut dengan ResourceManager, NodeManagers, dan ApplicationMaster per-job dari Hadoop 2.x.

Arsitektur MapReduce di Hadoop dijelaskan dengan sebuah contoh.

Apa itu MapReduce di Hadoop?

MapReduce adalah kerangka kerja perangkat lunak dan model pemrograman yang digunakan untuk memproses sejumlah besar data. Program MapReduce bekerja dalam dua fase, yaitu Map dan Reduce. Tugas Map berkaitan dengan pemisahan dan pemetaan.ping dari data sementara tugas Reduce mengacak dan mengurangi data.

Hadoop mampu menjalankan program MapReduce yang ditulis dalam berbagai bahasa: Java, rubi, Python, dan C++Program MapReduce bersifat paralel, sehingga sangat berguna untuk melakukan analisis data skala besar menggunakan banyak mesin dalam klaster.

Input untuk setiap fase adalah pasangan kunci-nilai. Selain itu, setiap programmer perlu menentukan dua fungsi: fungsi map dan fungsi reduce.

PetaKurangi Archikuliah di Big Data dijelaskan dengan Contoh

Seluruh proses tersebut melalui empat fase eksekusi yaitu pemisahan, pemetaanping, mengocok, dan mengurangi.

Nah, dalam tutorial MapReduce ini, mari kita pahami dengan contoh MapReduce.

Misalkan Anda memiliki data input berikut untuk MapReduce Anda. Big data program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Diagram di bawah ini tracketiga garis tersebut melalui setiap fase, dari pemisahan input di sebelah kiri hingga penghitungan kata akhir di sebelah kanan.

Diagram arsitektur MapReduce tracdengan membagi tiga jalur input, petakanping, mengocok dan mengurangi

Hasil akhir dari tugas MapReduce adalah

buruk 1
Kelas 1
baik 1
Hadoop 3
is 2
untuk 1
Selamat Datang 1

Data tersebut melewati fase-fase berikut dari MapReduce dalam Big Data.

Pembagian Input

Input pada MapReduce dalam pekerjaan Big Data dibagi menjadi bagian-bagian berukuran tetap yang disebut input split. Input split adalah bagian dari input yang dikonsumsi oleh satu kali proses map.

Lokasiping

Ini adalah fase pertama dalam eksekusi program MapReduce. Pada fase ini, data di setiap split diteruskan ke sebuah map.ping fungsi untuk menghasilkan nilai keluaran. Dalam contoh kita, tugas dari map adalah...ping Tahap selanjutnya adalah menghitung jumlah kemunculan setiap kata dari input yang telah dipisahkan (detail lebih lanjut tentang input yang telah dipisahkan akan dijelaskan di bawah) dan menyiapkan daftar dalam bentuk .

Mengocok

Fase ini menggunakan output dari Map.ping fase. Tugasnya adalah mengkonsolidasikan catatan-catatan yang relevan dari Peta.ping keluaran fase. Dalam contoh kita, kata-kata yang sama dikelompokkan bersama dengan frekuensinya masing-masing.

Mengurangi

Pada fase ini, nilai keluaran dari fase Pengacakan digabungkan. Fase ini menggabungkan nilai-nilai dari fase Pengacakan dan mengembalikan satu nilai keluaran tunggal. Singkatnya, fase ini meringkas seluruh kumpulan data.

Dalam contoh kita, fase ini menggabungkan nilai-nilai dari fase Pengacakan, yaitu, menghitung total kemunculan setiap kata.

PetaKurangi Architekstur dijelaskan secara rinci

Poin-poin di bawah ini menjelaskan bagaimana tugas split, map, dan reduce sebenarnya ditempatkan dan disimpan di seluruh klaster.

  • Satu tugas pemetaan dibuat untuk setiap pemisahan, yang kemudian mengeksekusi fungsi pemetaan untuk setiap catatan dalam pemisahan tersebut.
  • Selalu menguntungkan untuk memiliki beberapa pembagian (split) karena waktu yang dibutuhkan untuk memproses satu pembagian relatif singkat dibandingkan dengan waktu yang dibutuhkan untuk memproses seluruh input. Ketika pembagiannya lebih kecil, pemrosesan akan lebih seimbang bebannya, karena pembagian tersebut diproses secara paralel.
  • Namun, pembagian tugas yang terlalu kecil juga tidak diinginkan. Ketika pembagian tugas terlalu kecil, biaya tambahan untuk mengelola pembagian tugas dan membuat tugas pemetaan mulai mendominasi total waktu eksekusi pekerjaan.
  • Untuk sebagian besar pekerjaan, lebih baik membuat ukuran pemisahan sama dengan ukuran sebuah HDFS blok, yang secara default berukuran 128 MB mulai dari Hadoop 2.x dan seterusnya (sebelumnya 64 MB di Hadoop 1.x) dan dikendalikan oleh dfs.blocksize milik.
  • Eksekusi tugas map menghasilkan penulisan output ke disk lokal pada node yang bersangkutan, dan bukan ke HDFS.
  • Alasan memilih disk lokal daripada HDFS adalah untuk menghindari replikasi yang terjadi selama operasi penyimpanan HDFS.
  • Keluaran peta merupakan keluaran antara yang diproses dengan tugas reduksi untuk menghasilkan keluaran akhir.
  • Setelah pekerjaan selesai, keluaran peta dapat dibuang. Jadi, menyimpannya dalam HDFS dengan replikasi menjadi berlebihan.
  • Jika terjadi kegagalan simpul, sebelum keluaran peta digunakan oleh tugas pengurangan, Hadoop menjalankan kembali tugas peta pada simpul lain dan membuat ulang keluaran peta.
  • Tugas reduce tidak bekerja berdasarkan konsep lokalitas data. Output dari setiap tugas map dimasukkan ke tugas reduce. Output map kemudian ditransfer ke mesin tempat tugas reduce dijalankan.
  • Pada mesin ini, output digabungkan dan kemudian diteruskan ke fungsi pengurangan yang ditentukan pengguna.
  • Berbeda dengan output map, output reduce disimpan di HDFS (replika pertama disimpan di node lokal dan replika lainnya disimpan di node di luar rak). Jadi, penulisan output reduce memang mengkonsumsi bandwidth jaringan, tetapi hanya sebanyak yang dikonsumsi oleh pipeline penulisan HDFS normal.

Bagaimana MapReduce Mengorganisir Pekerjaan?

Dalam tutorial MapReduce ini, kita akan mempelajari cara kerja MapReduce.

Hadoop membagi pekerjaan menjadi beberapa tugas. Ada dua jenis tugas:

  1. Tugas peta (Pembagian & Peta)ping)
  2. Mengurangi tugas (Mengacak, Mengurangi)

Proses eksekusi lengkap, yaitu eksekusi tugas Map dan Reduce, dikendalikan oleh dua jenis entitas yang disebut:

  1. PekerjaanTracker: bertindak seperti seorang master dan bertanggung jawab atas eksekusi lengkap dari pekerjaan yang diajukan.
  2. Tugas GandaTrackers: bertindak seperti budak, masing-masing melakukan sebagian dari pekerjaan tersebut.

Untuk setiap pekerjaan yang diajukan untuk dieksekusi dalam sistem, terdapat satu Pekerjaan.Tracker yang berada di NameNode, dan ada beberapa TaskTrackers yang berada di DataNodes.

Catatan: PekerjaanTracker dan TugasTracPasangan ker termasuk dalam MapReduce versi 1 (Hadoop 1.x). Mulai dari Hadoop 2.x dan seterusnya, YARN membagi tugas-tugas tersebut antara ResourceManager di seluruh klaster, NodeManager di setiap node, dan satu ApplicationMaster per pekerjaan, meskipun fase map, shuffle, dan reduce itu sendiri tidak berubah.

Diagram di bawah ini menunjukkan bagaimana pekerjaan yang diajukan dipecah menjadi tugas-tugas dan tracberked di seluruh gugusan.

Diagram yang menunjukkan pembagian pekerjaan menjadi tugas map dan reduce. tracoleh PekerjaanTracker dan TugasTracceri

  • Suatu pekerjaan dibagi menjadi beberapa tugas yang kemudian dijalankan pada beberapa node data dalam sebuah klaster.
  • Itu adalah tanggung jawab pekerjaan. tracker untuk mengoordinasikan aktivitas dengan menjadwalkan tugas untuk dijalankan pada node data yang berbeda.
  • Pelaksanaan tugas individual kemudian ditangani oleh tugas tersebut. tracker, yang berada di setiap node data yang menjalankan bagian dari pekerjaan tersebut.
  • Tugas tracTanggung jawab ker adalah mengirimkan laporan kemajuan pekerjaan. tracker.
  • Selain itu, tugas tracker secara berkala mengirimkan sinyal 'detak jantung' ke JobTracker agar dapat memberitahukannya tentang keadaan sistem saat ini.
  • Jadi, pekerjaan itu tracker terus track dari keseluruhan kemajuan setiap pekerjaan. Jika tugas gagal, pekerjaan tersebut tracker dapat menjadwalkannya ulang pada tugas yang berbeda tracker.

Pertanyaan Umum Demo Slot

YARN melakukannya, mulai dari Hadoop 2.x dan seterusnya. ResourceManager di seluruh klaster menangani penjadwalan, NodeManager berjalan di setiap node, dan satu ApplicationMaster per pekerjaan. tracks tugasnya. Fase map dan reduce tidak berubah.

Model yang dilatih berdasarkan riwayat pekerjaan sebelumnya memprediksi waktu eksekusi, merekomendasikan ukuran pemisahan dan jumlah reducer, serta mendeteksi ketidakseimbangan sejak dini. Mereka juga memantau nilai penghitung, menandai pekerjaan yang berjalan lambat atau gagal sebelum eksekusi selesai.

Copilot menangani kerangka kerja dengan baik: tanda tangan mapper dan reducer, generik, impor, dan panggilan konfigurasi driver. Keputusan skema, seperti bidang mana yang merupakan grup...ping Intinya, masih dibutuhkan pengembang yang memahami data tersebut.

Titik awal yang umum adalah sedikit di bawah jumlah slot reduksi yang tersedia, sehingga setiap reduksi berjalan dalam satu gelombang. Terlalu sedikit slot akan menghasilkan ekor yang panjang; terlalu banyak slot akan menghasilkan banyak file keluaran kecil.

Combiner adalah mini-reducer opsional yang berjalan pada output map sebelum melewati jaringan. Ini mengurangi lalu lintas shuffle secara signifikan, tetapi hanya dapat digunakan ketika operasi reduce bersifat asosiatif dan komutatif.

Spark menyimpan hasil sementara di memori dan mengekspresikan suatu pekerjaan sebagai satu grafik berarah dari tahapan-tahapan, sedangkan MapReduce menulis output sementara ke disk di antara fase-fase. Spark Oleh karena itu, jauh lebih cepat untuk pekerjaan iteratif.

Partisi menentukan reducer mana yang menerima setiap kunci perantara, secara default melakukan hashing kunci modulo jumlah reducer. Sebuah kunci khusus dibuat ketika hash tersebut menyebabkan satu reducer kelebihan beban.

Hadoop membuat satu tugas map untuk setiap input split, dan split tersebut berupa rentang byte, bukan seluruh file. Satu file besar menghasilkan banyak split; banyak file kecil menghasilkan tugas map yang kecil dan tidak efisien.

Ringkaslah postingan ini dengan: