You are on page 1of 80

Big Data နဲ႔ ပတ္သ က္ျပီး research လု ပ္ခ်င္သူမ်ားအတြက္ အဆင္ေျပေအာင္ Big Data Platform တစ္ခုျဖစ္တဲ့Hadoop Installation

နဲ႔ ပတ္သက္ျပီး notes ထု တ္ထ ားတာပါ။

Hadoop ကို Linux operating system ေပၚမွာ install လု ပ္မွာပါ။ Commodity linux clusters ေပၚမွာ Big Data Platform
ေဆာက္မွာျဖစ္တဲ့အတြက္ computer ေတြလို ပါတယ္။ ကို ယ္ရဲ႕ cluster ေပၚမူ တည္ျပီး computer ေတြလို ပါတယ္။ cluster
မွာ computer ၅လံ ု း သံ ု းမယ္ ဆို ရင္ computer ၅ လံ ု းလို မွာပါ။ computer အမ်ားၾကီး မရွိလည္း အဆင္ေျပေအာင္ Virtual
Machine ကို သံ ု းပါမယ္။

ပထမဆံ ု း VMWare Workstation-9.0.2 ကို အရင္ install လု ပ္ပါမယ္။

VMware Workstation 9 ကို ဖြင့္လို က္ရင္ အေပၚက Figure အတို င္းေတြ႔ရမွာျဖစ္ပါတယ္။


Virtual machine create လု ပ္မွာျဖစ္ပါတယ္။ File -> New Virtual Machine … ကို သြားပါမယ္။

Typical configuration ကို ေရြးပါမယ္။ Next ကို ႏွိပ္ပါမယ္။


Virtual Machine create လု ပ္ျပီးမွ OS install လု ပ္မွာျဖစ္တဲ့အတြက္ I will install the operating system later ကို ေရြးပါမ
ယ္။ Next ကို ႏိွပ္ပါမယ္။

Guest Operating System က Linux ကို ေရြးပါမယ္။ Version က Ubuntu 64-bit ျဖစ္ပါတယ္။ Next ကို ႏွိပ္ပါမယ္။
Virtual machine name ကို Server1 လို ႔ေပးျပီး Location ကို ေတာ့ D:\Cluster\Virtual Machines\Server1 လို ႔ေပးထားပါ
တယ္။ Name နဲ႔ Location ကို ၾကိဳက္တ ာ ထားလို ႔ရပါတယ္။ Next ကို ႏွိပ္ပါမယ္။

Maximum disk size ကို 50 GB ထားပါတယ္။ Next ကို ႏွိပ္ပါမယ္။


Virtual machine ရဲ႕ setting ကို ျပထားတာပါ။ Memory ကို 1GB ထားပါတယ္။ ျပင္ခ်င္ရင္ Customize Hardware button ကို
ႏိွပ္ျပီး ျပင္ႏို င္ပါတယ္။ ျပီးရင္ Finish ႏိွပ္ပါမယ္။ Virtual Machine တစ္လံ ု း create လု ပ္ျပီးပါျပီ။

Edit virtual machine Settings ကို ႏိွပ္ပါ။


Hardware tab မွာ CD/DVD (IDE) ကို ေရြးပါ။ ISO image file ကို ေရြးပါ။ Operating System ကို ubuntu-14.04.3 သံ ု းပါ
မယ္။ OK ႏိွပ္ပါ။ VM ကို Power on ပါ။

Install Ubuntu ကို ႏိွပ္ပါ။


Continue ကို ႏိွပ္ပါ။
Install Now ကို ႏိွပ္ပါ။

Continue ကို ႏိွပ္ပါ။

Continue ကို ႏိွပ္ပါ။


Keyboard Layout ကို English (US) ေရြးပါမယ္။ Continue ကို ႏွိပ္ပါမယ္။

Continue ကို ႏွိပ္ပါမယ္။


Ubuntu ရဲ႕ Desktop ျဖစ္ပါတယ္။ Ctrl + Alt + T ႏွိပ္ျပီး Terminal ကို သြားပါ။ User က hadoop ျဖစ္ျပီး Hostname က
server1 ျဖစ္ပါတယ္။
super user ေျပာင္းရန္ sudo su လို ႔ရို က္ပါ။ user hadoop ရဲ႕ password ကို ထည့္ပါ။

Installing Java on Ubuntu 14.04


Hadoop က Java နဲ႔ ေရးထားတဲ့ framework ျဖစ္တဲ့အတြက္ Hadoop Install လု ပ္မယ္ဆို Java လို ပါတယ္။ Java ကို
/usr/lib/jvm ေအာက္မွာ install လု ပ္ပါမယ္။ jdk1.7.0_45 နဲ႔ jre1.7.0_45 ကို install လု ပ္ပါမယ္။

အရ င္ဆံ ု း /usr/lib/jvm folder ေဆာက္ရပါမယ္။

mkdir –p /usr/lib/jvm

jdk နဲ႔ jre file ကို /usr/lib/jvm ေအာက္ကို ေရြ႕ပါမယ္။

mv jdk-7u45-linux-x64.tar.gz /usr/lib/jvm
mv jre-7u45-linux-x64.tar.gz /usr/lib/jvm
usr/lib/jvm ဆီကို သြားပါမယ္။
cd /usr/lib/jvm
archive file ေတြကို ျဖည္ပါမယ္။
tar xvzf jdk-7u45-linux-x64.tar.gz
tar xvzf jre-7u45-linux-x64.tar.gz
archive file ေတြကို ျဖည္ျပီးရင္ file ေတြက မလို ေတာ့ လို ႔ ဖ်က္လို႔ရတယ္။
rm jdk-7u45-linux-x64.tar.gz
rm jre-7u45-linux-x64.tar.gz
Java installation က ဘယ္ေနရာမွာလဲ ဆို တာ Ubuntu ကို ေျပာပါမယ္။

update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_45/bin/javac" 1


update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre1.7.0_45/bin/java" 1
update-alternatives --set "javac" "/usr/lib/jvm/jdk1.7.0_45/bin/javac"
update-alternatives --set "java" "/usr/lib/jvm/jre1.7.0_45/bin/java"
echo "JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45" >> /etc/profile
echo "PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
echo "export JAVA_HOME" >> /etc/profile
echo "export PATH" >> /etc/profile
. /etc/profile
Java installation successful ျဖစ္လားလို ႔ test လု ပ္ၾကည့္ပါမယ္။
java –version
javac –version
Installing and Configuring SSH
Hadoop cluster မွာ nodes ေတြကို manage လု ပ္ဖို႔ SSH access လို ပါတယ္။ အဲဒါေၾကာင့္ SSH install လု ပ္ဖို႔လို ပါတယ္။
အရ င္ဆံ ု း apt-get update လု ပ္ပါမယ္။ apt-get update ဆို တာ repositories ထဲက package lists ေတြကို download လု ပ္ျပီး ေ
နာက္ဆံ ု း version ျဖစ္ေအာင္လို႔ update လု ပ္တာ။ ျပီးေတာ့ apt-get upgrade လု ပ္ရပါမယ္။ apt-get upgrade ဆို တာကမွ ခု နက
update လု ပ္ထားတဲ့ package ေတြကို install လု ပ္ေပးတာ ျဖစ္တယ္။ apt-get install ssh ဆို တာ SSH ကို install လု ပ္သြားမွာ ျဖ
စ္တယ္။
apt-get update
apt-get upgrade
apt-get install ssh
which ssh
which sshd
which ssh-keygen
RSA key pair ထု တ္မွာျဖစ္ပါတယ္။ Private key နဲ႔ Public key ထြက္ပါမယ္။
ssh-keygen –t rsa –P “”
-P ရဲ႕ ေနာက္မွာ password ေပးရမွာျဖစ္တယ္။ password less သံ ု းမွာျဖစ္တယ္။ password ေပးလို က္ရင္ cluster မွာ nodes
ေတြ communicate လု ပ္တိုင္း password ထည့ ္ေပးေနရမွာျဖစ္တယ္။

private key ကို /root/.ssh/id_rsa မွာသိမ္းျပီးေတာ့ public key ကို ေတာ့ /root/.ssh/id_rsa.pub မွာ သိမ္းပါတယ္။
public key ရဲ႕ content ကို /root/.ssh/authorized_keys ထဲကို copy ကူ းရပါမယ္။
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
localhost ကို ssh ေခၚၾကည့္ပါမယ္။ ျပီးရင္ exit နဲ႔ထြက္ပါမယ္
ssh localhost
exit

Hadoop Cluster မွာ master ရဲ႕ public key ကို slaves ရဲ႕ authorized_keys မွာ ထည့္ရမွာျဖစ္တယ္။ master node ကေန slave
nodes ေတြကို အလြယ္တ ကူ communicate လု ပ္လို႔ရေအာင္ပါ။ master ရဲ႕ public key id_rsa.pub ကို text editor မွာ ဖြင့္ျ
ပီး content ကို copy ကူ းျပီး slave node ရဲ႕ authorized_keys ထဲ ထည့္ရမွာျဖစ္တယ္။ authorized_keys file ကို လည္း text
editor မွာ ဖြင့္ထားရပါမယ္။ ျပီးရင္ master node ကေန slave ဆီကို ssh ေခၚလို ႔ရပါျပီ။
root@master:/home/hadoop# ssh slave

Installing Hadoop
Hadoop version 2.7.1 ကို သံ ု းပါမယ္။
archive file ကို ျဖည္ပါမယ္။
tar xvzf hadoop-2.7.1.tar.gz
chown –R 777 hadoop-2.7.1
chmod –R 777 hadoop-2.7.1
hadoop-2.7.1/etc/hadoop/hadoop-env.sh file မွာ JAVA_HOME ကို ျပင္ပါမယ္။ JAVA_HOME ကို ကို ယ့္စက္ရဲ႕ java
install လု ပ္ထားတဲ့ ေနရာကို ေျပာရမွာျဖစ္တယ္။ nano hadoop-env.sh နဲ႔ file ကို ဖြင့္ပါ။ export JAVA_HOME=$
{JAVA_HOME} လို ႔ေတြ႕ရမွာျဖစ္တယ္။ java ကို /usr/lib/jvm/jdk1.7.0_45 မွာ install လု ပ္ထားတာျဖစ္လို႔
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45 လို ႔ေျပာင္းပါမယ္။
Ctrl + X ႏွိပ္ပါ။ ျပီးေတာ့ Y နိွပ္ပါ။
JAVA_HOME နဲ႔ HADOOP_HOME ကို environmental variable အျဖစ္ set လု ပ္ပါမယ္။ working directory ကို
/home/hadoop ကို ေျပာင္းပါ။ .bashrc file ကို ဖြင့္ပါ။ JAVA_HOME, HADOOP_HOME နဲ႔ PATH ကို export လု ပ္ပါ။
cd /home/hadoop
nano .bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
export HADOOP_HOME=/home/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
Hadoop installation success ျဖစ္ မျဖစ္ သိေအာင္ hadoop version ကို ေခၚၾကည့္ပါ။
bin/hadoop version
hadoop cluster create လု ပ္တာနဲ႔ပတ္သ က္ျပီး ဆက္ေရးေပးပါမယ္။

Hadoop Operation Modes


Hadoop cluster အလု ပ္လုပ္ရန္အတြက္ operation modes (၃) မ်ိဳးရွိပါတယ္။
1. Local/Standalone Mode
2. Pseudo Distributed Mode
3. Fully Distributed Mode
Local/Standalone Mode
Hadoop ကို default အေနနဲ႔ standalone mode မွာ configure လု ပ္ထားတာျဖစ္တယ္။ single java process အေနနဲ႔အလု ပ္လုပ္ပါတ
ယ္။ standalone mode မွာသာ အလု ပ္လုပ္မယ္ ဆို ရင္ configuration file ေတြကို ျပင္စရာမလို ပါ။
Pseudo Distributed Mode
စက္တ စ္လံ ု းထဲမွာပဲ distributed လု ပ္ေနတယ္လို႔ထင္ေအာင္ simulation လု ပ္ထားတာျဖစ္ပါတယ္။ hdfs, yarn, mapreduce တို ႔လို
hadoop daemon ေတြက သီးျခား java process အေနနဲ႔ အလု ပ္လုပ္ပါတယ္။ ဒီ mode ကို MapReduce application
development လု ပ္ဖို႔အတြက္ သံ ု းပါတယ္။
Fully Distributed Mode
ဒီ mode မွာေတာ့ hadoop ကို အနည္းဆံ ု း စက္ႏွစ္လံ ု း သံ ု းျပီး cluster တစ္ခုအေနနဲ႔ create လု ပ္ျပီးသံ ု းမွာျဖစ္ပါတယ္။

Hadoop in Standalone Mode


Hadoop က default အေနနဲ႔ Standalone Mode မွာ လု ပ္တာျဖစ္တဲ့အတြက္ configuration file ေတြျပင္စရာမလို ပါ။ ပထမ
ဆံ ု း hadoop ရွိမရွိ သိေအာင္ hadoop version ေခၚၾကည့္ပါမယ္။ /root/.bashrc file ကို ဖြင့္ပါ။ JAVA_HOME,
HADOOP_HOME နဲ႔ PATH ကို export လု ပ္ပါ။ .bashrc file မွာ ေျပာင္းသြားတာေတြကို system ကသိေအာင္
source command ကို သံ ု းပါ။ hadoop version ကို ၾကိဳက္တဲ့ေနရာကေန ေခၚလို ႔ရပါျပီ။
nano ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45
export HADOOP_HOME=/home/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
hadoop version
WordCount MapReduce program ကို run ၾကည့္ပါမယ္။ ဒီ program က hadoop installation လု ပ္ကတည္းက hadoop-
mapreduce-examples-2.7.1.jar file ထဲမွာ ပါျပီးသားျဖစ္တယ္။ jar file က hadoop-2.7.1/share/hadoop/mapreduce ေအာ
က္မွာရွိပါတယ္။ Wordcount program က input အေနနဲ႔ေပးလို က္တဲ့ files ေတြထဲက word ေတြကို ဘယ္ႏွစ္ၾကိမ္ ပါလဲလို ႔
count လု ပ္ေပးမွာ ျဖစ္ပါတယ္။ output file ထု တ္ေပးမွာျဖစ္တယ္။ ဒါေၾကာင့္ wordcount လု ပ္ခ်င္တဲ့file ေတြအတြက္ input
directory ေဆာက္ပါမယ္။
mkdir input
hadoop installation မွာ ပါတဲ့ text file ေတြကို input file အေနနဲ႔ သံ ု းခ်င္လို႔ text files ေတြကို input directory ေ
အာက္ကို copy ကူ းပါမယ္။
cp hadoop-2.7.1/*.txt input
ls –l input
hadoop ရဲ႕ jar command ကို သံ ု းျပီး run ပါမယ္။
hadoop jar hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount input
output
output file ကို ျပန္ၾကည့္လို ႔ရပါတယ္။
cat output/*
Hadoop in Pseudo Distributed Mode
Hadoop ကို Pseudo Distributed Mode မွာ အလု ပ္လုပ္ဖို႔ configuration file ေတြျပင္ရပါမယ္။ file ေတြက hadoop-
2.7.1/etc/hadoop ေအာက္မွာရွိပါတယ္။
core-site.xml
အရ င္ဆံ ု း core-site.xml file ကို ျပင္ပါမယ္။
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
property fs.defaultFS က HDFS file system URI ကို ေျပာတာျဖစ္တယ္။ URI ရဲ႕ host က NameNode ရဲ႕ hostname
(or) IP address ျဖစ္ျပီး port ကေတာ့ NameNode က ဘယ္ port ကေန RPC ကို listen လု ပ္ေနလဲဆို တာ ေျပာတာျဖစ္တယ္။
Port မေျပာထားဘူ းဆို ရင္ default က 8020 ျဖစ္ပါတယ္။ Pseudo Distributed Mode က single machine ကပဲ distributed ပံ ု
စံ အလု ပ္လုပ္တာ ျဖစ္တဲ့အတြက္ NameNode က localhost ျဖစ္ေနတာျဖစ္တယ္။ port ကေတာ့ 9000 ျဖစ္တယ္။
hdfs-site.xml
ဒီ xml file မွာ data replication ၊ local file system မွာ namenode နဲ႔ datanode နဲ႔ပတ္သက္ျပီး ဘယ္မွာသိမ္းမလဲဆို တဲ့
information ေတြပါမွာျဖစ္တယ္။ Hadoop infrastructure ကို ဘယ္ေနရာမွာ သိမ္းမလဲဆို တာ ဒီ file မွာ သတ္မွတ္ ေပးလို ႔ရပါတ
ယ္။
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/secondarynamenode</value>
</property>
</configuration>
property dfs.replication က HDFS block တစ္ခုကို replica ဘယ္ေလာက္ထ ားမလဲ ေျပာတာျဖစ္တယ္။ single machine ျဖစ္တဲ့အ
တြက္ 1 ပဲျဖစ္မယ္။ dfs.namenode.name.dir က Namenode က filesystem metadata (the edit log and the filesystem
image) ေတြကို ဘယ္မွာသိမ္းမလဲ ေျပာတာ။ dfs.datanode.data.dir က datanode က block ေတြကို ဘယ္မွာသိမ္းမ
လဲေျပာတာျဖစ္တယ္။ dfs.namenode.checkpoint.dir က secondary namenode က filesystem ရဲ႕ checkpoint ေတြကို
ဘယ္မွာသိမ္းမလဲေျပာတာျဖစ္တယ္။

yarn-site.xml
Hadoop မွာ yarn ကို configure လု ပ္ဖို႔အတြက္ သံ ု းတာျဖစ္တယ္။
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
property yarn.resourcemanager.hostname က resource manager run မယ့္ စက္ရဲ႕ hostname ကို သတ္မွတ္တ ာျဖစ္တယ္။
yarn.nodemanager.aux-services က node manager က run ေပးတဲ့ auxiliary services ေတြကို သတ္မွတ္တ ာျဖစ္တယ္။

mapred-site.xml
ဘယ္ MapReduce framework ကို သံ ု းလဲဆို တာ ေဖာ္ျပဖို ႔အတြက္ ျဖစ္တယ္။ Default အေနနဲ႔ Hadoop မွာ mapred-
site.xml.template file ပါတယ္။ mapred-site.xml.template file ကေန mapred-site.xml file ကို copy လု ပ္ဖို႔လို ပါတယ္။
cp mapred-site.xml.template mapred-site.xml
mapred-site.xml file ကို ဖြင့္ျပီး ျပင္ပါမယ္။
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Formatting the HDFS filesystem
HDFS ကို ပထမဆံ ု းအၾကိမ္ မသံ ု းခင္မွာ filesystem ကို format ခ်ရပါမယ္။
hdfs namenode –format
Starting and stopping the daemons
HDFS, YARN, နဲ႔ MapReduce daemons ေတြ စတင္ရန္ အတြက္ ေအာက္ပါ command ေတြကို သံ ု းပါမယ္။
Namenode, datanode, secondary namenode daemon ေတြ စတင္ရန္အတြက္ start-dfs.sh သံ ု းပါမယ္။ ျပီးရင္ jps ေ
ခၚၾကည့္ပါ။ jps ေခၚလို ႔မရရင္ openjdk install လု ပ္ပါ။ jps ေခၚၾကည့္ရင္ Namenode, datanode, secondary
namenode daemon ေတြ run ေနတာ ေတြ႔ပါမယ္။
start-dfs.sh
apt-get install openjdk-7-jdk
jps
start-yarn.sh command ေခၚၾကည့္ပါ။ ျပီးရင္ jps ေခၚၾကည့္ပါ။ Resource Manager နဲ႔ Node Manager daemons
ေတြ အလု ပ္လုပ္ေနတာေတြ႔ပါမယ္။
start-yarn.sh
jps
mr-jobhistory-daemon.sh start historyserver command ေခၚၾကည့္ပါ။ ျပီးရင္ jps ေခၚၾကည့္ပါ။ Job History
Server အလု ပ္လုပ္ေနတာေတြ႔ပါမယ္။
mr-jobhistory-daemon.sh start historyserver
jps
WordCount program ကို Pseudo Distributed Mode မွာ run ၾကည့္ပါမယ္။ File system က HDFS သံ ု းမွာ ျဖစ္တဲ့အတြက္
input directory ကို HDFS မွာ ေဆာက္ပါမယ္။
hadoop fs -ls /
hadoop fs -mkdir /input
hadoop fs -ls /
hadoop fs -put hadoop-2.7.1/*.txt /input
hadoop fs –ls /input
yarn jar hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input
output
output directory က HDFS မွာရွိပါတယ္။ output file ေတြကို ၾကည့္ပါမယ္။
hadoop fs -ls /user/root/output
hadoop fs –cat /user/root/output/part-r-00000
Accessing Hadoop on browser
Hadoop ကို browser ကေနလည္း access လု ပ္ႏို င္ပါတယ္။
namenode's HTTP server address and port
http://localhost:50070
secondary namenode's HTTP server address and port
http://localhost:50090
datanode's HTTP server address and port
http://localhost:50075
MapReduce job history server's address and port
http://localhost:19888
resource manager's HTTP server address and port
http://localhost:8088
node manager's HTTP server address and port
http://localhost:8042
HDFS, YARN, နဲ႔ MapReduce daemons ေတြကို stop လု ပ္ပါမယ္။
mr-jobhistory-daemon.sh stop historyserver
stop-yarn.sh
stop-dfs.sh

Hadoop in Fully Distributed Mode


Hadoop ကို Fully Distributed Mode မွာ run ရန္ cluster setup လု ပ္ပါမည္။ cluster တြင္ Virtual Machines (3) လံ ု းသံ ု းပါမ
ယ္။

server1 (VM1) 192.168.213.131 NameNode, Secondary NameNode, Resource Manager,


Mapreduce History Server, DataNode, Node Manager
server2 (VM2) 192.168.213.132 DataNode, Node Manager
server3 (VM3) 192.168.213.133 DataNode, Node Manager
server1 သည္ create လု ပ္ျပီးသားျဖစ္ပါသည္။ server2 ႏွင့္ server3 ကို server1 မွတဆင့္ clone လု ပ္ပါမည္။ server1 ကို right
click -> manage -> clone လု ပ္ရပါမည္။

Next ကို ႏွိပ္ပါ။


The current state in the virtual machine ကို ေရြးပါ။ Next ကို ႏိွပ္ပါ။
Create a full clone ကို ေရြးပါ။ Next ကို ႏွိပ္ပါ။

Virtual machine name ကို Server2 လို ႔ေပးပါ။ Location ကို D:\Cluster\Virtual Machines\Server2 ကို ထားပါမယ္။ Finish
ကို ႏွိပ္ပါ။
Close ကို ႏွိပ္ပါမယ္။ Server2 ရလာပါျပီ။ Server2 သည္ Node Manager ႏွင့္ DataNode အလု ပ္လုပ္မွာ ျဖစ္တာေၾကာင့္
memory ကို 512MB ထားပါမယ္။ Server2 ရဲ႕ Edit virtual machine settings ကို ႏွိပ္ပါ။ Memory ကို 512MB ျပင္ပါမယ္။ OK
ကို ႏွိပ္ပါ။
Server2 ကို ဖြင့္ပါ။ Server2 သည္ Server1 မွ clone လု ပ္ထားေသာေၾကာင့္ hostname သည္ server1 ျဖစ္ေနပါသည္။
hostname ကို server2 လို ႔ျပင္ရပါမယ္။ Terminal ကို ဖြင့္ပါ။ /etc/hostname ကို ဖြင့္ျပီး server2 လို ႔ျပင္ပါ။ /etc/hosts ကို ဖြ
င့္ျပီး server1 ကို server2 လို ႔ျပင္ပါ။ terminal မွ exit ျဖင့္ထြက္ပါ။ VM ကို restart ခ်ျပီး terminal ကို ထပ္၀င္ပါ။ hostname သည္
server2 ဟု ေျပာင္းေနပါမည္။

nano /etc/hostname

nano /etc/hosts
Server3 ကို လည္း Server2 ကဲ့ သို ႔ပင္ Server1 မွတဆင့္ clone လု ပ္ပါ။ Memory ျပင္ပါ။ hostname ေျပာင္းပါ။

Server 3 လံ ု းကို IP Address ရေအာင္လုပ္ပါမည္။ Phone မွ wireless လြင့္ေပးပါ။ Internet ဖြင့္ရန္မလို ပါ။

VMWare Workstation ရဲ႕ Edit menu မွ Virtual Network Editor ကို ဖြင့္ပါ။ Connection ကို Bridged ယူ ျပီး Bridged to:
မွာ wireless adapter ကို ေရြးေပးပါ။ OK ႏွိပ္ပါ။

Terminal ကို ဖြင့္ပါ။ ifconfig ဟု ေခၚပါ။ IP address ကို ေတြ႔ရပါမည္။ Server1၏ IP address ကို ေတြ႔ရပါမည္။
Server2 ၏ IP address ျဖစ္ပါတယ္။
Server3 ၏ IP address ျဖစ္ပါတယ္။

server1 မွ server2 ႏွင့္ server3 တို ႔ကို ssh ေခၚရမွာ ျဖစ္ေသာေၾကာင့္ server1 သည္ server2 ႏွင့္ server3 တို ႔ကို
သိရ န္လိုအပ္ပါတယ္။ ဒါေၾကာင့္ server1 ၏ /etc/hosts file တြင္ server1, server2 ႏွင့္ server3 ၏ IP address ကို ထည့္ေ
ပးရမွာျဖစ္တယ္။
server2 ၏ /etc/hosts file တြင္ server1, server2 ႏွင့္ server3 ၏ IP address ကို ထည့္ေပးရမွာျဖစ္တယ္။
server3 ၏ /etc/hosts file တြင္ server1, server2 ႏွင့္ server3 ၏ IP address ကို ထည့္ေပးရမွာျဖစ္တယ္။

Server2 သည္ Server1 မွ clone လု ပ္ထားေသာေၾကာင့္ server2 တြင္ ssh access လု ပ္ရန္ key file မ်ားကို ျပန္ create လု ပ္ရပါ
မယ္။ server2 ၏ id_rsa, id_rsa.pub ႏွင့္ authorized_keys file မ်ားကို အရင္ဖြင့္ၾကည္ပါမယ္။

root@server2:home/hadoop# nano /root/.ssh/id_rsa.pub


server2 တြင္ ရွိေနသည္မွာ server1 ၏ public key file ျဖစ္ေနပါတယ္။ ဒါေၾကာင့္ server2 တြင္ key generate ျပန္လုပ္ပါမ
ယ္။

rm –r /root/.ssh

ssh-keygen –t rsa –P “”

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys


ssh server2

exit
server1 ၏ public key ကို server2 ၏ authorized_keys တြ င္ထည့္ရပါမယ္။ server1 မွ server2 သို ႔ ssh access လု ပ္ၾကည့္
ပါမယ္။

root@server1:/home/hadoop# ssh server2

exit
Server3 ကို လည္း Server2 ကဲ့ သို ႔ပင္ key file create ျပန္လုပ္ပါ။ server1 မွ ssh access လု ပ္ၾကည့္ပါ။

root@server1:/home/hadoop# ssh server3

exit

VM အားလံ ု းမွာ Hadoop install လု ပ္ျပီးသားျဖစ္ပါတယ္။ configuration file ေတြျပင္ပါမယ္။ VM အားလံ ု း ရဲ႕ core-
site.xml file ကို ျပင္ပါမယ္။ Namenode ရဲ႕ hostname က server1 ျဖစ္ပါတယ္။

nano core-site.xml

core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://server1:9000</value>
</property>
</configuration>
hdfs-site.xml
VM အားလံ ု း ရဲ႕ hdfs-site.xml file ကို ျပင္ပါမယ္။
nano hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/secondarynamenode</value>
</property>
</configuration>

yarn-site.xml
VM အားလံ ု း ရဲ႕ yarn-site.xml file ကို ျပင္ပါမယ္။ resource manager run မယ့္ စက္ရဲ႕ hostname က server1 ျဖစ္ပါတယ္။
nano yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>server1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
VM အားလံ ု း ရဲ႕ mapred-site.xml file ကို ျပင္ပါမယ္။
nano mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves
Master ျဖစ္တဲ့server1 ရဲ႕ slaves file ကို ျပင္ပါမယ္။ တျခား VM ေတြမွာ ျပင္စရာမလို ပါ။ DataNode နဲ႔ Node Manager
run မယ့္ machine list ကို ေရးရမွာျဖစ္ပါတယ္။
nano slaves
Formatting the HDFS filesystem
HDFS ကို ပထမဆံ ု းအၾကိမ္ မသံ ု းခင္မွာ filesystem ကို format ခ်ရပါမယ္။
root@server1:/home/hadoop# hdfs namenode –format
Starting and stopping the daemons
HDFS, YARN, နဲ႔ MapReduce daemons ေတြ စတင္ရန္ အတြက္ ေအာက္ပါ command ေတြကို သံ ု းပါမယ္။
Namenode, datanode, secondary namenode daemon ေတြ စတင္ရန္အတြက္ start-dfs.sh သံ ု းပါမယ္။ ျပီးရင္ jps ေ
ခၚၾကည့္ပါ။ jps ေခၚၾကည့္ရင္ Namenode, datanode, secondary namenode daemon ေတြ run ေနတာ
ေတြ႔ပါမယ္။
root@server1:/home/hadoop# start-dfs.sh
root@server1:/home/hadoop# jps
root@server2:/home/hadoop# jps

root@server3:/home/hadoop# jps
root@server1:/home/hadoop# start-yarn.sh
root@server1:/home/hadoop# jps
root@server2:/home/hadoop# jps

root@server3:/home/hadoop# jps
mr-jobhistory-daemon.sh start historyserver command ေခၚၾကည့္ပါ။ ျပီးရင္ jps ေခၚၾကည့္ပါ။ Job History
Server အလု ပ္လုပ္ေနတာေတြ႔ပါမယ္။
root@server1:/home/hadoop# mr-jobhistory-daemon.sh start historyserver
root@server1:/home/hadoop# jps
WordCount program ကို Pseudo Distributed Mode မွာ run ၾကည့္ပါမယ္။ File system က HDFS သံ ု းမွာ ျဖစ္တဲ့အတြက္
input directory ကို HDFS မွာ ေဆာက္ပါမယ္။
root@server1:/home/hadoop# hadoop fs -ls /
root@server1:/home/hadoop# hadoop fs -mkdir /input
root@server1:/home/hadoop# hadoop fs -ls /
root@server1:/home/hadoop# hadoop fs -put hadoop-2.7.1/*.txt /input
root@server1:/home/hadoop# hadoop fs –ls /input
root@server1:/home/hadoop# yarn jar hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.7.1.jar wordcount /input output
output directory က HDFS မွာရွိပါတယ္။ output file ေတြကို ၾကည့္ပါမယ္။
root@server1:/home/hadoop# hadoop fs -ls /user/root/output
root@server1:/home/hadoop# hadoop fs –cat /user/root/output/part-r-00000
Accessing Hadoop on browser
Hadoop ကို browser ကေနလည္း access လု ပ္ႏို င္ပါတယ္။
namenode's HTTP server address and port
server1 ရဲ႕ browser ကေန http://localhost:50070 (or) http://server1:50070
secondary namenode's HTTP server address and port
server1 ရဲ႕ browser ကေန http://localhost:50090 (or) http://server1:50090
MapReduce job history server's address and port
server1 ရဲ႕ browser ကေန http://localhost:19888 (or) http://server1:19888
resource manager's HTTP server address and port
server1 ရဲ႕ browser ကေန http://localhost:8088 (or) http://server1:8088

datanode's HTTP server address and port


server1 ရဲ႕ browser ကေန http://localhost:50075 (or) http://server1:50075
server2 ရဲ႕ browser ကေန http://localhost:50075 (or) http://server2:50075
server3 ရဲ႕ browser ကေန http://localhost:50075 (or) http://server3:50075
node manager's HTTP server address and port
server1 ရဲ႕ browser ကေန http://localhost:8042 (or) http://server1:8042
server2 ရဲ႕ browser ကေန http://localhost:8042 (or) http://server2:8042
server3 ရဲ႕ browser ကေန http://localhost:8042 (or) http://server3:8042
HDFS, YARN, နဲ႔ MapReduce daemons ေတြကို stop လု ပ္ပါမယ္။
root@server1:/home/hadoop# mr-jobhistory-daemon.sh stop historyserver
root@server1:/home/hadoop# stop-yarn.sh
root@server1:/home/hadoop# stop-dfs.sh

Creating MapReduce+GlusterFS Cluster

Big Data Platform တစ္ခုမွာ အေျခခံ အားျဖင့္ ႏွစ္ပိုင္းပါ၀င္ပါတယ္။ Big Data Storage နဲ႔ Big Data Processing တို ႔ျဖစ္ပါ
တယ္။ Hadoop သည္ Big Data Platform တစ္ခုျဖစ္တဲ့အတြက္ storage နဲ႔ processing ဆို ျပီးႏွစ္ပိုင္းပါ၀င္ပါတယ္။ Big Data
Storage အတြက္ ကို Hadoop Distributed File System ကလု ပ္ေဆာင္ေပးျပီး Big Data Processing အတြက္ ကို
MapReduce Framework ကလု ပ္ေဆာင္ေပးပါတယ္။ ဒီတစ္ခါမွာေတာ့ Big Data Platform အသစ္တစ္ခုကို တည္ေဆာက္ၾကည့္ပါ
မယ္။ ဒီ Platform မွာေတာ့ Big Data Storage အတြက္ကို Gluster File System သံ ုးျပီး Processing အတြက္
MapReduce သံ ုးပါမယ္။ Hadoop ကို ေတာ့ install လု ပ္ျပီးသားလို ႔ယူ ဆပါမယ္။ Gluster File System ကို install လု ပ္ပါမယ္။
glusterfs-3.7.6 ကို သံ ုးပါမယ္။ PPA(Personal Package Archive) က software ကို သံ ုးျပီး install လု ပ္မွာပါ။

apt-get install software-properties-common


add-apt-repository ppa:gluster/glusterfs-3.7
apt-get update
apt-get install glusterfs-server

GlusterFS install လု ပ္တာ success ျဖစ္မျဖစ္ သိေအာင္ glusterfs –version ေခၚၾကည့္ပါ။

glusterfs –version
 glusterfs
 glusterfs-cli
 glusterfs-fuse
 glusterfs-libs
 glusterfs-server

Gluster File System တြင္္ storage server အေနျဖင့္ VM(3) လံ ု းျဖင့္တည္ေဆာက္မွာျဖစ္ပါတယ္။ VM တစ္လံ ု းခ်င္းစီသည္
storage အတြက္ space ေပးႏို င္မွာ ျဖစ္ျပီး VM အားလံ ု း၏ စု စု ေပါင္း space ကို ရမွာ ျဖစ္ပါတယ္။

အရ င္ဆံ ု း volume တစ္ခုေဆာက္ပါမယ္။

GlusterFS မွာ volume အမ်ိဳးအစား (7) မ်ိဳးရွိပါတယ္။


Distributed volume
Distributed volume သည္ file ေတြကို volume မွာရွိတဲ႔ brick ေတြကို random အားျဖင့္သိမ္းပါတယ္။
ဘယ္ file ကို ဘယ္ brick မွာ သိမ္းရမလဲဆို တာ Elastic Hashing Algorithm နဲ႔ ဆံ ု းျဖတ္ပါတယ္။ Gluster File System သည္
file based ျဖစ္ပါတယ္။ တစ္ခါသိမ္းရင္ file တစ္ခုလံ ု း သိမ္းပါတယ္။ ျပီးေတာ့ Metadata Server မရွိပါဘူ း။ ဒါေၾကာင့္ ဘယ္
file ကို ဘယ္ ေနရာမွာ သိမ္းမလဲဆို တာကို Elastic Hashing Alogrithm က ဆုံ းျဖတ္ေပးတာျဖစ္ပါတယ္။

gluster volume create testvolume server1:/exp1 server2:/exp2 server3:/exp3

ဒီ command

You might also like