Hadoop - Kluster Multi-Node
Bab ini menjelaskan penyiapan cluster Hadoop Multi-Node di lingkungan terdistribusi.
Karena seluruh cluster tidak dapat didemonstrasikan, kami menjelaskan lingkungan cluster Hadoop menggunakan tiga sistem (satu master dan dua slave); diberikan di bawah ini adalah alamat IP mereka.
- Hadoop Master: 192.168.1.15 (hadoop-master)
- Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
- Hadoop Slave: 192.168.1.17 (hadoop-slave-2)
Ikuti langkah-langkah yang diberikan di bawah ini untuk menyiapkan cluster Hadoop Multi-Node.
Menginstal Java
Java adalah prasyarat utama Hadoop. Pertama-tama, Anda harus memverifikasi keberadaan java di sistem Anda menggunakan "java -version". Sintaks perintah versi java diberikan di bawah ini.
$ java -version
Jika semuanya berfungsi dengan baik, itu akan memberi Anda output berikut.
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
Jika java tidak diinstal di sistem Anda, ikuti langkah-langkah yang diberikan untuk menginstal java.
Langkah 1
Unduh java (JDK <versi terbaru> - X64.tar.gz) dengan mengunjungi tautan berikut www.oracle.com
Kemudian jdk-7u71-linux-x64.tar.gz akan diunduh ke sistem Anda.
Langkah 2
Umumnya Anda akan menemukan file java yang diunduh di folder Unduhan. Verifikasi dan ekstrak filejdk-7u71-linux-x64.gz file menggunakan perintah berikut.
$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz
$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz
LANGKAH 3
Untuk membuat java tersedia untuk semua pengguna, Anda harus memindahkannya ke lokasi "/ usr / local /". Buka root, dan ketik perintah berikut.
$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit
LANGKAH 4
Untuk menyiapkan PATH dan JAVA_HOME variabel, tambahkan perintah berikut ke ~/.bashrc mengajukan.
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin
Sekarang verifikasi java -versionperintah dari terminal seperti dijelaskan di atas. Ikuti proses di atas dan instal java di semua node cluster Anda.
Membuat Akun Pengguna
Buat akun pengguna sistem pada sistem master dan slave untuk menggunakan penginstalan Hadoop.
# useradd hadoop
# passwd hadoop
Memetakan node
Anda harus mengedit hosts mengajukan /etc/ folder di semua node, tentukan alamat IP dari setiap sistem diikuti dengan nama hostnya.
# vi /etc/hosts
enter the following lines in the /etc/hosts file.
192.168.1.109 hadoop-master
192.168.1.145 hadoop-slave-1
192.168.56.1 hadoop-slave-2
Mengonfigurasi Login Berbasis Kunci
Atur ssh di setiap node sedemikian rupa sehingga mereka dapat berkomunikasi satu sama lain tanpa meminta kata sandi.
# su hadoop
$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2
$ chmod 0600 ~/.ssh/authorized_keys
$ exit
Memasang Hadoop
Di server Master, unduh dan instal Hadoop menggunakan perintah berikut.
# mkdir /opt/hadoop
# cd /opt/hadoop/
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz
# tar -xzf hadoop-1.2.0.tar.gz
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop
# cd /opt/hadoop/hadoop/
Mengonfigurasi Hadoop
Anda harus mengkonfigurasi server Hadoop dengan melakukan perubahan berikut seperti yang diberikan di bawah ini.
core-site.xml
Buka core-site.xml file dan edit seperti yang ditunjukkan di bawah ini.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-master:9000/</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
hdfs-site.xml
Buka hdfs-site.xml file dan edit seperti yang ditunjukkan di bawah ini.
<configuration>
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/hadoop/dfs/name/data</value>
<final>true</final>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml
Buka mapred-site.xml file dan edit seperti yang ditunjukkan di bawah ini.
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop-master:9001</value>
</property>
</configuration>
hadoop-env.sh
Buka hadoop-env.sh file dan edit JAVA_HOME, HADOOP_CONF_DIR, dan HADOOP_OPTS seperti yang ditunjukkan di bawah ini.
Note - Atur JAVA_HOME sesuai konfigurasi sistem Anda.
export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf
Menginstal Hadoop di Server Slave
Instal Hadoop di semua server budak dengan mengikuti perintah yang diberikan.
# su hadoop
$ cd /opt/hadoop
$ scp -r hadoop hadoop-slave-1:/opt/hadoop
$ scp -r hadoop hadoop-slave-2:/opt/hadoop
Mengonfigurasi Hadoop di Server Master
Buka server master dan konfigurasikan dengan mengikuti perintah yang diberikan.
# su hadoop
$ cd /opt/hadoop/hadoop
Mengonfigurasi Master Node
$ vi etc/hadoop/masters
hadoop-master
Mengonfigurasi Slave Node
$ vi etc/hadoop/slaves
hadoop-slave-1
hadoop-slave-2
Format Node Nama di Hadoop Master
# su hadoop
$ cd /opt/hadoop/hadoop
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = hadoop-master/192.168.1.109
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.2.0
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013
STARTUP_MSG: java = 1.7.0_71
************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
………………………………………………….
11/10/14 10:58:08 INFO common.Storage: Storage directory
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode:
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/
Memulai Layanan Hadoop
Perintah berikut adalah memulai semua layanan Hadoop di Hadoop-Master.
$ cd $HADOOP_HOME/sbin
$ start-all.sh
Menambahkan DataNode Baru di Cluster Hadoop
Diberikan di bawah ini adalah langkah-langkah yang harus diikuti untuk menambahkan node baru ke cluster Hadoop.
Jaringan
Tambahkan node baru ke cluster Hadoop yang ada dengan beberapa konfigurasi jaringan yang sesuai. Asumsikan konfigurasi jaringan berikut.
Untuk Konfigurasi Node Baru -
IP address : 192.168.1.103
netmask : 255.255.255.0
hostname : slave3.in
Menambahkan Pengguna dan Akses SSH
Tambahkan Pengguna
Pada node baru, tambahkan pengguna "hadoop" dan setel sandi pengguna Hadoop menjadi "hadoop123" atau apa pun yang Anda inginkan dengan menggunakan perintah berikut.
useradd hadoop
passwd hadoop
Setup Password kurang konektivitas dari master ke slave baru.
Jalankan yang berikut di master
mkdir -p $HOME/.ssh
chmod 700 $HOME/.ssh
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/
Jalankan yang berikut pada budak
Masuk ke hadoop. Jika tidak, login ke pengguna hadoop.
su hadoop ssh -X [email protected]
Salin konten kunci publik ke dalam file "$HOME/.ssh/authorized_keys" lalu ubah izin untuk hal yang sama dengan menjalankan perintah berikut.
cd $HOME
mkdir -p $HOME/.ssh
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys
chmod 644 $HOME/.ssh/authorized_keys
Periksa login ssh dari mesin master. Sekarang periksa apakah Anda dapat ssh ke node baru tanpa kata sandi dari master.
ssh [email protected] or hadoop@slave3
Tetapkan Nama Host Node Baru
Anda dapat mengatur nama host dalam file /etc/sysconfig/network
On new slave3 machine
NETWORKING = yes
HOSTNAME = slave3.in
Untuk membuat perubahan efektif, restart mesin atau jalankan perintah hostname ke mesin baru dengan nama host masing-masing (restart adalah pilihan yang baik).
Pada mesin node slave3 -
nama host slave3.in
Memperbarui /etc/hosts di semua mesin cluster dengan baris berikut -
192.168.1.102 slave3.in slave3
Sekarang coba ping mesin dengan nama host untuk memeriksa apakah itu menyelesaikan ke IP atau tidak.
Di mesin node baru -
ping master.in
Mulai DataNode di New Node
Mulai daemon datanode secara manual menggunakan $HADOOP_HOME/bin/hadoop-daemon.sh script. Ini akan secara otomatis menghubungi master (NameNode) dan bergabung dengan cluster. Kita juga harus menambahkan node baru ke file conf / slaves di server master. Perintah berbasis skrip akan mengenali node baru.
Masuk ke node baru
su hadoop or ssh -X [email protected]
Mulai HDFS pada node budak yang baru ditambahkan dengan menggunakan perintah berikut
./bin/hadoop-daemon.sh start datanode
Periksa output dari perintah jps pada node baru. Ini terlihat sebagai berikut.
$ jps
7141 DataNode
10312 Jps
Menghapus DataNode dari Cluster Hadoop
Kami dapat menghapus node dari cluster dengan cepat, saat sedang berjalan, tanpa kehilangan data. HDFS menyediakan fitur decommissioning, yang memastikan bahwa penghapusan node dilakukan dengan aman. Untuk menggunakannya, ikuti langkah-langkah seperti yang diberikan di bawah ini -
Langkah 1 - Masuk ke master
Masuk ke pengguna mesin master tempat Hadoop diinstal.
$ su hadoop
Langkah 2 - Ubah konfigurasi cluster
File pengecualian harus dikonfigurasi sebelum memulai cluster. Tambahkan kunci bernama dfs.hosts.exclude ke file$HADOOP_HOME/etc/hadoop/hdfs-site.xmlmengajukan. Nilai yang terkait dengan kunci ini memberikan jalur lengkap ke file di sistem file lokal NameNode yang berisi daftar mesin yang tidak diizinkan untuk menyambung ke HDFS.
Misalnya, tambahkan baris ini ke etc/hadoop/hdfs-site.xml mengajukan.
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value>
<description>DFS exclude</description>
</property>
Langkah 3 - Tentukan host yang akan dinonaktifkan
Setiap mesin yang akan dinonaktifkan harus ditambahkan ke file yang diidentifikasi oleh hdfs_exclude.txt, satu nama domain per baris. Ini akan mencegah mereka terhubung ke NameNode. Isi dari"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" file ditampilkan di bawah, jika Anda ingin menghapus DataNode2.
slave2.in
Langkah 4 - Paksa muat ulang konfigurasi
Jalankan perintahnya "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" tanpa tanda kutip.
$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes
Ini akan memaksa NameNode untuk membaca ulang konfigurasinya, termasuk file 'excludes' yang baru diperbarui. Ini akan menonaktifkan node selama periode waktu tertentu, memberikan waktu untuk setiap blok node untuk direplikasi ke mesin yang dijadwalkan untuk tetap aktif.
Di slave2.in, periksa keluaran perintah jps. Setelah beberapa waktu, Anda akan melihat proses DataNode dimatikan secara otomatis.
Langkah 5 - Matikan node
Setelah proses penonaktifan selesai, perangkat keras yang dinonaktifkan dapat dimatikan dengan aman untuk pemeliharaan. Jalankan perintah report ke dfsadmin untuk memeriksa status decommissioning. Perintah berikut akan menjelaskan status node decommissioning dan node yang terhubung ke cluster.
$ $HADOOP_HOME/bin/hadoop dfsadmin -report
Langkah 6 - Edit lagi file yang tidak termasuk
Setelah mesin dinonaktifkan, mereka dapat dihapus dari file 'excludes'. Lari"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"sekali lagi akan membaca kembali file yang tidak disertakan ke dalam NameNode; memungkinkan DataNodes untuk bergabung kembali dengan cluster setelah pemeliharaan selesai, atau kapasitas tambahan diperlukan di cluster lagi, dll.
Special Note- Jika proses di atas diikuti dan proses pelacak tugas masih berjalan pada node, maka proses tersebut perlu dimatikan. Salah satu caranya adalah dengan melepaskan mesin seperti yang kita lakukan pada langkah-langkah di atas. Master akan mengenali proses tersebut secara otomatis dan akan menyatakan sebagai mati. Tidak perlu mengikuti proses yang sama untuk menghapus pelacak tugas karena TIDAK terlalu penting dibandingkan dengan DataNode. DataNode berisi data yang ingin Anda hapus dengan aman tanpa kehilangan data.
Pelacak tugas dapat dijalankan / dimatikan dengan cepat dengan perintah berikut ini kapan saja.
$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker