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.

Jenis Gabungan di Hadoop MapReduce
Jenis Gabungan di Hadoop MapReduce

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

Contoh MapReduce
File 1
Contoh MapReduce
File 2

Memasukkan: Kumpulan data masukan adalah file txt, DeptName.txt & DepStrength.txt

Unduh File Masukan Dari Sini

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_

Contoh MapReduce

Langkah 1) Salin file zip ke lokasi pilihan Anda

Contoh MapReduce

Langkah 2) Buka kompresi File Zip

sudo tar -xvf MapReduceJoin.tar.gz

Contoh MapReduce

Langkah 3) Masuk ke direktori MapReduceJoin/

cd MapReduceJoin/

Contoh MapReduce

Langkah 4) Mulai Hadoop

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Contoh MapReduce

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 /

Contoh MapReduce

Langkah 6) Jalankan program menggunakan perintah di bawah ini-

$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin

Contoh MapReduce

Contoh MapReduce

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

Contoh MapReduce

Hasilnya juga dapat dilihat melalui antarmuka web sebagai-

Contoh MapReduce

Sekarang pilih 'Jelajahi sistem file' dan navigasikan ke atas /output_mapreducejoin

Contoh MapReduce

Open bagian-r-00000

Contoh MapReduce

Hasil ditampilkan

Contoh MapReduce

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

  1. 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.
  2. 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.