Hadoop MapReduce Sertai & Pembilang dengan Contoh

Isi kandungan:

Anonim

Apa yang Bergabung dalam Mapreduce?

Operasi Mapreduce Join digunakan untuk menggabungkan dua set data besar. Walau bagaimanapun, proses ini melibatkan penulisan banyak kod untuk melakukan operasi bergabung yang sebenarnya. Bergabung dengan dua set data bermula dengan membandingkan ukuran setiap set data. Sekiranya satu set data lebih kecil berbanding dengan set data yang lain, maka set data yang lebih kecil diedarkan ke setiap simpul data dalam kluster.

Setelah gabungan di MapReduce diedarkan, Mapper atau Reducer menggunakan set data yang lebih kecil untuk melakukan pencarian untuk mencocokkan rekod dari set data besar dan kemudian menggabungkan rekod tersebut untuk membentuk rekod output.

Dalam tutorial ini, anda akan belajar-

  • Apa itu Gabung dalam MapReduce?
  • Jenis Penyertaan
  • Cara Bergabung dengan dua Set Data: Contoh MapReduce
  • Apa itu Kaunter di MapReduce?
  • Jenis Pembilang MapReduce
  • Contoh Pembilang

Jenis Penyertaan

Bergantung pada tempat penyertaan sebenar dilakukan, bergabung dalam Hadoop diklasifikasikan menjadi-

1. Sambungan sisi peta - Apabila gabung dilakukan oleh pemeta, ia dipanggil sebagai gabung sisi peta. Dalam jenis ini, penggabungan dilakukan sebelum data benar-benar digunakan oleh fungsi peta. Wajib untuk memasukkan setiap peta dalam bentuk partisi dan mengikut urutan. Juga, mesti ada sebilangan partisi yang sama dan mesti disusun mengikut kunci bergabung.

2. Gabungan sisi -reduce - Apabila penyambungan dilakukan oleh pengurang, ia dipanggil sebagai gabungan sisi-sisi. Tidak ada keperluan dalam penyertaan ini untuk memiliki set data dalam bentuk terstruktur (atau berpartisi).

Di sini, pemprosesan sisi peta mengeluarkan kunci bergabung dan tupel yang sama dari kedua-dua jadual. Sebagai kesan dari pemprosesan ini, semua tupel dengan kunci bergabung yang sama jatuh ke dalam pengurang yang sama yang kemudian bergabung dengan rekod dengan kunci bergabung yang sama.

Aliran proses keseluruhan bergabung dalam Hadoop digambarkan dalam rajah di bawah.

Jenis Bergabung dalam Hadoop MapReduce

Cara Bergabung dengan dua Set Data: Contoh MapReduce

Terdapat dua Set Data dalam dua Fail Berbeza (ditunjukkan di bawah). Key Dept_ID adalah biasa dalam kedua-dua fail. Tujuannya adalah untuk menggunakan MapReduce Join untuk menggabungkan fail-fail ini

Fail 1
Fail 2

Input: Kumpulan data input adalah fail txt, DeptName.txt & DepStrength.txt

Muat turun Fail Input Dari Sini

Pastikan Hadoop dipasang. Sebelum anda memulakan dengan contoh proses MapReduce Join yang sebenarnya, ubah pengguna menjadi 'hduser' (id digunakan semasa konfigurasi Hadoop, anda boleh beralih ke userid yang digunakan semasa konfigurasi Hadoop anda).

su - hduser_

Langkah 1) Salin fail zip ke lokasi pilihan anda

Langkah 2) Nyahkompreskan Fail Zip

sudo tar -xvf MapReduceJoin.tar.gz

Langkah 3) Pergi ke direktori MapReduceJoin /

cd MapReduceJoin/

Langkah 4) Mulakan Hadoop

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

Langkah 5) DeptStrength.txt dan DeptName.txt adalah fail input yang digunakan untuk program contoh MapReduce Join ini.

Fail ini perlu disalin ke HDFS menggunakan arahan di bawah-

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

Langkah 6) Jalankan program menggunakan arahan di bawah-

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

Langkah 7) Setelah dijalankan, file output (bernama 'part-00000') akan disimpan di direktori / output_mapreducejoin di HDFS

Hasilnya dapat dilihat menggunakan antara muka baris perintah

$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000

Hasilnya juga dapat dilihat melalui antara muka web sebagai-

Sekarang pilih 'Browse the filesystem' dan navigasi ke / output_mapreducejoin

Buka bahagian-r-00000

Hasil ditunjukkan

CATATAN: Harap maklum bahawa sebelum menjalankan program ini untuk kali berikutnya, anda perlu menghapus direktori output / output_mapreducejoin

$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin

Alternatifnya adalah dengan menggunakan nama yang berbeza untuk direktori output.

Apa itu Kaunter di MapReduce?

A Counter dalam MapReduce adalah mekanisme yang digunakan untuk mengumpul dan mengukur maklumat statistik mengenai MapReduce pekerjaan dan acara. Kaunter mengesan pelbagai statistik pekerjaan di MapReduce seperti jumlah operasi yang berlaku dan kemajuan operasi. Kaunter digunakan untuk diagnosis Masalah di MapReduce.

Kaunter Hadoop serupa dengan meletakkan mesej log dalam kod peta atau mengurangkan. Maklumat ini dapat berguna untuk diagnosis masalah dalam pemprosesan pekerjaan MapReduce.

Biasanya, pembilang ini di Hadoop didefinisikan dalam program (peta atau pengurangan) dan meningkat semasa pelaksanaan ketika peristiwa atau keadaan tertentu (khusus untuk penghitung itu) berlaku. Aplikasi kaunter Hadoop yang sangat baik adalah untuk mengesan rekod yang sah dan tidak sah dari set data input.

Jenis Pembilang MapReduce

Pada asasnya terdapat 2 jenis Pembilang MapReduce

    1. Kaunter Hadoop Built-In: Terdapat beberapa kaunter Hadoop terbina dalam yang ada setiap pekerjaan. Berikut adalah kumpulan kaunter terbina dalam-
      • Pengukur Tugas MapReduce - Mengumpulkan maklumat khusus tugas (contohnya, jumlah catatan input) semasa masa pelaksanaannya.
      • FileSystem Counters - Mengumpulkan maklumat seperti bilangan bait yang dibaca atau ditulis oleh tugas
      • FileInputFormat Counters - Mengumpulkan maklumat sebilangan bait yang dibaca melalui FileInputFormat
      • FileOutputFormat Counters - Mengumpulkan maklumat sebilangan bait yang ditulis melalui FileOutputFormat
      • Kaunter Pekerjaan - Kaunter ini digunakan oleh JobTracker. Statistik yang dikumpulkan oleh mereka termasuk, misalnya, jumlah tugas yang dilancarkan untuk pekerjaan.
    2. Pembilang yang Ditentukan Pengguna

Selain kaunter terbina dalam, pengguna dapat menentukan kaunter sendiri menggunakan fungsi serupa yang disediakan oleh bahasa pengaturcaraan. Sebagai contoh, dalam Java 'enum' digunakan untuk menentukan kaunter yang ditentukan pengguna.

Contoh Pembilang

Contoh MapClass dengan Kaunter untuk mengira jumlah nilai yang hilang dan tidak sah. Fail data input yang digunakan dalam tutorial ini Kumpulan data input kami adalah file CSV, SalesJan2009.csv

public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString 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"));}}}

Coretan kod di atas menunjukkan contoh pelaksanaan kaunter di Hadoop Map Reduce.

Di sini, SalesCounters adalah kaunter yang ditentukan menggunakan 'enum' . Ia digunakan untuk mengira HILANG dan TIDAK SAH rekod input.

Dalam coretan kod, jika medan 'negara' mempunyai panjang sifar maka nilainya hilang dan oleh itu SalesCounters kaunter yang sesuai.MISSING meningkat.

Seterusnya, jika medan 'penjualan' dimulakan dengan tanda " maka rekod dianggap INVALID. Ini ditunjukkan oleh kenaikan SalesCounters.INVALID kaunter .