使用hadoop架設雲端系統 -...

36
使用Hadoop 架設雲端系統

Upload: others

Post on 30-Aug-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

使用Hadoop架設雲端系統

Page 2: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

配置Hadoop實驗平台

• 可使用虛擬技術Virtual Box、Xen或Vmware虛擬軟體,一次建立3-5個Linux

• 建議執行Hadoop平台最低硬體需求

– 2GHz以上的2或4核心處理器

– 4GB DRAM

– IDE或SATA硬碟250GB以上

– 100Mbps以上的網路卡與交換器

Page 3: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

配置Hadoop實驗平台

• 虛擬主機配置

• 作業系統Linux (Ubuntu 12.04)

• 記憶體512MB

• 硬碟容量8GB

• Hadoop雲端系統 hadoop-1.1.2

Page 4: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

NameNode JobTracker

DataNode TaskTracker

DataNode TaskTracker

DataNode TaskTracker

hdp0 (192.168.0.100)

hdp1 (192.168.0.101)

hdp2 (192.168.0.102)

hdp3 (192.168.0.103)

Hadoop實驗平台配置方式

Hadoop Master

More Hadoop Slaves hdpX

● ● ● ● ● ●

Page 5: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

安裝Hadoop雲端運算系統套件

• 每台伺服器安裝

– 作業系統:Ubuntu Linux Server Edition

– 雲端系統:Hadoop-1.1.2 + HDFS + Hbase

– 程式開發:Java 7

• 實驗系統架構

– Master-hdp0 – Name node, Job tracker

– Slave-hdp1 – Data node, Task tracker

– Slave-hdp2 – Data node, Task tracker

– Slave-hdp3 – Data node, Task tracker

Page 6: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

安裝Hadoop雲端系統

• 為了管理方便,請建立一個hadoop帳號

– $ sudo adduser hadoop

• 下載hadoop-xxxx.tar.gz後在hadoop的home directory解壓縮

– $ tar zxvf hadoop-1.1.2.tar.gz

• hadoop-1.1.2: $ wget + 下載網址 ftp://apache.cdpa.nsysu.edu.tw/Unix/Web/apache/hadoop/common/hadoop-1.1.2/hadoop-1.1.2.tar.gz

Page 7: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

安裝Hadoop雲端系統

• 其他hadoop必備軟體

– Installing Oracle Java7 JDK

$ sudo apt-get update

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt-get install oracle-java7-installer

– Installing ssh

$ sudo apt-get install ssh

$ sudo apt-get install openssh-server

$ sudo apt-get install rsync

Page 8: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

編輯主機設定檔

• 主機設定檔:/etc/hosts

– $ sudo nano /etc/hosts

127.0.0.1 localhost

192.168.0.100 hdp0

192.168.0.101 hdp1

192.168.0.102 hdp2

192.168.0.103 hdp3

( IP + hostname, hostname在每台主機的/etc/hostname設定: $ sudo nano /etc/hostname)

Page 9: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop執行環境變數設定

• 更改.bashrc檔(home下的隱藏檔)加入

– $ sudo nano .bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

export HADOOP_HOME=/home/hadoop/hadoop-1.1.2

export PATH=$PATH:$HADOOP_HOME/bin:$JAVA_HOME/bin

Page 10: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop執行環境變數設定

• 在hadoop-1.1.2/conf下編輯環境設定檔hadoop-env.sh

– export JAVA_HOME=/usr/lib/jvm/java-7-oracle

– export HADOOP_HOME=/home/hadoop/hadoop-1.1.2

• 其他環境變數可以設定

– HADOOP_HEAPSIZE:設定HEAP檔案大小,Hadoop系統能同時處理的最大資料量預設值為1000MB

– HADOOP_LOG_DIR:Log目錄

– HADOOP_SLAVES:指定slave主機設定檔

– HADOOP_MASTER:指定master主機設定檔

Page 11: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop執行環境變數設定

• 進入hadoop-1.1.2/conf 更改

$ sudo nano masters hdp0

$ sudo nano slaves hdp0 hdp1 hdp2 hdp3

Page 12: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop雲端系統設定檔

– core-site.xml

• Hadoop採用網頁的方式監控各節點的運作狀況,因此必須要有一個Hadoop雲端系統的管理網站

指定Hadoop NameNode主機

指定HDFS分散式系統在hdp0主機,通訊Port為9000

Page 13: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

HDFS分散式檔案系統

– hdfs-site.xml

• 必須在HDFS上指定NameNode以及DataNode的資料儲存位置

• hdp0上建立放置NameNode與DataNode資料的目錄

$ mkdir -p /home/hadoop/dfs/name

$ mkdir -p /home/hadoop/dfs/data

• 設定檔hdfs-site.xml

Page 14: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

MapReduce程式設定檔

– mapred-site.xml

• 用來監控Map與Reduce程式的JobTracker工作分配狀況以及TaskTracker工作執行狀況

Page 15: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

內部網路設定

Page 16: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

建立另外三台slave

• 複製vdi檔

(在windows下, 複製另外3份hdp1,hdp2,hdp3) $ cd C:\Program Files\Oracle\VirtualBox

$ VBoxManage clonevdi <vdi檔案路徑> <新的vdi檔案路徑>

• 須進入hdp1,hdp2,hdp3修改

– Hostname ($ sudo nano /etc/hostname)

– IP網路設定

Page 17: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

建立SSH金鑰安全連線

• 檢查四台主機相互連線正常:ping

• 建立ssh連線免密碼登入

$ ssh-keygen -t rsa

$ cd /home/hadoop/.ssh

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

• 測試連線

$ ssh hdp0

$ exit

Page 18: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

複製設定檔到其他Hadoop主機

• 複製授權金鑰檔authorized_keys至其他主機 $ scp authorized_keys hdp1:/home/hadoop/.ssh/

$ scp authorized_keys hdp2:/home/hadoop/.ssh/

$ scp authorized_keys hdp3:/home/hadoop/.ssh/

• 檢查連線是否正常 $ ssh hdp1

$ ssh hdp2

$ ssh hdp3

Page 19: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

格式化Hadoop

$ cd /home/hadoop/hadoop-1.1.2/bin

$ ./hadoop namenode –format

• 若有錯誤,可能是core-site.xml、hdfs-site.xml或mapred-site.xml設定錯誤,請依據錯誤訊息修正相關檔案

Page 20: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

啟動Hadoop雲端系統

• 執行start-all.sh即可

$ cd /home/hadoop/hadoop-1.1.2/bin

$ ./start-all.sh

• 執行start-all.sh啟動指令後,就會啟動NameNode

與JobTracker主機hdp0並開始與其他slave主機進行連線,同時啟動DataNode與TaskTracker功能

• 並在$HADOOP_HOME/logs目錄產生記錄檔

Page 21: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

檢視Hadoop運作狀況

• 查看NameNode運作狀況 http://hdp0:50070

• 查看JobTracker運作狀況 http://hdp0:50030

• 可以用log可查看每一台DataNode與JobTracker的運作狀況

• 關閉Hadoop雲端系統($HADOOP_HOME/bin目錄的stop-all.sh即可終止NameNode主機與其他DataNode主機的連接) $ cd /home/hadoop/hadoop-1.1.2/bin $ ./stop-all.sh

Page 22: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

測試Hadoop雲端系統

• 測試pi的運算 (在hadoop-1.1.2目錄下)

$ bin/hadoop jar hadoop-examples-1.1.2.jar pi 100 10000

Page 23: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

MapReduce程式開發工具

• 整合開發工具:

(Eclipse)+(IBM專為Eclipse設計的MapReduce plugins)

• 開發設計MapReduce程式

• 進行Hadoop伺服器設定

• MapReduce Job Control

• 瀏覽HDFS分散式檔案的讀取狀況

• 安裝Eclipse $ sudo apt-get install eclipse

Page 24: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

安裝 IBM MapReduce Tools Eclipse

Plugins

• Eclipse Plugins已直接納入Hadoop安裝套件中

$ cd $HADOOP_HOME/contrib/elcipse-plugin

$ ls –l hadoop-xxxx-eclipse-plugin.jar

• 確定沒有正在執行的Eclipse程式

• 將hadoop-xxxx-eclipse-plugin.jar外掛檔案複製到Eclipse安

裝目錄的(usr/lib/eclipse/)plugins/目錄下

• 啟動Eclipse (選單列)

Windows → Open Perspective → Other → Map/Reduce

Page 25: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

使用MapReduce Plugin監控Hadoop

工作流程 • Eclipse選單

Windows → Show View → Other → Map Reduce Tools → Map/Reduce Locations

啟動Map/Reduce伺服器進行監控作業

• 可於Eclipse開發環境中點選右上角藍色小象,或點選Map/Reduce Locations狀態列右邊的藍色小象圖示,進行Hadoop伺服器的相關設定

• 可在此設定執行MapReduce程式的

– Hadoop Master主機名稱

– Port通訊埠

– core-site.xml、hdfs-site.xml、mapred-site.xml等設定檔

Page 26: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

建立Project

在 New Project 的選單上就可以選 Map/Reduce Project

Page 27: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

開啟 Map/Reduce Perspective

1. 接著透過 Window -> Open Perspective 來開啟 Map/Reduce

Perspective。

2. 在 Map/Reduce Perspective 加入一個 Hadoop location。

3. 根 據 core-site.xml 與 mapred-site.xml 的 設 定 資 料 ,

輸入 Map/Reduce Master (NameNode) 與 DFS Master 的 host 跟

port。

Page 28: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

由DFS Locations直接存取HDFS

Page 29: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

執行 Map/Reduce 程式

hadoop 0.20 程式開發: http://trac.nchc.org.tw/cloud/wiki/waue/2009/0617

Page 30: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop架構

• MapReduce

–分散式程式框架,運算工作可以分成兩個部分,Map和Reduce

– map: [1,2,3,4] - (*2) -> [2,4,6,8]

– reduce: [1,2,3,4] - (sum) -> 10

• HDFS

– Hadoop專案中的檔案系統。實作Google File System

Page 31: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop架構-MapReduce

1. JobTracker跟NameNode取得需要運算的blocks

2. JobTracker選數個TaskTracker來做Map運算

3. JobTracker將中間檔案整合排序後,複製到需要的TaskTracker

4. JobTracker派遣TaskTracker作reduce

5. reduce完成後通知JobTracker與Namenode以產生output

Page 32: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop架構-HDFS

• Hadoop Distributed File System

• 將分散的儲存資源整合成一個具容錯能力、高效率且超大容量的環境

• Hadoop運算產生的資料都是存放在HDFS

• master/slave架構,由Namenode + Datanodes組成

– Namenode負責各檔案的屬性權限管理及儲存,記錄Datanodes檔案存放位置

– Datanodes由切割成數個 Block區塊儲存在不同的Datanodes,每一區塊還會有副本存在不同節點

Page 33: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop的各種身份

Page 34: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

HDFS Layer - 管理資料

• Namenode

– Master

– 管理HDFS的名稱空間

– 控制對檔案的讀寫

– 配置副本策略 (如果有Datanode節點損壞,進行資料搬遷與複製)

– 對名稱空間做檢查及記錄

– 一個

• Datanode

– Workers

– 執行讀 / 寫動作

– 執行Namonode的副本策略(負責執行)

– 多個

Page 35: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

MapReduce Layer - 分派程序

• Jobtracker

– Master

– 使用者發起工作

– 指派工作給Tasktrackers

– 排成決策、工作分配、錯誤處理

– 一個

• Tasktrackers

– Workers

– 運作Map與Reduce的工作

– 管理儲存;回覆運算結果

– 多個

Page 36: 使用Hadoop架設雲端系統 - wccclab.cs.nchu.edu.twwccclab.cs.nchu.edu.tw/www/images/Introduction_to_Cloud_Computing... · 配置Hadoop實驗平台 •可使用虛擬技術Virtual

Hadoop各資料夾的代表意義

• bin/ – 各項執行檔,包括start-all.sh,stop-all.sh,hadoop

• conf/ – 設定檔。hadoop-env.sh,hadoop-site.conf

• docs/ – Hadoop api與說明文件

• contrib/ – eclipse外掛

• lib/ – Hadoop函式庫

• src/ – Hadoop原始碼

• build/ – Hadoop編譯後資料夾

• logs/ – 日誌