Di blog ini, saya akan menunjukkan cara menjalankan program MapReduce. MapReduce adalah salah satu bagian inti dari Apache Hadoop, ini adalah lapisan pemrosesan Apache Hadoop. Jadi sebelum saya menunjukkan cara menjalankan program MapReduce, izinkan saya menjelaskan secara singkat kepada Anda MapReduce.
MapReduce adalah sistem untuk pemrosesan paralel kumpulan data besar. MapReduce mengurangi data menjadi hasil dan membuat ringkasan data. Program mapreduce memiliki dua bagian - mapper dan reducer. Setelah mapper menyelesaikan pekerjaannya maka hanya reduksi yang mulai.
Pemeta : Ini memetakan pasangan kunci/nilai input ke satu set pasangan kunci/nilai perantara.
Peredam : Ini mengurangi satu set nilai menengah yang berbagi kunci ke set nilai yang lebih kecil.
Pada dasarnya, dalam program wordcount mapreduce, kami menyediakan file input - file teks apa pun, sebagai input. Saat program mapreduce dimulai, berikut adalah proses yang dilaluinya:
Pemisahan : Ini membagi setiap baris dalam file input menjadi kata-kata.
Pemetaan : Ini membentuk pasangan nilai kunci, di mana kata adalah kunci dan 1 adalah nilai yang ditetapkan untuk setiap kunci.
Mengacak : Pasangan nilai kunci umum dikelompokkan bersama.
Mengurangi : Nilai kunci serupa ditambahkan bersama.
Menjalankan Program MapReduce
Program MapReduce ditulis dalam Java. Dan sebagian besar Eclipse IDE digunakan untuk pemrograman oleh para pengembang. Jadi di blog ini, saya akan menunjukkan cara mengekspor program mapreduce ke file jar dari Eclipse IDE dan menjalankannya di cluster Hadoop.
Program MapReduce saya ada di IDE Eclipse saya.
Sekarang untuk menjalankan program MapReduce ini pada cluster hadoop, kami akan mengekspor proyek sebagai file jar. Pilih opsi File di ide Eclipse dan klik Ekspor. Dalam opsi Java, pilih file Jar dan klik Berikutnya.
Pilih proyek Wordcount dan berikan path dan nama untuk file jar, saya menyimpannya wordcount.jar, Klik Next dua kali.
Sekarang Klik Browse dan pilih kelas utama dan terakhir klik Finish untuk membuat file jar. Jika Anda mendapatkan peringatan seperti di bawah ini, cukup klik OK.
Periksa apakah cluster Hadoop Anda aktif dan berfungsi atau tidak.
Perintah: jps
hadoop@hadoop-VirtualBox:~$ jps
3008 NodeManager
3924 Jps
2885 ResourceManager
2505 DataNode
3082 JobHistoryServer
2716 SecondaryNameNode
2383 NameNode
hadoop@hadoop-VirtualBox:~$
Kami memiliki file input kami ke HDFS untuk program wordcount.
hadoop@hadoop-VirtualBox:~$ hdfs dfs -put input /
hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /input
This is my first mapreduce test
This is wordcount program
hadoop@hadoop-VirtualBox:~$
Sekarang jalankan file wordcount.jar menggunakan perintah di bawah ini.
Catatan: Karena kita memilih kelas utama saat mengekspor wordcount.jar , jadi tidak perlu menyebutkan kelas utama dalam perintah.
Perintah: hadoop jar wordcount.jar /input /output
hadoop@hadoop-VirtualBox:~$ hadoop jar wordcount.jar /input /output
16/11/27 22:52:20 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:
8032
16/11/27 22:52:22 WARN mapreduce.JobResourceUploader: Hadoop command-line option
parsing not performed. Implement the Tool interface and execute your application
with ToolRunner to remedy this.
16/11/27 22:52:27 INFO input.FileInputFormat: Total input paths to process : 1
16/11/27 22:52:28 INFO mapreduce.JobSubmitter: number of splits:1
16/11/27 22:52:29 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_14802
67251741_0001
16/11/27 22:52:32 INFO impl.YarnClientImpl: Submitted application application_14802
67251741_0001
16/11/27 22:52:33 INFO mapreduce.Job: The url to track the job: http://hadoop-Virtu
alBox:8088/proxy/application_1480267251741_0001/
16/11/27 22:52:33 INFO mapreduce.Job: Running job: job_1480267251741_0001
16/11/27 22:53:20 INFO mapreduce.Job: Job job_1480267251741_0001 running in uber mo
de : false
16/11/27 22:53:20 INFO mapreduce.Job: map 0% reduce 0%
16/11/27 22:53:45 INFO mapreduce.Job: map 100% reduce 0%
16/11/27 22:54:13 INFO mapreduce.Job: map 100% reduce 100%
16/11/27 22:54:15 INFO mapreduce.Job: Job job_1480267251741_0001 completed
successfully
16/11/27 22:54:16 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=124
FILE: Number of bytes written=237911
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=150
HDFS: Number of bytes written=66
HDFS: Number of read operations=6
HDFS: Number of large read operations=0
HDFS: Number of write operations=2
Job Counters
Launched map tasks=1
Launched reduce tasks=1
Data-local map tasks=1
Total time spent by all maps in occupied slots (ms)=21062
Total time spent by all reduces in occupied slots (ms)=25271
Total time spent by all map tasks (ms)=21062
Total time spent by all reduce tasks (ms)=25271
Total vcore-milliseconds taken by all map tasks=21062
Total vcore-milliseconds taken by all reduce tasks=25271
Total megabyte-milliseconds taken by all map tasks=21567488
Total megabyte-milliseconds taken by all reduce tasks=25877504
Map-Reduce Framework
Map input records=2
Map output records=10
Map output bytes=98
Map output materialized bytes=124
Input split bytes=92
Combine input records=0
Combine output records=0
Reduce input groups=8
Reduce shuffle bytes=124
Reduce input records=10
Reduce output records=8
Spilled Records=20
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=564
CPU time spent (ms)=4300
Physical memory (bytes) snapshot=330784768
Virtual memory (bytes) snapshot=3804205056
Total committed heap usage (bytes)=211812352
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=58
File Output Format Counters
Bytes Written=66
hadoop@hadoop-VirtualBox:~$
Setelah program berhasil berjalan, buka HDFS dan periksa file bagian di dalam direktori keluaran.
Di bawah ini adalah output dari program wordcount.
hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /output/part-r-00000
This 2
first 1
is 2
mapreduce 1
my 1
program 1
test 1
wordcount 1
hadoop@hadoop-VirtualBox:~$
Kesimpulan
Contoh ini di sini di Jawa, Anda dapat menulis program MapReduce dengan python juga. Kami berhasil menjalankan program Hadoop MapReduce pada Hadoop Cluster di Ubuntu 16.04. Langkah-langkah untuk menjalankan Program Mapreduce di lingkungan Linux lainnya tetap sama. Pastikan bahwa sebelum menjalankan program, cluster Hadoop Anda harus aktif dan berjalan, juga file input Anda harus ada dalam HDFS.