MapReduce - API

Dalam bab ini, kita akan melihat dengan jelas kelas dan kaedah mereka yang terlibat dalam operasi pengaturcaraan MapReduce. Kami akan memberi tumpuan utama kepada perkara berikut -

  • Interface JobContext
  • Kelas Kerja
  • Kelas Mapper
  • Kelas Reducer

Interface JobContext

Antara muka JobContext adalah antara muka super untuk semua kelas, yang mentakrifkan pekerjaan yang berlainan dalam MapReduce. Ia memberi anda pandangan baca sahaja mengenai tugas yang diberikan kepada tugas semasa mereka berjalan.

Berikut adalah sub-antara antara muka JobContext.

S.No. Penerangan Subinterface
1. MapContext <KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Menentukan konteks yang diberikan kepada Mapper.

2. ReduceContext <KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Menentukan konteks yang disampaikan kepada Pengurangan.

Kelas pekerjaan adalah kelas utama yang melaksanakan antara muka JobContext.

Kelas Kerja

Kelas Kerja adalah kelas yang paling penting dalam API MapReduce. Ia membolehkan pengguna mengkonfigurasi tugas, menyerahkannya, mengawal pelaksanaannya, dan menanyakan keadaan. Kaedah yang ditetapkan hanya berfungsi sehingga kerja diserahkan, kemudian mereka akan membuang IllegalStateException.

Biasanya, pengguna membuat permohonan itu, menerangkan pelbagai aspek pekerjaan, dan kemudian menyerahkan kerja dan memantau perkembangannya.

Berikut adalah contoh bagaimana untuk menghantar kerja -

// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);

// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));

job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);

// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);

Pembina

Berikut adalah ringkasan pembina kelas Kerja.

S.No Ringkasan pembina
1 Pekerjaan ()
2 Kerja (Kon konfigurasi)
3 Kerja (conf Konfigurasi, String jobName)

Kaedah

Beberapa kaedah penting kelas Kerja adalah seperti berikut -

S.No Kaedah Keterangan
1 getJobName ()

Nama pekerjaan yang ditentukan oleh pengguna.

2 getJobState ()

Mengembalikan keadaan semasa Job.

3 selesai()

Semak sama ada kerja selesai atau tidak.

4 setInputFormatClass ()

Tetapkan InputFormat untuk kerja.

5 setJobName (Nama rentetan)

Menetapkan nama kerja yang ditentukan pengguna.

6 setOutputFormatClass ()

Menetapkan Format Keluaran untuk tugas tersebut.

7 setMapperClass (Kelas)

Menetapkan Mapper untuk tugas tersebut.

8 setReducerClass (Kelas)

Menetapkan Pengurangan untuk kerja.

9 setPartitionerClass (Class)

Menetapkan Partition untuk kerja.

10 setCombinerClass (Kelas)

Menetapkan Combiner untuk kerja.

Kelas Mapper

Kelas Mapper mentakrifkan tugas Peta. Pasangan input utama nilai peta ke satu set pasangan nilai utama pertengahan. Peta adalah tugas individu yang mengubah rekod masukan ke rekod perantaraan. Rekod perantaraan yang berubah-ubah tidak memerlukan jenis yang sama seperti rekod masukan. Pasangan input yang diberikan boleh memetakan kepada pasangan sifar atau banyak output.

Kaedah

peta adalah kaedah yang paling menonjol dari kelas Mapper. Sintaks ditakrifkan di bawah -

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

Kaedah ini dipanggil sekali untuk setiap pasangan nilai utama dalam perpecahan input.

Kelas Reducer

Kelas Reducer mentakrifkan Reduce job di MapReduce. Ia mengurangkan satu set nilai perantaraan yang berkongsi kunci kepada satu set nilai yang lebih kecil. Pelaksanaan reducer boleh mengakses Konfigurasi untuk kerja melalui kaedah JobContext.getConfiguration (). Reducer mempunyai tiga fasa utama - Shuffle, Sort, and Reduce.

  • Shuffle - The Reducer menyalin output disusun dari setiap Mapper menggunakan HTTP merentasi rangkaian.

  • Isih - Rangka kerja itu menggabungkan input Pengurangan oleh kekunci (kerana Macroer mungkin mempunyai keluaran yang sama). Fasa shuffle dan sort berlaku secara serentak, iaitu, sementara output sedang diambil, ia digabungkan.

  • Kurangkan - Dalam fasa ini, kaedah (Objek, Iterable, Konteks) dipanggil untuk setiap <kunci, (koleksi nilai)> dalam input yang disusun.

Kaedah

mengurangkan adalah kaedah yang paling menonjol dalam kelas Reducer. Sintaks ditakrifkan di bawah -

 reduce (KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

Kaedah ini dipanggil sekali untuk setiap kunci pada koleksi pasangan nilai utama.