Category Archive Tutorial

Bywidyawan

Single Cluster Hadoop pada Virtual Box

Tutorial ini menjelaskan instalasi single cluster Hadoop 2.0 di Ubuntu 14.04 diatas VirtualBox pada laptop Mac OS 10.10. Tutorial ini salah satunya diilhami dari artikel ini. Instalasi Hadoop di atas VBox memudahkan pembelajaran, baik single maupun multi node cluster.

VirtualBox dan Java

Konfigurasi Ubuntu dan install Java. Instalasi (lihat disini untuk detail) diperlukan karena pemrograman Map Reduce pada Hadoop terutama menggunakan Java.

  • Login di Ubuntu server dan update paket index
sudo apt-get update
  • Periksa bila java sudah terpasang
java -version
  • Bila belum terpasang, install Java
sudo apt-get install default-jre
  • install java-jdk (untuk kompilasi java application)
sudo apt-get install default-jdk
  • update ‘JAVA_HOME’ environment variable (dibutuhkan oleh beberapa program)
sudo update-alternatives --config java
sudo nano /etc/environment
JAVA_HOME=“/usr/lib/jvm/java-7-openjdk-i386/"
source /etc/environment 
echo $JAVA_HOME

Instalasi Hadoop

  • Unduh Hadoop, salah satunya dari mirror site spt dibawah. Contoh dibawah hadoop diunduh langsung ke Ubuntu.
wget -o http://mirrors.advancedhosters.com/
apache/hadoop/common/stable/hadoop-2.2.0.tar.gz
tar -xvzf archive.tar.gz --owner root --group root --no-same-owner 2>&1 > tar2.log
  • Buat hadoop group dan user (avoid security issue)
sudo addgroup hadoop sudo adduser --ingroup hadoop hduser
sudo su hduser
  • Menghilangkan warning start-dfs.sh
export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
  • Membuat SSH-certificate
ssh-keygen -t rsa -P

(terms setting default) Identifikasi kita sudah disimpan  /home/hduser/.ssh/id_rsa. Public key tersimpan di /home/hduser/.ssh/id_rsa.pub

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
ssh localhost
  • ubah owner dari file hadoop
cd /usr/local
sudo chown -R hduser:hadoop hadoop
  • Setup environment variable
 
cd ~
nano .bashrc

Copikan di akhir file

###Hadoop variables
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
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"
###end of paste
  • buat directory untuk data
cd~
mkdir -p mydata/hdfs/namenode
mkdir -p mydata/hdfs/datanode

Konfigurasi Hadoop

  • Update JAVA_HOME
cd /usr/local/hadoop/etc/hadoop
nano hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
ubah ke
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
  • verifikasi versi Hadoop
hadoop version

Bila tidak ada pesan error, berarti hadoop sudah sukses terinstalasi. Sebelum bisa dijalankan, Hadoop terlebih dulu perlu dikonfigurasi.

 nano core-site.xml

paste setting berikut diantara configure tag

  <property>
    fs.default.name
    hdfs://localhost:9000
  </property>
 nano yarn-site.xml

paste setting berikut diantara configure tag

<property>
  yarn.nodemanager.aux-services
  mapreduce_shuffle
</property>
<property>
   yarn.nodemanager.aux-services.mapreduce.shuffle.class
   org.apache.hadoop.mapred.ShuffleHandler  
</property>

save dan close file.

mv mapred-site.xml.template mapred-site.xml
nano mapred-site.xml

Paste setting berikut diantara configure tags:

<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

nano hdfs-site.xml

Paste setting berikut diantara configure tags:

<property>
   <name>dfs.replication</name>
   <value>1</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/home/hduser/mydata/hdfs/namenode</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/home/hduser/mydata/hdfs/datanode</value>
 </property>

Simpan dan tutup file.

Format Namenode

hdfs namenode -format

Memulai Hadoop Services

start-dfs.sh
....
start-yarn.sh
....
jps

Jika semuanya lancer, services dibawah akan berjalan

DataNode
ResourceManager
Jps
NodeManager
NameNode
SecondaryNameNode

Menguji Hadoop (menghitung nilai dari pi)

$cd /usr/local/hadoop
$hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 2 5

Number of Maps  = 2
Samples per Map = 5
13/10/21 18:41:03 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
13/10/21 18:41:04 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
13/10/21 18:41:04 INFO input.FileInputFormat: Total input paths to process : 2
13/10/21 18:41:04 INFO mapreduce.JobSubmitter: number of splits:2
13/10/21 18:41:04 INFO Configuration.deprecation: user.name is deprecated. Instead, use mapreduce.job.user.name
...

Hasil test seharusnya mirip seperti dibawah:

Job Finished in 24.815 seconds (number rounded to 1000th decimal)
Estimated value of Pi is 3.60000000000 (or similar number)

Selamat mencoba!

Bywidyawan

DNS Server di Ubuntu dengan Bind

DNS (Domain Name  System) adalah mekanisme yang menerjemahkan dari alamat IP menjadi nama domain yang lebih mudah dipahami oleh manusia. Ditemukan pada tahun 1982, spesifikasi original bisa dijumpai pada RFC 882 and RFC 883, yang kemudian diganti oleh RFC 1034 and RFC 1035 [1].

Untuk membuat DNS server pada Ubuntu maka perlu diinstal software DNS. Salah satu paket yang paling banyak digunkan adalah Bind. Untuk menginstall Bind pada Ubuntu Linux

sudo apt-get install bind9

Cek instalasi bind9 dengan

dpkg -l | grep bind9

Dalam tutorial ini akan dibuat 1 DNS server untuk 1 domain yang kemudian akan diuji fungsionalitasnya. Untuk itu ada 3 file yang akan diubah (untuk definisi domain dan zone, forwarder dan resolver) dan 2 file yang dibuat untuk konfigurasi [2]. File yang akan diubah adalah:

  1. /etc/named.conf.local
  2. /etc/named.conf.option
  3. /etc/resolv.conf

Edit file pertama untuk mendefinisikan domain yang akan diadministrasi.

gksudo gedit /etc/bind/named.conf.local

File ini digunakan untuk mendefinisikan zone, atau domain yang akan diadmintrasi oleh server. Sebagai contoh, bila kita mendefiniskan domain example.com, maka file ini akan berisi sebagai berikut

#ganti example.com dengan zone anda, juga zone reverse. Untuk contoh ini network address dari domain adalah 10.0.2.0/24. Gantilah dengan network address dari zone anda.

zone “example.com” {
type master;
file “/etc/bind/zones/example.com.db”;
};

# This is the zone definition for reverse DNS.
zone “2.0.10.in-addr.arpa” {
type master;
file “/etc/bind/zones/rev.2.0.10.in-addr.arpa”;
};

Edit file /etc/bind/named.conf.option. Untuk bagian forwarder masukkan DNS server yang menjadi tujuan query, bila DNS server anda tidak punya informasi. Contoh dibawah ini menggunakan google DNS server sebagai tujuan. Jangan lupa untuk menghapuskan tanda komentar “//”

forwarders {
8.8.8.8;
};

File ke-3 yang perlu diubah adalah /etc/resolv.conf. File ini digunakan untuk memberitahu aplikasi (contoh: browser) DNS server mana yang akan digunakan. Ganti IP dengan alamat komputer yang digunakan sebagai server.

nameserver 10.0.2.15
search example.com

Langkah berikutnya adalah mengkonfigurasi zone. File pertama yang harus dibuat adalah /etc/bind/zones/example.com.db, digunakan untuk menterjemahkan domain name menjadi IP address. Berikut ini contoh isi file tersebut (ubah sesuai kebutuhan).

Bila belum ada, buat lebih dahulu directory zone di /etc/bind

sudo mkdir /etc/bind/zones

Kemudian buat file example.com.db dengan contoh dibawah ini

$TTL 3600
example.com.      IN      SOA     ns1.example.com. admin.example.com. (
2012051401
28800
3600
604800
38400
)

example.com.      IN      NS              ns1.example.com.
example.com.      IN      MX     10       mta.example.com.
www              IN      A       10.0.2.15
mta              IN      A       10.0.2.15
ns1              IN      A       10.0.2.15

File kedua yang dibuat adalah file reverse domain (/etc/bind/zones/rev.2.0.10.in-addr.arpa). File ini digunakan untuk menerjemahkan sebuah IP address menjadi domain name. Contoh file bisa dilihat dibawah.

@ IN SOA ns1.example.com. admin.example.com. (
2012051401
28800
604800
604800
86400
)

IN    NS     ns1.example.com.
15                    IN    PTR    example.com

Periksa file zone anda untuk memastikan tidak ada kesalahan konfigurasi

named-checkzone -D example.com /etc/bind/zones/example.com.db

named-checkzone -D 2.0.10.in-addr.arpa. /etc/bind/zones/rev.2.0.10.in-addr.arpa

Jalankan DNS server anda dengan perintah

sudo /etc/init.d/bind9 start

Setiap kali anda mengubah konfigurasi, reload server dengan perintah

sudo /etc/init.d/bind9 restart

Untuk menguji DNS server, gunakan perintah

nslookup www.example.com

dig www.example.com

Periksa apakah forwarder berfungsi dengan baik

nslookup www.google.com

Selamat mencoba 🙂

Contoh tampilan dig yang berhasil

[1] http://en.wikipedia.org/wiki/Domain_Name_System

[2] http://ubuntuforums.org/showthread.php?t=236093