:::: MENU ::::

Seri Tutorial : Instalasi Hadoop Cluster di Ubuntu 14.04 VMWare [Bagian 1]

Setelah pada tutorial lalu kita membahas mengenai instalasi Hadoop single node, kali ini kita akan membahas langkah instalasi Hadoop cluster di dalam VMWare.

Sebagai catatan, karena pada tutorial ini kita akan menjalankan 3 buah virtual machine secara bersamaan, maka PC atau laptop yang akan digunakan haruslah memiliki setidaknya 8 GB RAM, dan alokasi total untuk ke 3 VM ini sebaiknya tidak melebihi 4GB.

Berikut ini langkah instalasi Hadoop di Ubuntu 14.04 vmWare. Dalam tutorial ini digunakan hadoop 2.6.0. Untuk konfigurasi ini kita akan menggunakan 1 server namenode dan 2 server datanode. Yang akan kita lakukan adalah menginstall 1 mesin sampai selesai, lalu copy 2 kali untuk mendapatkan 3 instance server, dan kemudian kita setting agar ke-3 nya dapat berkomunikasi satu sama lain.

IP Type Node Hostname
192.168.4.148 Name node ubuntu1
192.168.4.149 Data node 1 ubuntu2
192.168.4.155 Data node 2 ubuntu3

1. Install VMWare Player

Install VMWare player, tergantung OS host anda, 32 atau 64 bit : https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/6_0

2. Install Ubuntu

Install Ubuntu 14.04 di VMWare player, anda. Download iso image Ubuntu 14.04 LTS di http://releases.ubuntu.com/14.04/ (sekali lagi, perhatikan keperluan anda, 32 atau 64 bit OS) Agar dapat berkomunikasi satu sama lain, termasuk dapat diakses melalui puTTY, set network setting ke Bridged Mountain View

3. Install jdk

Ada beberapa pilihan yang bisa anda install, di antaranya openjdk atau oracle jdk. Untuk open jdk pilih setidaknya openjdk 7, dengan perintah sbb:
user@ubuntu:~$ sudo apt-get install openjdk-7-jdk

Anda bisa juga menginstall jdk 7 oracle, dengan langkah sbb:

5. Create dedicated group dan user untuk hadoop

Membuat user hduser dan group hdgroup untuk menjalankan hadoop. Langkah ini tidak harus dilakukan, tapi disarankan untuk memisahkan instalasi hadoop dengan aplikasi2 lain di mesin yang sama.

user@ubuntu:~$ sudo addgroup hdgroup
user@ubuntu:~$ sudo adduser --ingroup hdgroup hduser

Masukkan hadoop ke dalam sudoers (untuk create direktori, set permission, dll)
user@ubuntu:~$ sudo adduser hduser sudo

6. Setting jdk path Sebelumnya cek instalasi dengan perintah:

user@ubuntu:~$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Login ke user hduser dengan perintah:

user@ubuntu:~$ su hduser

Set JAVA_HOME di file .bashrc dengan memasukkan path yg sesuai, misalnya untuk java di direktori /usr/local/java , maka tambahkan baris berikut ini:

export JAVA_HOME=/usr/local/java

Apply setting dengan jalankan perintah berikut ini:

hduser@ubuntu:~$ . .bashrc

7. Configure SSH

Hadoop memerlukan akses SSH untuk memanage node-node-nya. Kita perlu melakukan konfigurasi akses SSH ke localhost untuk user hadoop yang sudah kita buat sebelumnya, dan ke data node-nya nantinya.

a. install ssh

hduser@ubuntu:~$ sudo apt-get install ssh

b. generate an SSH key untuk user hadoop

hduser@ubuntu:~$ ssh-keygen -t rsa -P ""

Perintah di atas akan membuat RSA key pair dengan password kosong. Sebenarnya penggunaan password kosong ini tidak disarankan dari sisi keamanan, namun dalam hal ini kita memerlukan akses tanpa password untuk keperluan interaksi Hadoop dengan node-node-nya. Tentunya kita tidak ingin memasukkan password setiap kali Hadoop mengakses node-nya, bukan?

c. enable akses SSH ke local machine dengan key yang baru dibuat

hduser@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

d. test setting SSH

Langkah terakhir adalah testing setup SSH tersebut dengan melakukan koneksi ke localhost menggunakan user hadoop. Langkah ini juga diperlukan untuk menyimpan host key dingerprint ke file known_host milik user hadoop.
hduser@ubuntu:~$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is 34:72:32:43:11:87:fa:83:7e:ea:13:e6:43:68:28:0f.
Are you sure you want to continue connecting (yes/no)? yes

Langkah terakhir adalah testing setup SSH tersebut dengan melakukan koneksi ke localhost menggunakan user hadoop. Langkah ini juga diperlukan untuk menyimpan host key fingerprint ke file known_host milik user hadoop.

8. Instalasi Hadoop

Download hadoop di https://www.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz, extract ke sebuah direktori, misalnya /usr/local/hadoop.

hduser@ubuntu:~$ cd /usr/local
hduser@ubuntu:~$ sudo tar xzf hadoop-2.6.0.tar.gz
hduser@ubuntu:~$ sudo cp -Rh hadoop-2.6.0 /usr/local/hadoop
Update File .bashrc

Tambahkan baris berikut ini ke akhir file $HOME/.bashrc dari user hadoop. Jika anda menggunakan shell selain bash, maka anda perlu meng-update config file yang bersesuaian. Berikut ini setting untuk instalasi openjdk7:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END

Untuk instalasi java di /usr/local/java, sesuaikan setting JAVA_HOME sbb:

export JAVA_HOME=/usr/local/java
Create direktori untuk hadoop filesystem

Berikut ini beberapa direktori yang perlu dibuat untuk hadoop file system, yang akan di-set dalam parameter dfs.namenode.name.dir , dfs.datanode.name.dir di file

/usr/local/hadoop/etc/hadoop/conf/hdfs-site.xml dan parameter hadoop.tmp.dir di file /usr/local/hadoop/etc/hadoop/conf/core-site.xml: /app/hadoop/namenode, /app/hadoop/datanode dan /app/hadoop/tmp
hduser@ubuntu:~$ sudo mkdir -p /app/hadoop/namenode
hduser@ubuntu:~$ sudo chown hduser:hdgroup /app/hadoop/namenode

hduser@ubuntu:~$ sudo mkdir -p /app/hadoop/datanode hduser@ubuntu:~$ sudo chown hduser:hdgroup /app/hadoop/datanode

hduser@ubuntu:~$ sudo mkdir -p /app/hadoop/tmp
hduser@ubuntu:~$ sudo chown hduser:hdgroup /app/hadoop/tmp
Catatan : jika langkah di atas terlewat, maka kemungkinan anda akan mendapatkan error permission denied atau java.io.IOException ketika anda akan memformat HDFS namenode.

Update Hadoop File Configuration

Berikut ini beberapa file yang perlu di-update di direktori /usr/local/hadoop/etc/hadoop/etc/hadoop

a. File hadoop-env.sh

hduser@ubuntu:~$ vi $HADOOP_INSTALL/etc/hadoop/hadoop-env.sh

# The java implementation to use. Required.

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

b. File-file *-site.xml

Dalam file /usr/local/hadoop/etc/hadoop/core-site.xml: <property> <name><span class="explanatory-dictionary-highlight" data-definition="explanatory-dictionary-definition-52">hadoop</span>.tmp.dir</name> <value>/app/<span class="explanatory-dictionary-highlight" data-definition="explanatory-dictionary-definition-52">hadoop</span>/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://ubuntu1:54310</value> <description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.</description> </property>

Dalam file /usr/local/hadoop/etc/hadoop/mapred-site.xml:

<property> <name>mapred.job.tracker</name> <value>ubuntu1:54311</value> <description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task. </description> </property>

Dalam file /usr/local/hadoop/etc/hadoop/conf/hdfs-site.xml:

<property> <name>dfs.replication</name> <value>2</value> <description>Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. </description> </property> <property> <name>dfs.data.dir</name> <value>file:///app/<span class="explanatory-dictionary-highlight" data-definition="explanatory-dictionary-definition-52">hadoop</span>/datanode</value> <final>true</final> </property> <property> <name>dfs.name.dir</name> <value>file:///app/<span class="explanatory-dictionary-highlight" data-definition="explanatory-dictionary-definition-52">hadoop</span>/namenode</value> <final>true</final> </property> <property> <name>dfs.namenode.http-address</name> <value>ubuntu1:50070</value> <description>The address and the base port where the dfs namenode web ui will listen on. </description> </property>

Lho, gitu aja? Oh tentu tidak..!

Langkah selanjutnya akan dijelaskan pada bagian 2, so stay tune 🙂

Contributor :

M. Urfah
Penyuka kopi dan pasta (bukan copy paste) yang sangat hobi makan nasi goreng. Telah berkecimpung di bidang data processing dan data warehousing selama 12 tahun. Salah satu obsesi yang belum terpenuhi saat ini adalah menjadi kontributor aktif di forum idBigdata.
Tertarik dengan Big Data beserta ekosistemnya? Gabung