Difference between revisions of "Hadoop: Menjalankan MapReduce Job"
Onnowpurbo (talk | contribs) (New page: Sumber: http://www.bogotobogo.com/Hadoop/BigData_hadoop_Running_MapReduce_Job.php MapReduce Preparation Before we jump into the programming our MapReduce, we may need to talk about ...) |
Onnowpurbo (talk | contribs) |
||
(13 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
+ | ==Jalankan Hadoop== | ||
+ | Sebelum melakukan job MapReduce, jangan lupa jalankan Hadoop | ||
+ | start-all.sh | ||
− | |||
− | |||
− | + | ==Persiapan MapReduce== | |
− | |||
− | + | Sebelum kita melompat ke dalam pemrograman MapReduce, kita mungkin perlu untuk membicarakan langkah-langkah persiapan yang biasa diambil. Karena MapReduce biasanya beroperasi pada data yang besar, kita perlu mempertimbangkan langkah-langkah sebelum kita benar-benar melakukan MapReduce itu. | |
− | + | Struktur yang mendasari filesystem HDFS sangat berbeda dari sistem file normal kami. Ukuran blok yang sedikit lebih besar, dan ukuran blok yang sebenarnya untuk cluster kami tergantung pada konfigurasi cluster seperti yang ditunjukkan pada gambar di bawah: 64, 128, atau 256 MB. Jadi, kita mungkin perlu memiliki blok dengan dipartisi yang dikustomisasi. | |
− | + | [[Image:MapRPrep.png|center|200px|thumb]] | |
− | + | Sumber Gambar : Hadoop MapReduce Fundamentals. | |
− | + | Pertimbangan lain adalah di mana kita akan mengambil data kita dalam rangka untuk melakukan operasi MapReduce atau pemrosesan paralel di atasnya. Meskipun kami akan bekerja dengan Hadoop filesystem, kita dapat mengeksekusi algoritma MapReduce terhadap informasi yang tersimpan di lokasi yang berbeda dengan filesystem native, penyimpanan awan seperti Amazon S3 bucket, atau Windows Azure blob. | |
+ | Pertimbangan lain adalah output dari MapReduce hasil pekerjaan yang berubah. Jadi, output kami adalah one-time output, dan ketika keluaran baru yang dihasilkan, kita memiliki nama file baru untuk itu. | ||
+ | Pertimbangan terakhir dalam mempersiapkan MapReduce adalah tentang logika yang akan kita tulis, dan harus sesuai dengan situasi yang akan kita atasi. Kita akan menulis logika dalam beberapa bahasa pemrograman, perpustakaan, atau alat untuk memetakan data, dan kemudian mengurangi, dan kemudian kita memiliki beberapa output. | ||
+ | Perhatikan juga bahwa kita akan bekerja dengan pasangan kunci-nilai, sehingga terlepas dari format data yang masuk, kami ingin menampilkan pasangan kunci-nilai. | ||
− | |||
− | + | ==Perintah Shell Hadoop== | |
+ | Sebelum menjalankan Job MapReduce, kita perlu mengetahui beberapa perintah shell Hadoop. | ||
+ | Ada baiknya membaca | ||
+ | * [[Hadoop: Perintah Shell]] | ||
+ | ==Menjalankan MapReduce Job== | ||
− | + | Lakukan | |
− | + | cd /usr/local/hadoop | |
+ | ls | ||
− | + | bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share | |
− | + | Jalankan | |
− | |||
− | |||
− | + | start-all.sh | |
− | + | cd /usr/local/hadoop | |
− | + | hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 2 5 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Number of Maps = 2 | ||
+ | Samples per Map = 5 | ||
+ | 15/11/09 16:28:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable | ||
+ | Wrote input for Map #0 | ||
+ | Wrote input for Map #1 | ||
+ | Starting Job | ||
+ | 15/11/09 16:28:59 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id | ||
+ | 15/11/09 16:28:59 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= | ||
+ | 15/11/09 16:29:00 INFO input.FileInputFormat: Total input paths to process : 2 | ||
+ | 15/11/09 16:29:00 INFO mapreduce.JobSubmitter: number of splits:2 | ||
+ | .. | ||
+ | .. | ||
+ | .. | ||
+ | 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=236 | ||
+ | File Output Format Counters | ||
+ | Bytes Written=97 | ||
+ | Job Finished in 3.729 seconds | ||
+ | Estimated value of Pi is 3.60000000000000000000 | ||
+ | Kalau mau iseng coba naikan jumlah map & sample per map, misalnya | ||
+ | hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 20 1000 | ||
+ | Hasilnya akan lebih presisi | ||
+ | Job Finished in 5.541 seconds | ||
+ | Estimated value of Pi is 3.14280000000000000000 | ||
+ | Atau lebih presisi lagi | ||
− | + | hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 200 1000 | |
− | + | Hasilnya | |
− | + | Job Finished in 35.865 seconds | |
+ | Estimated value of Pi is 3.14118000000000000000 | ||
− | + | ==Hadoop FileSystem (HDFS)== | |
− | + | File disimpan dalam Hadoop Distributed File System (HDFS). Misalkan kita akan menyimpan file bernama data.txt di HDFS. | |
+ | File ini adalah 160 megabyte. Ketika sebuah file dimuat ke HDFS, itu dibagi menjadi potongan yang disebut blok. Ukuran default setiap blok adalah 64 megabyte. Setiap blok diberi nama yang unik, yang merupakan blk, garis bawah, dan sejumlah besar. Dalam kasus kami, blok pertama adalah 64 megabyte. Blok kedua adalah 64 megabyte. Blok ketiga adalah sisa 32 megabyte, untuk membuat file yang 160 megabyte. | ||
− | + | [[Image:HDFS Cloud.png|center|200px|thumb]] | |
− | HDFS | + | Saat file diupload ke HDFS, setiap blok akan bisa disimpan di salah satu node di cluster. Ada Daemon berjalan pada masing-masing mesin dalam cluster, yang disebut DataNode. Sekarang, kita perlu tahu mana blok membuat file asli. Dan itu ditangani oleh mesin terpisah, menjalankan Daemon yang disebut NameNode. Informasi yang disimpan pada NameNode dikenal sebagai Metadata. |
− | |||
− | + | ==Perintah HDFS== | |
− | + | Saat Hadoop jalan, mari membuat hdfsTest.txt di home directory kita: | |
− | + | echo "hdfs test" > hdfsTest.txt | |
− | + | Kemudian, kita ingin membuat Home Directory di HDFS : | |
− | + | hadoop fs -mkdir -p /user/hduser | |
− | |||
− | |||
− | |||
− | |||
− | hduser | ||
− | + | kita dapat mengcopy file hdfsTest.txt dari local disk ke user directory di HDFS: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | hadoop fs -copyFromLocal hdfsTest.txt hdfsTest.txt | |
− | + | Kita juga dapat menggunakan put selain copyFromLocal: | |
− | + | hadoop fs -put hdfsTest.txt | |
− | + | Lihat isi directory dari user home directory di HDFS: | |
− | |||
− | + | hadoop fs -ls | |
− | hduser | + | Found 1 items |
+ | -rw-r--r-- 1 hduser supergroup 5 2014-07-14 01:49 hdfsTest.txt | ||
− | hduser | + | Jika kita ingin melihat isi file HDFS /user/hduser/hdfsTest.txt: |
− | |||
+ | |||
+ | hadoop fs -cat /user/hduser/hdfsTest.txt | ||
+ | Kita juga dapat mengcopy file ke local disk dari HDFS, dimakan sebagai hdfsTest2.txt : | ||
+ | hadoop fs -copyToLocal /user/hduser/hdfsTest.txt hdfsTest2.txt | ||
+ | ls | ||
+ | hdfsTest2.txt hdfsTest.txt | ||
− | Hadoop | + | Untuk men-delete file dari Hadoop HDFS: |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | hadoop fs -rm hdfsTest.txt | |
− | + | hadoop fs -ls | |
− | |||
− | |||
+ | ==Monitor Job & Task== | ||
+ | * NameNode daemon: http://hdnode01:50070 | ||
+ | * JobTracker daemon: http://hdnode01:50030 | ||
+ | * TaskTracker daemon: http://hdnode01:50060 | ||
==Referensi== | ==Referensi== | ||
* http://www.bogotobogo.com/Hadoop/BigData_hadoop_Running_MapReduce_Job.php | * http://www.bogotobogo.com/Hadoop/BigData_hadoop_Running_MapReduce_Job.php |
Latest revision as of 08:37, 10 November 2015
Sumber: http://www.bogotobogo.com/Hadoop/BigData_hadoop_Running_MapReduce_Job.php
Jalankan Hadoop
Sebelum melakukan job MapReduce, jangan lupa jalankan Hadoop
start-all.sh
Persiapan MapReduce
Sebelum kita melompat ke dalam pemrograman MapReduce, kita mungkin perlu untuk membicarakan langkah-langkah persiapan yang biasa diambil. Karena MapReduce biasanya beroperasi pada data yang besar, kita perlu mempertimbangkan langkah-langkah sebelum kita benar-benar melakukan MapReduce itu.
Struktur yang mendasari filesystem HDFS sangat berbeda dari sistem file normal kami. Ukuran blok yang sedikit lebih besar, dan ukuran blok yang sebenarnya untuk cluster kami tergantung pada konfigurasi cluster seperti yang ditunjukkan pada gambar di bawah: 64, 128, atau 256 MB. Jadi, kita mungkin perlu memiliki blok dengan dipartisi yang dikustomisasi.
Sumber Gambar : Hadoop MapReduce Fundamentals.
Pertimbangan lain adalah di mana kita akan mengambil data kita dalam rangka untuk melakukan operasi MapReduce atau pemrosesan paralel di atasnya. Meskipun kami akan bekerja dengan Hadoop filesystem, kita dapat mengeksekusi algoritma MapReduce terhadap informasi yang tersimpan di lokasi yang berbeda dengan filesystem native, penyimpanan awan seperti Amazon S3 bucket, atau Windows Azure blob.
Pertimbangan lain adalah output dari MapReduce hasil pekerjaan yang berubah. Jadi, output kami adalah one-time output, dan ketika keluaran baru yang dihasilkan, kita memiliki nama file baru untuk itu.
Pertimbangan terakhir dalam mempersiapkan MapReduce adalah tentang logika yang akan kita tulis, dan harus sesuai dengan situasi yang akan kita atasi. Kita akan menulis logika dalam beberapa bahasa pemrograman, perpustakaan, atau alat untuk memetakan data, dan kemudian mengurangi, dan kemudian kita memiliki beberapa output.
Perhatikan juga bahwa kita akan bekerja dengan pasangan kunci-nilai, sehingga terlepas dari format data yang masuk, kami ingin menampilkan pasangan kunci-nilai.
Perintah Shell Hadoop
Sebelum menjalankan Job MapReduce, kita perlu mengetahui beberapa perintah shell Hadoop. Ada baiknya membaca
Menjalankan MapReduce Job
Lakukan
cd /usr/local/hadoop ls
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share
Jalankan
start-all.sh cd /usr/local/hadoop hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 2 5
Number of Maps = 2 Samples per Map = 5 15/11/09 16:28:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Wrote input for Map #0 Wrote input for Map #1 Starting Job 15/11/09 16:28:59 INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id 15/11/09 16:28:59 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= 15/11/09 16:29:00 INFO input.FileInputFormat: Total input paths to process : 2 15/11/09 16:29:00 INFO mapreduce.JobSubmitter: number of splits:2 .. .. .. 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=236 File Output Format Counters Bytes Written=97 Job Finished in 3.729 seconds Estimated value of Pi is 3.60000000000000000000
Kalau mau iseng coba naikan jumlah map & sample per map, misalnya
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 20 1000
Hasilnya akan lebih presisi
Job Finished in 5.541 seconds Estimated value of Pi is 3.14280000000000000000
Atau lebih presisi lagi
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 200 1000
Hasilnya
Job Finished in 35.865 seconds Estimated value of Pi is 3.14118000000000000000
Hadoop FileSystem (HDFS)
File disimpan dalam Hadoop Distributed File System (HDFS). Misalkan kita akan menyimpan file bernama data.txt di HDFS.
File ini adalah 160 megabyte. Ketika sebuah file dimuat ke HDFS, itu dibagi menjadi potongan yang disebut blok. Ukuran default setiap blok adalah 64 megabyte. Setiap blok diberi nama yang unik, yang merupakan blk, garis bawah, dan sejumlah besar. Dalam kasus kami, blok pertama adalah 64 megabyte. Blok kedua adalah 64 megabyte. Blok ketiga adalah sisa 32 megabyte, untuk membuat file yang 160 megabyte.
Saat file diupload ke HDFS, setiap blok akan bisa disimpan di salah satu node di cluster. Ada Daemon berjalan pada masing-masing mesin dalam cluster, yang disebut DataNode. Sekarang, kita perlu tahu mana blok membuat file asli. Dan itu ditangani oleh mesin terpisah, menjalankan Daemon yang disebut NameNode. Informasi yang disimpan pada NameNode dikenal sebagai Metadata.
Perintah HDFS
Saat Hadoop jalan, mari membuat hdfsTest.txt di home directory kita:
echo "hdfs test" > hdfsTest.txt
Kemudian, kita ingin membuat Home Directory di HDFS :
hadoop fs -mkdir -p /user/hduser
kita dapat mengcopy file hdfsTest.txt dari local disk ke user directory di HDFS:
hadoop fs -copyFromLocal hdfsTest.txt hdfsTest.txt
Kita juga dapat menggunakan put selain copyFromLocal:
hadoop fs -put hdfsTest.txt
Lihat isi directory dari user home directory di HDFS:
hadoop fs -ls
Found 1 items -rw-r--r-- 1 hduser supergroup 5 2014-07-14 01:49 hdfsTest.txt
Jika kita ingin melihat isi file HDFS /user/hduser/hdfsTest.txt:
hadoop fs -cat /user/hduser/hdfsTest.txt
Kita juga dapat mengcopy file ke local disk dari HDFS, dimakan sebagai hdfsTest2.txt :
hadoop fs -copyToLocal /user/hduser/hdfsTest.txt hdfsTest2.txt
ls hdfsTest2.txt hdfsTest.txt
Untuk men-delete file dari Hadoop HDFS:
hadoop fs -rm hdfsTest.txt
hadoop fs -ls
Monitor Job & Task
- NameNode daemon: http://hdnode01:50070
- JobTracker daemon: http://hdnode01:50030
- TaskTracker daemon: http://hdnode01:50060