ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย

Hadoop เป็น Framework สำหรับสร้างการประมวลผลแบบกระจาย (Distributed Processing) กับข้อมูลขนาดใหญ่ (Large Data Sets) สามารถเริ่มต้นจากทดสอบบนเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนเป็นระบบ Cluster ได้[1]

อธิบายง่ายๆได้ว่า Hadoop ประกอบด้วย ส่วนประมวลผลแบบกระจายเรียกว่า YARN (หรือ MapReduce) และ ส่วนเก็บข้อมูลแบบกระจายเรียกว่า HDFS (Hadoop Distributed File System) สำหรับการสร้าง Hadoop Cluster ในบทความนี้ใช้ Hadoop version 2.7.2 บน Ubuntu 16.04 โดย Cluster จะประกอบด้วย 1 Master และ N Slaves โดยจะใช้วิธีการสร้างเครื่องต้นฉบับ แล้ว Clone ไปเป็น Master/Slave ต่อไป

1.ขั้นตอนการสร้างตันฉบับสำหรับการ Clone
1.1. ติดตั้ง Ubuntu 16.04 ตามปรกติ สร้าง User คนแรกชื่อ mama
1.2. สร้างกลุ่มชื่อ hadoop

sudo addgroup hadoop

1.3. สร้างผู้ใช้ชื่อ hduser อยู่ในกลุ่ม hadoop

sudo adduser hduser --ingroup hadoop

1.4. ติดตั้ง Java

sudo apt-get install default-jre openjdk-8-jdk-headless

1.5. ติดตั้ง hadoop

wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
tar -zxvf hadoop-2.7.2.tar.gz
sudo mv hadoop-2.7.2 /usr/local/hadoop
sudo mkdir /usr/local/hadoop/etc/hadoop/tmp
sudo chown -R hduser.hadoop /usr/local/hadoop

1.6. เพิ่มตัวแปรใน /etc/environment

HADOOP_HOME=/usr/local/hadoop
HADOOP_PREFIX=/usr/local/hadoop
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

1.7. แก้ไขค่าใน .bashrc

su hduser; cd ~

แล้วแก้ไข .bashrc โดยเพิ่มบรรทัดต่อไปนี้ ท้ายไฟล์

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_PREFIX=/usr/local/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2.ขั้นตอนการสร้าง Master (namenode)
2.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname ให้เหมาะสม
โดยเครื่องนี้ต้อง Static IP เช่น 192.168.1.101
2.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้

<configuration>
<property>
 <name>hadoop.tmp.dir</name>
 <value>/usr/local/hadoop/tmp</value>
 </property>
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://192.168.107.116:9000</value>
 </property>
</configuration>

2.3. แก้ไข /usr/local/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
 <property>
 <name>dfs.replication</name>
 <value>3</value>
 </property>
 <property>
 <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
 <value>false</value>
 </property>
</configuration>

2.4. แก้ไข /usr/local/hadoop/etc/hadoop/slaves

โดยใส่ IP ของเครื่องที่จะเป็น Slave หรือ datanode ลงไป เช่น 192.168.1.102 ถึง 192.168.1.111 เป็นต้น

192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
192.168.1.106
192.168.1.107
192.168.1.108
192.168.1.109
192.168.1.110
192.168.1.111

 

3.ขั้นตอนการสร้าง Slave (datanode)
3.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname

เช่น ตั้ง IP เป็น 192.168.1.102
3.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้ (สังเกตว่า 192.168.1.101 เป็น IP Address ของเครื่อง Master)

<configuration>
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://192.168.1.101:9000</value>
 </property>
</configuration>

 

4.ขั้นตอนการตั้งค่า Passwordless SSH

ที่เครื่อง Master ใช้คำสั่งต่อไปนี้ เพื่อให้สามารถ Login ไปเป็น hduser บนเครื่อง slave ได้โดยไม่ต้องใส่รหัสผ่าน

(hduser@master shell)
ssh-keygen -t rsa
ssh hduser@192.168.1.102 mkdir -p .ssh
ssh-copy-id -i .ssh/id_rsa.pub hduser@192.168.1.102

จากนั้นจะสามารถ ssh hduser@192.168.1.102 โดยไม่ต้องใส่ Password อีก แล้วหลังจากนี้ สามารถใช้เครื่อง Slave นี้เป็นต้นฉบับในการ Clone เป็น datanode ต่างๆได้ตามต้องการ

 

5.ขั้นตอนการ Start Hadoop Cluster

ในครั้งแรกสุด ที่เครื่อง Master ต้อง format HDFS ก่อน โดยใช้คำสั่ง (จาก hduser shell)

hdfs namenode -format

จากนั้นใช้คำสั่งต่อไปนี้เพื่อ start ระบบ

start-dfs.sh
start-yarn.sh

6.ดูผลการทำงาน

http://192.168.1.101:50070

http://192.168.1.101:8088

 

7.ขั้นตอนการ Stop Hadoop Cluster

stop-dfs.sh
stop-yarn.sh

References:
[1] http://hadoop.apache.org/