Hadoop MapReduce Gabung & Kontra dengan Contoh
Apa itu Gabung di Mapreduce?
Gabung Mapreduce operasi digunakan untuk menggabungkan dua kumpulan data besar. Namun, proses ini melibatkan penulisan banyak kode untuk melakukan operasi penggabungan yang sebenarnya. Penggabungan dua dataset dimulai dengan membandingkan ukuran masing-masing dataset. Jika satu kumpulan data lebih kecil dibandingkan dengan kumpulan data lainnya, maka kumpulan data yang lebih kecil akan didistribusikan ke setiap node data di cluster.
Setelah gabungan di MapReduce didistribusikan, Mapper atau Reducer menggunakan kumpulan data yang lebih kecil untuk melakukan pencarian rekaman yang cocok dari kumpulan data besar dan kemudian menggabungkan rekaman tersebut untuk membentuk rekaman keluaran.
Jenis Gabung
Bergantung pada tempat di mana penggabungan sebenarnya dilakukan, penggabungan di Hadoop diklasifikasikan menjadi-
1. Gabungan sisi peta – Ketika penggabungan dilakukan oleh pembuat peta, maka disebut sebagai penggabungan sisi peta. Dalam tipe ini, penggabungan dilakukan sebelum data benar-benar digunakan oleh fungsi peta. Input pada setiap peta wajib dalam bentuk partisi dan diurutkan. Selain itu, jumlah partisi harus sama dan harus diurutkan berdasarkan kunci gabungan.
2. Gabungan sisi pereduksi – Ketika penggabungan dilakukan oleh peredam, hal ini disebut sebagai penggabungan sisi-reduksi. Gabungan ini tidak diperlukan untuk memiliki kumpulan data dalam bentuk terstruktur (atau dipartisi).
Di sini, pemrosesan sisi peta memancarkan kunci gabungan dan tupel terkait dari kedua tabel. Sebagai efek dari pemrosesan ini, semua tupel dengan kunci gabungan yang sama masuk ke dalam peredam yang sama yang kemudian menggabungkan catatan dengan kunci gabungan yang sama.
Alur proses keseluruhan gabungan di Hadoop digambarkan dalam diagram di bawah ini.

Cara Menggabungkan dua Kumpulan Data: Contoh MapReduce
Ada dua Kumpulan Data dalam dua File Berbeda (ditunjukkan di bawah). Kunci Dept_ID umum di kedua file. Tujuannya adalah menggunakan MapReduce Join untuk menggabungkan file-file ini


Memasukkan: Kumpulan data masukan adalah file txt, DeptName.txt & DepStrength.txt
Pastikan Anda telah menginstal Hadoop. Sebelum Anda memulai dengan contoh proses aktual MapReduce Join, ubah pengguna menjadi 'hduser' (id yang digunakan saat konfigurasi Hadoop, Anda dapat beralih ke userid yang digunakan selama konfigurasi Hadoop Anda).
su - hduser_
Langkah 1) Salin file zip ke lokasi pilihan Anda
Langkah 2) Buka kompresi File Zip
sudo tar -xvf MapReduceJoin.tar.gz
Langkah 3) Masuk ke direktori MapReduceJoin/
cd MapReduceJoin/
Langkah 4) Mulai Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Langkah 5) DeptStrength.txt dan DeptName.txt adalah file input yang digunakan untuk program contoh MapReduce Join ini.
File ini perlu disalin ke HDFS menggunakan perintah di bawah ini-
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
Langkah 6) Jalankan program menggunakan perintah di bawah ini-
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
Langkah 7) Setelah eksekusi, file keluaran (bernama 'part-00000') akan disimpan di direktori /output_mapreducejoin di HDFS
Hasilnya dapat dilihat menggunakan antarmuka baris perintah
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Hasilnya juga dapat dilihat melalui antarmuka web sebagai-
Sekarang pilih 'Jelajahi sistem file' dan navigasikan ke atas /output_mapreducejoin
Open bagian-r-00000
Hasil ditampilkan
CATATAN: Harap dicatat bahwa sebelum menjalankan program ini untuk kali berikutnya, Anda perlu menghapus direktori keluaran /output_mapreducejoin
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternatifnya adalah dengan menggunakan nama yang berbeda untuk direktori keluaran.
Apa itu Penghitung di MapReduce?
A Penghitung di MapReduce adalah mekanisme yang digunakan untuk mengumpulkan dan mengukur informasi statistik tentang pekerjaan dan acara MapReduce. Penghitung melacak berbagai statistik pekerjaan di MapReduce seperti jumlah operasi yang terjadi dan kemajuan operasi. Penghitung digunakan untuk diagnosis masalah di MapReduce.
Penghitung Hadoop mirip dengan memasukkan pesan log ke dalam kode untuk peta atau pengurangan. Informasi ini dapat berguna untuk mendiagnosis masalah dalam pemrosesan pekerjaan MapReduce.
Biasanya, penghitung di Hadoop ini ditentukan dalam program (dipetakan atau dikurangi) dan bertambah selama eksekusi ketika peristiwa atau kondisi tertentu (khusus untuk penghitung tersebut) terjadi. Penerapan penghitung Hadoop yang sangat baik adalah melacak catatan valid dan tidak valid dari kumpulan data masukan.
Jenis Penghitung MapReduce
Pada dasarnya ada 2 jenis PetaKurangi counter
- Penghitung Bawaan Hadoop:Ada beberapa penghitung Hadoop bawaan yang ada per pekerjaan. Di bawah ini adalah grup penghitung bawaan-
- Penghitung Tugas MapReduce – Mengumpulkan informasi spesifik tugas (misalnya, jumlah catatan masukan) selama waktu pelaksanaannya.
- Penghitung Sistem File – Mengumpulkan informasi seperti jumlah byte yang dibaca atau ditulis oleh suatu tugas
- Penghitung FileInputFormat – Mengumpulkan informasi sejumlah byte yang dibaca melalui FileInputFormat
- Penghitung FileOutputFormat – Mengumpulkan informasi sejumlah byte yang ditulis melalui FileOutputFormat
- Penghitung Pekerjaan – Penghitung ini digunakan oleh JobTracker. Statistik yang dikumpulkan oleh mereka mencakup, misalnya, jumlah tugas yang diluncurkan untuk suatu pekerjaan.
- Penghitung Buatan Pengguna
Selain penghitung bawaan, pengguna dapat menentukan penghitungnya sendiri menggunakan fungsi serupa yang disediakan oleh bahasa pemrograman. Misalnya, dalam Java 'enum' digunakan untuk mendefinisikan penghitung yang ditentukan pengguna.
Contoh Penghitung
Contoh MapClass dengan Counter untuk menghitung jumlah nilai yang hilang dan tidak valid. File data masukan yang digunakan dalam tutorial ini Kumpulan data masukan kami adalah file CSV, PenjualanJan2009.csv
public static class MapClass extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { static enum SalesCounters { MISSING, INVALID }; public void map ( LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException { //Input string is split using ',' and stored in 'fields' array String fields[] = value.toString().split(",", -20); //Value at 4th index is country. It is stored in 'country' variable String country = fields[4]; //Value at 8th index is sales data. It is stored in 'sales' variable String sales = fields[8]; if (country.length() == 0) { reporter.incrCounter(SalesCounters.MISSING, 1); } else if (sales.startsWith("\"")) { reporter.incrCounter(SalesCounters.INVALID, 1); } else { output.collect(new Text(country), new Text(sales + ",1")); } } }
Cuplikan kode di atas menunjukkan contoh implementasi penghitung di Hadoop Map Reduce.
Di sini, Penghitung Penjualan adalah penghitung yang ditentukan menggunakan 'enum'. Ini digunakan untuk menghitung HILANG dan Tidak valid catatan masukan.
Dalam cuplikan kode, jika 'negara' bidang memiliki panjang nol maka nilainya hilang dan karenanya penghitungnya sesuai SalesCounters.HILANG bertambah.
Selanjutnya, jika 'penjualan' bidang dimulai dengan a " maka catatan tersebut dianggap TIDAK VALID. Hal ini ditunjukkan dengan bertambahnya penghitung Penghitung Penjualan.INVALID.