Instal Hadoop Multinode Cluster menggunakan CDH4 di RHEL/CentOS 6.5


Hadoop adalah kerangka pemrograman sumber terbuka yang dikembangkan oleh Apache untuk memproses data besar. Ia menggunakan HDFS (Hadoop Distributed File System) untuk menyimpan data di semua node data dalam cluster dengan cara distributif dan model pengurangan peta untuk memproses data.

Namenode (NN) adalah daemon master yang mengontrol HDFS dan Jobtracker (JT ) adalah daemon master untuk mesin mapreduce.

Persyaratan

Dalam tutorial ini saya menggunakan dua VM CentOS 6.3 'master' dan 'node' yaitu. (master dan node adalah nama host saya). IP 'master' adalah 172.21.17.175 dan IP simpul adalah '172.21.17.188'. Petunjuk berikut juga berfungsi pada versi RHEL/CentOS 6.x.

Pada Guru
[root@master ~]# hostname

master
[root@master ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
Di Node
[root@node ~]# hostname

node
[root@node ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Pertama-tama pastikan bahwa semua host cluster ada di file '/etc/hosts' (di setiap node), jika Anda belum menyiapkan DNS.

Pada Guru
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Di Node
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Menginstal Cluster Multinode Hadoop di CentOS

Kami menggunakan repositori CDH resmi untuk menginstal CDH4 di semua host (Master dan Node) dalam sebuah cluster.

Langkah 1: Unduh Instal Repositori CDH

Buka halaman pengunduhan CDH resmi dan ambil versi CDH4 (yaitu 4.6) atau Anda dapat menggunakan perintah wget berikut untuk mengunduh repositori dan menginstalnya.

Pada RHEL/CentOS 32-bit
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
Pada RHEL/CentOS 64-bit
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

Sebelum menginstal Hadoop Multinode Cluster, tambahkan Cloudera Public GPG Key ke repositori Anda dengan menjalankan salah satu perintah berikut sesuai dengan arsitektur sistem Anda.

## on 32-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

Langkah 2: Siapkan JobTracker & NameNode

Selanjutnya, jalankan perintah berikut untuk menginstal dan mengatur JobTracker dan NameNode di server Master.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

Langkah 3: Siapkan Node Nama Sekunder

Sekali lagi, jalankan perintah berikut di server Master untuk menyiapkan node nama sekunder.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

Langkah 4: Siapkan Pelacak Tugas & Datanode

Selanjutnya, atur tasktracker & datanode di semua host cluster (Node) kecuali host JobTracker, NameNode, dan Secondary (atau Standby) NameNode (pada node dalam hal ini).

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Langkah 5: Siapkan Klien Hadoop

Anda dapat menginstal klien Hadoop di mesin terpisah (dalam hal ini saya telah menginstalnya di datanode, Anda dapat menginstalnya di mesin mana pun).

[root@node ~]# yum install hadoop-client

Langkah 6: Terapkan HDFS pada Node

Sekarang jika kita sudah selesai dengan langkah-langkah di atas, mari kita lanjutkan ke penerapan hdfs (yang harus dilakukan pada semua node).

Salin konfigurasi default ke direktori /etc/hadoop (pada setiap node di cluster).

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Gunakan perintah alternatif untuk menyetel direktori khusus Anda, sebagai berikut ( pada setiap node dalam cluster ).

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Langkah 7: Menyesuaikan File Konfigurasi

Sekarang buka file 'core-site.xml' dan perbarui “fs.defaultFS” pada setiap node dalam cluster.

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>

Selanjutnya perbarui “dfs.permissions.superusergroup” di hdfs-site.xml pada setiap node dalam cluster.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>

Catatan: Harap pastikan bahwa, konfigurasi di atas ada di semua node (lakukan pada satu node dan jalankan scp untuk menyalin pada node lainnya dari node).

Langkah 8: Mengonfigurasi Direktori Penyimpanan Lokal

Perbarui “dfs.name.dir atau dfs.namenode.name.dir” di 'hdfs-site.xml' pada NameNode ( pada Master dan Node ). Silakan ubah nilainya seperti yang disorot.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

Langkah 9: Buat Direktori & Kelola Izin

Jalankan perintah di bawah ini untuk membuat struktur direktori & mengelola izin pengguna pada mesin Namenode (Master) dan Datanode (Node).

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

Format Namenode (di Master), dengan mengeluarkan perintah berikut.

[root@master conf]# sudo -u hdfs hdfs namenode -format

Langkah 10: Mengonfigurasi NameNode Sekunder

Tambahkan properti berikut ke file hdfs-site.xml dan ganti nilai seperti yang ditunjukkan pada Master.

<property>
  <name>dfs.namenode.http-address</name>
  <value>172.21.17.175:50070</value>
  <description>
    The address and port on which the NameNode UI will listen.
  </description>
</property>

Catatan: Dalam kasus ini, nilai harus berupa alamat ip VM master.

Sekarang mari kita terapkan MRv1 (Pengurangan peta versi 1). Buka file 'mapred-site.xml' dengan nilai berikut seperti yang ditunjukkan.

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>mapred.job.tracker</name>
 <value>master:8021</value>
</property>
</configuration>

Selanjutnya, salin file 'mapred-site.xml' ke mesin node menggunakan perintah scp berikut.

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Sekarang konfigurasikan direktori penyimpanan lokal untuk digunakan oleh Daemon MRv1. Sekali lagi buka file 'mapred-site.xml' dan buat perubahan seperti yang ditunjukkan di bawah ini untuk setiap TaskTracker.

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

Setelah menentukan direktori ini dalam file 'mapred-site.xml', Anda harus membuat direktori dan menetapkan izin file yang benar pada setiap node di cluster Anda.

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

Langkah 10: Mulai HDFS

Sekarang jalankan perintah berikut untuk memulai HDFS pada setiap node di cluster.

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Langkah 11 : Buat Direktori HDFS /tmp dan MapReduce /var

Diperlukan untuk membuat /tmp dengan izin yang tepat persis seperti yang disebutkan di bawah.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Sekarang verifikasi struktur File HDFS.

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /

drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

Setelah Anda memulai HDFS dan membuat '/tmp', namun sebelum Anda memulai JobTracker harap buat direktori HDFS yang ditentukan oleh parameter 'mapred.system.dir' (secara default $ {hadoop.tmp .dir}/mapred/system dan ubah pemilik menjadi mapred.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

Langkah 12: Mulai MapReduce

Untuk memulai MapReduce : silakan mulai layanan TT dan JT.

Di setiap sistem TaskTracker
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start

Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
Pada sistem JobTracker
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start

Starting Jobtracker:                                [  OK  ]

starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

Selanjutnya, buat direktori home untuk setiap pengguna hadoop. disarankan agar Anda melakukan ini di NameNode; Misalnya.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

Catatan: dengan adalah nama pengguna Linux setiap pengguna.

Alternatifnya, Anda dapat membuat direktori home sebagai berikut.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

Langkah 13: Buka JT, NN UI dari Browser

Buka browser Anda dan ketik url sebagai http://ip_address_of_namenode:50070 untuk mengakses Namenode.

Buka tab lain di browser Anda dan ketik url sebagai http://ip_address_of_jobtracker:50030 untuk mengakses JobTracker.

Prosedur ini telah berhasil diuji pada RHEL/CentOS 5.X/6.X. Silakan beri komentar di bawah jika Anda menghadapi masalah dengan instalasi, saya akan membantu Anda dengan solusinya.