Menjalankan Hadoop MapReduce Mode Fully Distributed
Pada artikel sebelumnya, MenjalankanAplikasi Hadoop MapReduce dengan Windows, telah dijelaskan secara detail
langkah demi langkah untuk menginstal dan menjalankan Hadoop dengan mode
standalone menggunakan Eclipse Java SE. Penggunaan Hadoop mode ini ditujukan
untuk pengembangan aplikasi MapReduce (MapReduce Aplication Development) dan
testing program dengan data berukuran kecil. Dengan menggunakan Hadoop
Standalone pada Eclipse, coding dan debug program dapat dilakukan dengan lebih
mudah dan cepat. Kemudian, pada artikel Menjalankan Hadoop MapReduce ModePseudo-Distributed dengan Linux, telah diuraikan langkah-langkah setting Hadoop
dan menjalankan program MapReduce dengan platform Linux. Mode
Pseudo-distributed ini ditujukan untuk testing program MapReduce yang telah
dibuat dengan Eclipse Java dan telah ditest dengan Hadoop mode Standalone pada
Eclipse tersebut. Program aplikasi MapReduce yang telah dibuat dengan Eclipse
perlu ditest dengan Hadoop Pseudo-distributed untuk meyakinkan bahwa program
tersebut benar-benar bisa berjalan normal sebelum program tersebut benar-benar
dijalankan pada Hadoop Mode Fully Distributed (terdistribusi penuh dalam
sejumlah PC). Mengapa demikian, karena program yang dibuat dengan Eclipse
terkadang tidak bisa berjalan normal saat dieksekusi pada Hadoop
Psudo-Distributed maupun Fully Distributed walaupun saat ditest menggunakan
Hadoop yang terinstal di Eclipse program tersebut dapat berjalan normal dan
memberikan output yang sesuai harapan.
Langkah-langkah untuk menginstal Hadoop
dengan mode Fully Distributed sebenarnya tidak jauh berbeda dengan meninstal
Hadoop dengan mode Pseudo-distributed. Perbedaannya yang jelas ada pada jumlah
mesin (PC) yang digunakan. Mode Pseudo-distributed hanya menggunakan satu PC,
sedangkan mode Fully Distributed yang pasti menggunakan lebih dari dua PC.
Langung saja, kita mulai step by step
menginstal Hadoop Fully distributed pada sebuah cluster yang terdiri atas tiga
PC. Oh ya, OS yang digunakan adalah Linux CentOS.
Tools
yang dibutuhkan:
1. Java 6 atau yang lebih baru (JDK maupun
JRE) dapat didownload di www.java.com atau www.oracle.com
2. Hadoop-0.20.2.tar.gz yang dapat
didownload dari http://hadoop.apache.org/
Install
Hadoop
Saya anggap Java sudah terinstal dengan
normal pada semua PC (dalam hal ini 3 PC) yang akan digunakan sebagai cluster
mini untuk menjalankan Hadoop. Langkah selanjutnya adalah menginstal Hadoop dengan
mengeksekusi command - command berikut:
1. cd /usr/local // hadoop ditempatkan di directory /usr/local
2. sudo tar xzf hadoop-0.20.2.tar.gz //ekstrak file hadoop dan akan menghasilkan
directory baru : hadoop-0.20.2
3. sudo chown -R hadoop:hadoop hadoop-0.20.2
//set owner file-file hadoop adalah user=hadoop, group= hadoop.
4. export
JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
// set varible JAVA_HOME, silakan sesuaikan dengan lokasi dan versi java
yang anda gunakan.
5. export PATH=$PATH:/usr/lib/jvm/jre-1.7.0-openjdk/bin // set PATH java, silakan sesuaikan dengan
versi dan lokasi java anda gunakan.
6. export
HADOOP_INSTALL=/usr/local/hadoop-0.20.2
// set Environment Variable yang menunjuk pada direktori tempat hadoop
di-install.
7. export PATH=$PATH:$HADOOP_INSTALL/bin
//set PATH hadoop yang menunjuk pada direktori yang memuat script daemons
Hadoop.
8. Untuk mengecek apakah setting yang telah
kita lakukan hingga tahap ini telah dikerjakan dengan benar, silakan eksekusi
command berikut :
hadoop
version //mengecek versi Hadoop yang
sudah diinstal
bila setting-nya benar, maka pada layar
console akan tampil seperti berikut:
Hadoop
0.20.2
Subversion
https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707
Compiled
by chrisdo on Fri Feb 19 08:07:34 UTC 2010
Konfigurasi
SSH
Agar Hadoop dapat berjalan normal, perlu
dilakukan setting SSH agar hadoop user bisa login tanpa password dari
mesin-mesin (PCs) pada hadoop cluster. Salah satu cara yang cukup sederhana
adalah dengan membuat public/private key pair, kemudian menyimpannya di NFS
sehingga bisa diakses dari semua mesin(PC) dalam cluster Hadoop. Cara ini dapat
dilakukan dengan mengeksekusi comand-command berikut;
1. ssh-keygen -t rsa -f ~/.ssh/id_rsa
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
File authorized_keys adalah public key yang
harus dibagikan ke setiap node (mesin/PC dalam cluster Hadoop) agar antar node
bisa login ssh secara otomatis tanpa pasword. File authorized_keys ini harus
dicopy ke directory ~/.ssh pada setiap node dalam Hadoop cluster. Bila tidak
ingin repot mengkopi authorized_keys ke setiap node Hadoop, anda bisa
menginstal atau men-set up NFS dan meletakkan home directory dari user hadoop
pada NFS tersebut.
Konfigurasi
Hadoop
Konfigurasi Hadoop dapat dilakukan dengan
mengedit langsung file-file konfigurasi yang telah ditempatkan dalam satu
directory. File-file konfigurasi tersebut terletak di directory
hadoop-0.20.2/conf yang terdiri atas:
1.
hadoop-env.sh //Environment
variables.
2.
core-site.xml //Konfigurasi
untuk Hadoop Core.
3.
hdfs-site.xml //Konfigurasi
untuk HDFS:namenode, datanodes.
4.
mapred-site.xml //Konfigurasi
MapReduce: jobtracker, tasktrackers.
5.
masters //daftar
PC yang menjadi secondary namenode.
6.
slaves //daftar
PC yang menjadi datanode dan tasktracker.
7.
hadoop-metrics.properties //Java
Properties yang mengatur metrics.
8.
log4j.properties //Properties
untuk system logfiles.
Directory hadoop-0.20.2/conf dapat
dipindahkan dan ditempatkan disembarang tempat dalam filesystem/cluster diluar
direktori tempat Hadoop diinstal. Syaratnya daemon-daemon Hadoop harus
dijalankan dengan option --config yang menunjukkan lokasi directory
hadoop-0.20.2/conf pada local filesystem.
Bila kita membuka satu-persatu file-file
konfigurasi tersebut, akan kita temukan begitu banyak variables yang harus
di-setting. Bagi mereka yang baru pertama kali mengenal Hadoop, dapat
dipastikan Hadoop akan terkesan begitu ribet dan merepotkan. Tapi tenang, tidak
semua variables harus di-setting, banyak diantaranya yang tidak perlu diedit.
Artinya, dengan nilai defaultnya saja Hadoop sudah bisa berjalan normal.
File-file konfigurasi yang WAJIB diedit
adalah : hadoop-env.sh, core-site.xml. hdfs-site.xml, mapred-site.xml, masters
dan slaves. Langsung saja, kita edit satu-persatu.
-- hadoop-env.sh --
Satu-satunya variable yang harus diedit
adalah JAVA_HOME, yang lainnya cukup dibiarkan sesuai nilai defaultnya.
# The java
implementation to use. Required.
export
JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
JAVA_HOME adalah variable yang menunjuk
directory tempat Java (JRE maupun JDK) diinstal.
-- core-site.xml --
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<configuration>
<!--
server / PC yang ditunjuk sebagai namenode -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoopmaster.vm/</value>
<final>true</final>
</property>
<!--
tentukan tmp directory untuk Hadoop -->
<property>
<name>hadoop.tmp.dir</name>
<value>/local/usr/hadoopTempDir</value>
<final>true</final>
</property>
</configuration>
-- hadfs-site.xml --
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<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>
<!-- replikasi data pada hadoop, normalnya adalah 3
-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
-- mapred-site.xml --
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoopmaster.vm: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>
-- masters --
hadoopmaster.vm
-- slaves --
nfs.vm
hadoopslave2.vm
Menghidupkan
Hadoop
Setelah semua setting dan konfigurasi
diatas selesai, kini Hadoop siap untuk dijalankan. Pertama-tama bagi-bagikan
lah directory hadoop-0.20.2 ke semua PC/node/mesin yang akan digunakan untuk
menjalankan Hadoop. Sekumpulan PC yang menjalankan Hadoop ini kita sebut Hadoop
cluster. Stelah semua PC yang berpartisipasi dalam Hadoop cluster mendapatkan
directory hadoop-0.20.2 plus segalas isinya, kita eksekusi command berikut:
1.
hadoop namenode -format //men-format
HDFS layaknya kita men-format HDD sebelum digunakan.
2.
start-dfs.sh //menghidupkan namenode
dan datanode.
3.
start-mapred.sh //menghidupkan
jobtracker dan tasktrackers.
Sama halnya dengan Hadoop mode
Pseudo-distributed, kondisi namenode dan jobtracker dapat dicek melalui web browser
pada url berikut:
http://hadoopmaster.vm.localdomain:50030/ --url jobtracker.
http://hadoopmaster.vm.localdomain:50070/ --url namenode.
Untuk menghentikan daemons Hadoop, silakan
gunakan command berikut:
1.
stop-mapred.sh
2.
stop-dfs.sh
Sampai disini, instal Hadoop MapReduce mode
Fully Distributed atau terdistribusi penuh telah paripurna. Sekarang Hadoop
telah siap untuk menjalankan program aplikasi MapReduce sesuai keinginan anda.
Untuk menjalankan contoh aplikasi WordCount, langkah-langkahnya sama dengan
cara menjalankan aplikasi WordCount pada Hadoop mode Pseudo-distributed.
Silakan cek artikel "Menjalankan Hadoop MapReduce Mode Pseudo-Distributeddengan Linux".
Selamat mencoba!
Referensi:
"Hadoop: The Definitive Guide 3rd
Edition", Tom White, O'REILLY 2012.
Comments
salesforce training
hadoop training
mulesoft training
linux training