Selasa, Februari 05, 2013

Menjalankan Hadoop MapReduce Pseudo-distributed dengan Linux

Pada artikel sebelumnya (Menjalankan Hadoop MapReduce dengan Eclipse Java SE) telah dijelaskan bagaimana cara instal Hadoop dan menjalankan aplikasi MapReduce mode standalone dengan menggunakan Eclipse Java SE yang diinstal di Windows.

Kali ini saya akan menjelaskan langkah-langkah untuk menginstal Hadoop mode pseudo-distributed di Linux dan menjalankan contoh aplikasi MapReduce.

Tools yang perlukan :

Hadoop-0.20.2.tar.gz file, dapat di-download dari http://hadoop.apache.org/

Setelah Hadoop-0.20.2.tar.gz di-ekstrak, simpanlah di home diterctory atau directory lain yang dikehendaki, kemudian ikutilah langkah-langkah berikut :

1. Konfigurasi Hadoop

Didalam directory Hadoop-0.20.2 terdapat directory conf yang berisi file-file konfigurasi untuk Hadoop. Buka directory Hadoop-0.20.2/conf , kemudian edit isi file core-site.xml, hdfs-site.xm. dan mapred-site.xml seperti sbb:

Setting pada core-site.xml

xml version=“1.0??>

xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>

fs.default.namename>

hdfs://localhost/value>

truefinal>

property>

hadoop.tmp.dirname>

/home/tempvalue>

truefinal>

property>

configuration>

Setting pada hdfs-site.xml

xml version=“1.0??>

xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>

dfs.name.dirname>

${hadoop.tmp.dir}/dfs/namevalue>

truefinal>

property>

dfs.data.dirname>

${hadoop.tmp.dir}/dfs/datavalue>

truefinal>

property>

fs.checkpoint.dirname>

${hadoop.tmp.dir}value>

truefinal>

property>

dfs.replicationname>

1value>

property>

configuration>

Setting pada mapred-site.xml

xml version=“1.0??>

xml-stylesheet type=“text/xsl” href=“configuration.xsl”?>

mapred.job.trackername>

localhost:8021value>

truefinal>

property>

mapred.local.dirname>

${hadoop.tmp.dir}/mapred/localvalue>

truefinal>

property>

mapred.system.dirname>

${hadoop.tmp.dir}/mapred/systemvalue>

truefinal>

property>

mapred.tasktracker.map.tasks.maximumname>

2value>

truefinal>

property>

mapred.tasktracker.reduce.tasks.maximumname>

2value>

truefinal>

property>

mapred.child.java.optsname>

-Xmx200mvalue>

property>

configuration>

2. Konfigurasi SSH

Pada mode psudo-distributed, Hadoop akan menjalankan beberapa daemons. Oleh karena itu SSH harus diinstal dan di-setting agar Hadoop bisa masuk dengan SSH ke localhost tanpa harus memasukkan password.

Pertama, cek apakah SSH sudah terinstal atau belum dengan command berikut:

%sudo apt-get install ssh

Kemudian ijinkan login SSH ke localhost tanpa menggunakan password:

%ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa

%cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Test setting dengan command berikut:

%ssh localhost

Jika sukses, maka anda akan bisa login dengan SSH tanpa menggunakan password.

3. Format HDFS

Seperti halnya hardisk pada PC yang sebelum digunakan harus diformat dulu dengan filesystem yang akan digunakan (FAT32, NTFS dsb), HDFS pun demikian. Sebelum Hadoop bisa digunakan, HDFS harus diformat dulu. Buka directory hadoop-0.20.2 dan dari directory ini execute command berikut untuk men-format HDFS:

%bin/hadoop namenode -format

Setelah diformat, Hadoop sudah siap dijalankan dengan men-start daemons HDFS dan MapReduce dengan command berikut:

%bin/start-dfs.sh

%bin/start-mapred.sh

Setelah Hadoop di-start, kita bisa memastikan apakah daemons Hadoop tersebut sudah berjalan atau tidak dengan menggunakan browser internet (Internet Explorer, Firefox, Google Chrome dsb). Masukkan URL berikut ke address bar browser yang digunakan.

http://localhost:50030/        –url jobtracker

http://localhost:50070/        –url namenode

Untuk menghentikan daemons Hadoop, gunakan command berikut:

%bin/stop-mapred.sh

%bin/stop-dfs.sh

Bila langkah-langkah diatas berjalan normal, brarti instal Hadoop mode pseudo-distributed telah sukses dan Hadoop telah siap menjalankan aplikasi MapReduce. Berikutnya kita akan mencoba menjalankan contoh aplikasi MapReduce yang dinamai WordCount, sama seperti aplikasi yang dijalankan pada Hadoop mode standalone pada artikel sebelumnya (Menjalankan Aplikasi MapReduce dengan Eclipse Java SE). Silakan download / copy source code aplikasi WordCount.java dari artikel tersebut.

4. Menjalankan aplikasi WordCount

Untuk menjalankan contoh aplikasi WordCount, silakan ikuti langkah-langkah sbb:

a. Buat directory baru pada home directory dan beri nama wordcount (atau nama yang sesuai selera masing2). Buat file baru dengan nama WordCount.java dan paste source code WordCount.java pada artikel Menjalankan Aplikasi MapReduce dengan Eclipse java SE.

b. Compile program WordCount.java dengan command berikut (saya asumsikan kita berada di directory hadoop-0.20.2):

javac -classpath hadoop-0.20.2-core.jar:lib/commons-cli-1.2.jar /home/wordcount/WordCount.java

Bila compile sukses, maka akan dihasilkan tiga class file :

WordCount.class

WordCount$TokenizerMapper.class

WordCount$IntSumReducer.class

Buat directory baru dengan nama classes, dan pindahkan ketiga class file tsb ke dalam directory classes.

c. Buat WordCount.jar dengan mengeksekusi command berikut dari directory wordcount:

jar -cvf WordCount.jar -C classes/ .

Bila sukses, maka akan dihasilkan file WordCount.jar

d. Buat directory input pada HDFS dengan command berikut (saya asumsikan kita berada di directory hadoop-0.20.2)

bin/hadoop dfs -mkdir /user/input

bin/hadoop dfs -ls /user

e. Copy text file yang akan diproses dengan menggunakan aplikasi WordCount ke directory input pada HDFS dengan command berikut:

bin/hadoop dfs -copyFromLocal /home/contoh.txt /user/input

bin/hadoop dfs -ls /user/input

f. Setelah itu kita jalankan program WordCount dengan command berikut:

bin/hadoop jar /home/wordcount/WordCount.jar WordCount /user/input /user/output

bila sukses akan muncul text berikut pada console:

13/01/28 10:58:09 INFO input.FileInputFormat: Total input paths to process : 1

13/01/28 10:58:09 INFO mapred.JobClient: Running job: job_201301150937_0002

13/01/28 10:58:10 INFO mapred.JobClient:  map 0% reduce 0%

13/01/28 10:58:17 INFO mapred.JobClient:  map 100% reduce 0%

13/01/28 10:58:29 INFO mapred.JobClient:  map 100% reduce 100%

13/01/28 10:58:31 INFO mapred.JobClient: Job complete: job_201301150937_0002

13/01/28 10:58:31 INFO mapred.JobClient: Counters: 17

13/01/28 10:58:31 INFO mapred.JobClient:   Job Counters

13/01/28 10:58:31 INFO mapred.JobClient:     Launched reduce tasks=1

13/01/28 10:58:31 INFO mapred.JobClient:     Rack-local map tasks=1

13/01/28 10:58:31 INFO mapred.JobClient:     Launched map tasks=1

13/01/28 10:58:31 INFO mapred.JobClient:   FileSystemCounters

13/01/28 10:58:31 INFO mapred.JobClient:     FILE_BYTES_READ=27105

13/01/28 10:58:31 INFO mapred.JobClient:     HDFS_BYTES_READ=19099

13/01/28 10:58:31 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=54242

13/01/28 10:58:31 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=20699

13/01/28 10:58:31 INFO mapred.JobClient:   Map-Reduce Framework

13/01/28 10:58:31 INFO mapred.JobClient:     Reduce input groups=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Combine output records=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Map input records=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Reduce shuffle bytes=0

13/01/28 10:58:31 INFO mapred.JobClient:     Reduce output records=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Spilled Records=3200

13/01/28 10:58:31 INFO mapred.JobClient:     Map output bytes=23899

13/01/28 10:58:31 INFO mapred.JobClient:     Combine input records=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Map output records=1600

13/01/28 10:58:31 INFO mapred.JobClient:     Reduce input records=1600

g. Buka directory /uer/output pada HDFS dan cek hasilnya:

bin/hadoop dfs -ls /user/output

bin/hadoop dfs -cat /user/output/part-r-00000

Hasil eksekusi aplikasi WordCount juga dapat dilihat menggunakan Web Browser di http://localhost:50070/

Demikian langkah-langkah instal Hadoop mode pseudo-distributed di Linux beserta cara menjalankan contoh aplikasi MapReduce. Selamat mencoba!.

Referensi:

http://vijjam.blogspot.jp/2013/01/menjalankan-hadoop-mapreduce-mode.html


View the original article here

Tidak ada komentar: