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/