站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
上課筆記程式Big DataHadoopSparkVM

【Big Data】Spark - 6:Hadoop - Multi-Node Cluster, HDFS, YARN

tags: Big Data Hadoop

Common

  • 互相參閱:Spark - 4:Hadoop - Single-Node Cluster, HDFS, YARN

  • 本篇目標:使用多部虛擬機或實體主機,架設 Hadoop fully-distributed mode 環境

    1. 兩個主機:masterslave
    2. 分別設定 IP
    3. 利用底下的教學完成一部主機(master)
    4. 再複製檔案完成另一部主機(slave) → 2個節點
    5. 重複步驟4就能延伸、擴展系統,完成多節點叢集


1. 環境設定

架構

  • HDFS:NameNode*1(master), DataNode*2(master, slave)
  • YARN:Resource Manager, Node Manager
  • MapReduce:JobTracker*1(master), TaskTracker*2(master, slave)

步驟

  1. 設定主機名稱:sudo gedit /etc/hostname

  2. 將 ubuntu 修改為 master

  3. Restart

  4. 查詢IP

  5. 設定IP:sudo gedit /etc/hosts

    • 可以順便填入slave的IP,待會就不用再改一次
    • 通常 slave 的IP,會和master差1,待會可以再確認一次
    192.168.61.130 master 192.168.61.131 slave

2. 設定 NameNode

  1. 設定 master 節點:gedit /usr/local/hadoop/etc/hadoop/master

    • 輸入:master
  2. 設定 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>

  3. 設定 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>

  4. 確認設定:echo $HADOOP_HOME

3. 設定 MapReduce(JobTracker) 和 YARN

  1. 設定 JobTracker 的名稱與埠號:gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
    • 修改:
    <configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> </property> </configuration>
  2. 設定 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

  1. 找到 Ubuntu 的存放位置

  2. 複製一份作為slave,可以在資料夾名稱上註記

  3. 開啟 VMware,選擇 Open a Virtual Machine → 開啟複製好的資料夾

  • 備註:若不想複製,也可以從Ubuntu ISO映像檔安裝,重新跑一次,讓自己熟悉流程

6. 打開 master 和 slave

  1. 打開 slave 時,選擇 I copy it

  2. 重複步驟1,設定slave的hostname, hosts

    • hostname:slave
    • Restart
    • hosts:
    192.168.61.132 master 192.168.61.131 slave
  3. 備註:請再次檢查master, slave的IP是否有跑掉

    • 每次master, slave的IP改變都要回來改此設定檔
    • sudo gedit /etc/hosts
    • master, slave的設定檔都要修改
  4. 測試連線,互相ping對方:

    • masterping slave
    • slaveping master

7. SSH server 無密碼連線設定

  1. master 上進行操作

  2. cd ~/.ssh

  3. 提升使用者權限:su - 使用者名稱

    • 例如:su - test
  4. 產生無需密碼連線的金鑰設定:ssh-keygen -t rsa

  5. 按數次 “Enter” 鍵,直到顯示 RSA 金鑰

  6. 儲存金鑰:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  7. 複製金鑰至slavescp -r ~/.ssh hostname:~/

    • 例如:scp -r ~/.ssh slave:~/

  8. 測試 ssh 無密碼連線:ssh hostname

    • 例如:ssh slave
  9. 關閉連線:exit

8. 設定HDFS目錄

架構

  • 注意 HDFS layer 的部分

步驟

  1. master 上進行操作
  2. 設定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
  1. 格式化 HDFS NameNode:hadoop namenode -format
  2. 格式化 HDFS DataNode:hadoop datanode -format
  3. 檢查 processesjps
  4. 接著於 slave 上進行操作
  5. 設定HDFS目錄
sudo rm -rf /usr/local/hadoop/hadoopdata/hdfs mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode sudo chown -R 使用者名稱:使用者名稱 /usr/local/hadoop
  1. 格式化 HDFS NameNode:hadoop namenode -format

  2. 檢查 processesjps

9. 啟動 Hadoop fully-distributed mode

  1. 啟動 HDFS:start-dfs.sh

    • SecondaryNameNode: 檢查NameNode資訊是否正確,並備份

  2. 啟動 YARN:start-yarn.sh

  3. 檢查 processesjps

補充:檢查 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 延伸閱讀

  1. Configure Hadoop 3.1.0 in a Multi Node Cluster
    http://kontext.tech/docs/DataAndBusinessIntelligence/p/configure-hadoop-310-in-a-multi-node-cluster
  2. Hadoop - Multi node cluster
    https://www.tutorialscampus.com/tutorials/hadoop/multi-node-cluster.htm
  3. Ubuntu 系統目錄 (資料夾) 介紹:
    https://www.arthurtoday.com/2012/12/ubuntu-file-system-tree-directories.html

Reference 參考資料

  1. 上課講義:https://tims.etraining.gov.tw/TIMSonline/index3.aspx?OCID=113442
  2. 封面圖片:
    https://www.researchgate.net/figure/Hadoop-Multi-node-Cluster-Management-Services-10_fig1_260870630

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽