Menjalankan Hadoop MapReduce Mode 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"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/temp</value>
<final>true</final>
</property>
</configuration>
Setting pada hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
<final>true</final>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>${hadoop.tmp.dir}</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
Setting pada mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>${hadoop.tmp.dir}/mapred/local</value>
<final>true</final>
</property>
<property>
<name>mapred.system.dir</name>
<value>${hadoop.tmp.dir}/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx200m</value>
<!-- Not marked as final so jobs can include JVM
debugging options -->
</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 (MenjalankanAplikasi MapReduce dengan Eclipse Java SE). Silakan download / copy source code
aplikasi WordCount.java dari artikel tersebut.
3. 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:
1. "Hadoop: The Definitive Guide, Third
Edition", Tom White, O'Reilly 2012.
2.
hadoop-tutorial.blogspot.jp/2010/11/running-hadoop-in-pseudo-distributed.html
Comments
kalau langkah ini:
2. Cygwin, dapat didownlaod dari http://cygwin.com/install.html
hanya untuk windows kah ? kalau dicoba di ubuntu dilewat saja ya ?
Terima kasih
terima kasih telah berkunjung.
Betul sekali, Cygwin tidak diperlukan di Ubuntu.
salesforce training
hadoop training
mulesoft training
linux training