Big Data
Hadoop
tags: Common
-
本篇目標:使用多部虛擬機或實體主機,架設 Hadoop fully-distributed mode 環境
- 兩個主機:master、slave
- 分別設定 IP
- 利用底下的教學完成一部主機(master)
- 再複製檔案完成另一部主機(slave) → 2個節點
- 重複步驟4就能延伸、擴展系統,完成多節點叢集
1. 環境設定
架構
- HDFS:NameNode*1(master), DataNode*2(master, slave)
- YARN:Resource Manager, Node Manager
- MapReduce:JobTracker*1(master), TaskTracker*2(master, slave)
步驟
-
設定主機名稱:
sudo gedit /etc/hostname
-
將 ubuntu 修改為
master
-
Restart
-
查詢IP
-
設定IP:
sudo gedit /etc/hosts
- 可以順便填入slave的IP,待會就不用再改一次
- 通常 slave 的IP,會和master差1,待會可以再確認一次
192.168.61.130 master 192.168.61.131 slave
2. 設定 NameNode
-
設定 master 節點:
gedit /usr/local/hadoop/etc/hadoop/master
- 輸入:
master
- 輸入:
-
設定 core-site.xml:
gedit /usr/local/hadoop/etc/hadoop/core-site.xml
- 輸入:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration> -
設定 hdfs-site.xml:
gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
- 輸入:
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value> file:/usr/local/hadoop/hadoopdata/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value> file:/usr/local/hadoop/hadoopdata/hdfs/datanode</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration> -
確認設定:
echo $HADOOP_HOME
3. 設定 MapReduce(JobTracker) 和 YARN
- 設定 JobTracker 的名稱與埠號:
gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
- 修改:
<configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> </property> </configuration> - 設定 YARN:
gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
- 輸入:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8050</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>8</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> </property> </configuration>
4. 設定 DataNodes
- 設定workers節點:
gedit /usr/local/hadoop/etc/hadoop/workers
- 刪掉:
localhost
- 輸入:
master slave - 刪掉:
5. 將 master 複製一份檔案 → slave
-
找到 Ubuntu 的存放位置
-
複製一份作為slave,可以在資料夾名稱上註記
-
開啟 VMware,選擇 Open a Virtual Machine → 開啟複製好的資料夾
- 備註:若不想複製,也可以從Ubuntu ISO映像檔安裝,重新跑一次,讓自己熟悉流程
6. 打開 master 和 slave
-
打開 slave 時,選擇 I copy it
-
重複步驟1,設定slave的hostname, hosts
- hostname:
slave
- Restart
- hosts:
192.168.61.132 master 192.168.61.131 slave - hostname:
-
備註:請再次檢查master, slave的IP是否有跑掉
- 每次master, slave的IP改變都要回來改此設定檔
sudo gedit /etc/hosts
- master, slave的設定檔都要修改
-
測試連線,互相ping對方:
- master:
ping slave
- slave:
ping master
- master:
7. SSH server 無密碼連線設定
-
於 master 上進行操作
- 如果在 Spark - 3:Hadoop 環境建置 - Ubuntu, VMware, Java, SSH, Hadoop
- 已操作過 SSH server的設定,請直接跳到第7點:複製RSA金鑰
-
cd ~/.ssh
-
提升使用者權限:
su - 使用者名稱
- 例如:
su - test
- 例如:
-
產生無需密碼連線的金鑰設定:
ssh-keygen -t rsa
-
按數次 “Enter” 鍵,直到顯示 RSA 金鑰
-
儲存金鑰:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
複製金鑰至slave:
scp -r ~/.ssh hostname:~/
- 例如:
scp -r ~/.ssh slave:~/
- 例如:
-
測試 ssh 無密碼連線:
ssh hostname
- 例如:
ssh slave
- 例如:
-
關閉連線:
exit
8. 設定HDFS目錄
架構
-
注意 HDFS layer 的部分
步驟
- 於 master 上進行操作
- 如果在 Spark - 4:Hadoop - Single-Node Cluster, HDFS, YARN
- 已操作過設定HDFS目錄,請直接跳到第6點
- 設定HDFS目錄:
sudo rm -rf /usr/local/hadoop/hadoopdata/hdfs
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/namenode
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode
sudo chown -R 使用者名稱:使用者名稱 /usr/local/hadoop
- 格式化 HDFS NameNode:
hadoop namenode -format
- 格式化 HDFS DataNode:
hadoop datanode -format
- 檢查 processes:
jps
- 接著於 slave 上進行操作
- 設定HDFS目錄
sudo rm -rf /usr/local/hadoop/hadoopdata/hdfs
mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode
sudo chown -R 使用者名稱:使用者名稱 /usr/local/hadoop
-
格式化 HDFS NameNode:
hadoop namenode -format
-
檢查 processes:
jps
9. 啟動 Hadoop fully-distributed mode
-
啟動 HDFS:
start-dfs.sh
- SecondaryNameNode: 檢查NameNode資訊是否正確,並備份
-
啟動 YARN:
start-yarn.sh
-
檢查 processes:
jps
補充:檢查 Hadoop
Nodes of the cluster
-
開啟 Firefox,並輸入
master:8088
- 節點資訊:選擇側邊選單的 Nodes 查看
- YARN 的視角
- 若只看到master,重啟YARN
Datanode Information
-
輸入
master:9870
- Datanodes資訊:選擇上方選單的Datanodes
- HDFS 的視角
NodeManager
-
輸入
master:8042
,查看 Node Manager 詳細資訊 -
輸入
slave:8042
HDFS DataNode
-
輸入
master:9864
,查看 DataNode 詳細資訊 -
輸入
slave:9864
測試
停止 Hadoop
stop-all.sh
Extensive 延伸閱讀
- Configure Hadoop 3.1.0 in a Multi Node Cluster
http://kontext.tech/docs/DataAndBusinessIntelligence/p/configure-hadoop-310-in-a-multi-node-cluster - Hadoop - Multi node cluster
https://www.tutorialscampus.com/tutorials/hadoop/multi-node-cluster.htm - Ubuntu 系統目錄 (資料夾) 介紹:
https://www.arthurtoday.com/2012/12/ubuntu-file-system-tree-directories.html
沒有留言:
張貼留言