Professional Documents
Culture Documents
Hadoop Notes
Hadoop Notes
Hadoop ကို Linux operating system ေပၚမွာ install လု ပ္မွာပါ။ Commodity linux clusters ေပၚမွာ Big Data Platform ေ
ဆာက္မွာျဖစ္တဲ့အတြက္ computer ေတြလို ပါတယ္။ ကို ယ္ရဲ႕ cluster ေပၚမူ တည္ျပီး computer ေတြလို ပါတယ္။ cluster
မွာ computer ၅လံ ု း သံ ု းမယ္ ဆို ရင္ computer ၅ လံ ု းလို မွာပါ။ computer အမ်ားၾကီး မရွိလည္း အဆင္ေျပေအာင္ Virtual
Machine ကို သံ ု းပါမယ္။
Virtual Machine create လု ပ္ျပီးမွ OS install လု ပ္မွာျဖစ္တဲ့အတြက္ I will install the operating system later ကို ေရြးပါမ
ယ္။ Next ကို ႏိွပ္ပါမယ္။
super user ေျပာင္းရန္ sudo su လို ႔ရို က္ပါ။ user hadoop ရဲ႕ password ကို ထည့္ပါ။
mkdir –p /usr/lib/jvm
mv jdk-8u172-linux-x64.tar.gz /usr/lib/jvm
mv jre-8u172-linux-x64.tar.gz /usr/lib/jvm
usr/lib/jvm ဆီကို သြားပါမယ္။
cd /usr/lib/jvm
archive file ေတြကို ျဖည္ပါမယ္။
rm jdk-8u172-linux-x64.tar.gz
rm jre-8u172-linux-x64.tar.gz
java –version
javac –version
အရ င္ဆံ ု း 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
ssh-keygen –t rsa –P “”
-P ရဲ႕ ေနာက္မွာ password ေပးရမွာျဖစ္တယ္။ password less သံ ု းမွာျဖစ္တယ္။ password ေပးလို က္ရင္ cluster မွာ nodes
ssh localhost
exit
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 ေခၚလို ႔ရပါျပီ။
Installing Hadoop
Hadoop version 3.2.0 ကို သံ ု းပါမယ္။
install လု ပ္ထားတဲ့ ေနရာကို ေျပာရမွာျဖစ္တယ္။ nano hadoop-env.sh နဲ႔ file ကို ဖြင့္ပါ။ export JAVA_HOME=$
HDFS daemons ကို run မယ့္ user ကို သတ္မွတ္ ေပးတာျဖစ္ပါတယ္။ HDFS ကို operate လု ပ္မယ့္ user သီးသန္႔ရွိရင္ root ေန
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
Ctrl + X ႏွိပ္ပါ။ ျပီးေတာ့ Y နိွပ္ပါ။
Yarn daemons ကို run မယ့္ user ကို သတ္မွတ္ ေပးတာျဖစ္ပါတယ္။ Yarn ကို operate လု ပ္မယ့္ user သီးသန္႔ရွိရင္ root ေနရာ
မွာ အဲဒီ user ကို ထည့္ရပါမယ္။ nano yarn-env.sh နဲ႔ file ကို ဖြင့္ပါ။
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
JAVA_HOME, HADOOP_HOME နဲ႔ PATH ကို export လု ပ္ပါ။ .bashrc file မွာ ေျပာင္းသြားတာေတြကို system
ကသိေအာင္ source command ကို သံ ု းပါ။ hadoop version ကို ၾကိဳက္တဲ့ေနရာကေန ေခၚလို ႔ရပါျပီ။
nano ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_172
export HADOOP_HOME=/home/hadoop/hadoop-3.2.0
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
Hadoop installation success ျဖစ္ မျဖစ္ သိေအာင္ hadoop version ကို ေခၚၾကည့္ပါ။
hadoop version
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 ေတြကို ျပင္စရာမလို ပါ။
hadoop daemon ေတြက သီးျခား java process အေနနဲ႔ အလု ပ္လုပ္ပါတယ္။ ဒီ mode ကို MapReduce application
ဆံ ု း 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.8.0_172
export HADOOP_HOME=/home/hadoop/hadoop-3.2.0
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
hadoop version
က္မွာရွိပါတယ္။ Wordcount program က input အေနနဲ႔ေပးလို က္တဲ့ files ေတြထဲက word ေတြကို ဘယ္ႏွစ္ၾကိမ္ ပါလဲ
လို ႔ count လု ပ္ေပးမွာ ျဖစ္ပါတယ္။ output file ထု တ္ေပးမွာျဖစ္တယ္။ ဒါေၾကာင့္ wordcount လု ပ္ခ်င္တဲ့ file ေတြအတြက္
mkdir input
hadoop installation မွာ ပါတဲ့ text file ေတြကို input file အေနနဲ႔ သံ ု းခ်င္လို႔ text files ေတြကို input directory ေ
cp hadoop-3.2.0/*.txt input
ls –l input
hadoop ရဲ႕ jar command ကို သံ ု းျပီး run ပါမယ္။
ls output
head -25 output/part-r-00000
3.2.0/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 လု ပ္ေနလဲဆို တာ ေျပာတာျဖစ္တယ္။
စံ အလု ပ္လုပ္တာ ျဖစ္တဲ့အတြက္ 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>
တြက္ 1 ပဲျဖစ္မယ္။ dfs.namenode.name.dir က Namenode က filesystem metadata (the edit log and the filesystem
ကို ဘယ္မွာသိမ္းမလဲေျပာတာျဖစ္တယ္။
yarn-site.xml
Hadoop မွာ yarn ကို configure လု ပ္ဖို႔အတြက္ သံ ု းတာျဖစ္တယ္။
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
yarn.nodemanager.aux-services က node manager က run ေပးတဲ့ auxiliary services ေတြကို သတ္မွတ္တ ာျဖစ္တယ္။
mapred-site.xml
ဘယ္ MapReduce framework ကို သံ ု းလဲဆို တာ ေဖာ္ျပဖို ႔အတြက္ ျဖစ္တယ္။ mapred-site.xml file ကို ဖြင့္ျပီး ျပင္ပါ
မယ္။
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Namenode, datanode, secondary namenode daemon ေတြ စတင္ရန္အတြက္ start-dfs.sh သံ ု းပါမယ္။ ျပီးရင္ jps ေ
start-dfs.sh
apt-get install openjdk-11-jdk
jps
start-yarn.sh command ေခၚၾကည့္ပါ။ ျပီးရင္ jps ေခၚၾကည့္ပါ။ Resource Manager နဲ႔ Node Manager daemons
start-yarn.sh
jps
hadoop fs -ls /
hadoop fs -mkdir /input
hadoop fs -ls /
hadoop fs -put hadoop-3.2.0/*.txt /input
hadoop fs –ls /input