程式扎記: [ Big Data 研究 ] 05 初步建置 Hadoop 分散式運算平台 - Part1

標籤

2015年9月1日 星期二

[ Big Data 研究 ] 05 初步建置 Hadoop 分散式運算平台 - Part1

設定 LXC 網路架構 
在開始建置之前, 先簡單說明一下 "Hadoop 分散式運算平台" 顧名思義就是由多台主機所組成的運算系統. 我們將建置四台 Hadoop 運算主機, 分別扮演 Hadoop 系統中的 "NameNode", "ResourceManager", "DataNode" 以及 NodeManager 的角色. 而為了讓 Hadoop 運算主機之間可以互相溝通, 我們還必須規劃網路架構, 例如: IP, Network ID... 等. 在實體主機的終端機視窗, 利用下面指令開啟 LXC 核心模組網路組態檔: 
# vi /etc/default/lxc-net
  1. ...  
  2. LXC_BRIDGE="lxcbr0"  
  3. LXC_ADDR="172.16.1.1"  
  4. LXC_NETMASK="255.255.255.0"  
  5. LXC_NETWORK="172.16.1.0/24"  
  6. LXC_DHCP_RANGE="172.16.1.2,172.16.1.199"  
  7. LXC_DHCP_MAX="198"  
  8. ...  

接著使用下面命令重啟 LXC 核心模組的網路服務: 
# service lxc-net restart
lxc-net stop/waiting
lxc-net start/running

# ip addr show lxcbr0
51: lxcbr0: mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 7a:1a:c9:2b:9a:5f brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global lxcbr0
...

開始建立 Hadoop 模板運算主機 
為了簡化設定步驟, 這裡將建立一台模板主機, 利用複製模板運算主機的方式, 來架設 Hadoop 分散式運算平台. 輸入以下指令建立一台 myHDP2 的虛擬主機: 
# lxc-create -t ubuntu -n myHDP2
# lxc-start -n myHDP2 -d // 啟動虛擬主機
# lxc-console -n myHDP2 // 登入虛擬主機

系統更新 
第一次登入模板主機時, 先使用下面指令更新系統套件版本與升級: 
ubuntu@myHDP2:~$ sudo apt-get update
ubuntu@myHDP2:~$ sudo apt-get upgrade
ubuntu@myHDP2:~$ sudo apt-get install wget tree vim // 安裝之後會使用到的套件

自訂 Linux 指令 
簡化打字, 將常用指令與使用參數使用 alias 設定: 
ubuntu@myHDP2:~$ vi ~/.bashrc
  1. ...  
  2. alias vi='vim'  
  3. alias ping='ping -c 4'  
  4. alias bye='sudo shutdown -h now'  
  5. ...  
ubuntu@myHDP2:~$ . ~/.bashrc // 讓設定生效

設定 IP 位址 
為了讓 Hadoop 運算主機彼此間溝通連結, 我們必須按照規畫的網路架構設定 myHPD2 模板運算主機的 IP 位址: 
ubuntu@myHDP2:~$ sudo vi /etc/network/interfaces
  1. ...  
  2. auto eth0  
  3. iface eth0 inet static  
  4.     address 172.16.1.222  
  5.     netmask 255.255.255.0  
  6.     gateway 172.16.1.1  
  7.     dns-nameservers 168.95.1.1  
ubuntu@myHDP2:~$ sudo ifdown eth0 && sudo ifup eth0 // 重啟網路設定
ubuntu@myHDP2:~$ ip addr show eth0
52: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:89:33:93 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.222/24 brd 172.16.1.255 scope global eth0
...

ubuntu@myHDP2:~$ ping www.google.com.tw // 確定可以連到 Internet
PING www.google.com.tw (173.194.72.94) 56(84) bytes of data.
64 bytes from tf-in-f94.1e100.net (173.194.72.94): icmp_seq=1 ttl=127 time=37.0 ms
...

設定電腦名稱解析 
/etc/hosts 是一個電腦主機名稱解析設定檔, 主要負責將電腦名稱解析成 IP 位址, 讓多台 Hadoop 運算主機可以互相溝通連結. 接著將後續會建立的主機與其名稱與 IP 位址對應依序加入到此設定檔中: 
ubuntu@myHDP2:~$ sudo vi /etc/hosts
  1. ...  
  2. 127.0.0.1       localhost  
  3. 172.16.1.222    myHDP2  
  4. 172.16.1.200    nn  
  5. 172.16.1.201    rm  
  6. 172.16.1.210    dn01  
  7. 172.16.1.211    dn02  

建立 SSH 遠端管理連線 
為了讓主機彼此間可以使用 SSH 透過公鑰交換而不需要透過密碼登入, 需要進行以下設定: 
ubuntu@myHDP2:~$ sudo apt-get install ssh // 安裝 ssh 套件
// -P: 設定保護 Key 的密碼
// -f: Key 的名稱. 公鑰會是 .pub 結尾

ubuntu@myHDP2:~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
ubuntu@myHDP2:~$ ls ~/.ssh/
id_dsa id_dsa.pub
ubuntu@myHDP2:~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ubuntu@myHDP2:~$ ssh myHDP2 // 此時連接到自己不需要密碼!

自動取得 OpenSSH Server 公鑰 
在實際建置 Hadoop 分散式運算平台, 很有可能會面對數十台, 甚至數百台以上的運算主機, 當每一台主機在建立第一次 SSH 連線時, 都必須在終端機輸入 "yes", 對於操作多台運算主機的管理人員很花時間. 其實我們可以透過修改 SSH 設定檔來簡化此步驟: 
ubuntu@myHDP2:~$ sudo vi /etc/ssh/ssh_config
  1. ...  
  2.    StrictHostKeyChecking no  
  3. ...  

如此可以省略 "Are you sure you want to continue connecting (yes/no)? yes"! 

Supplement 
[ Big Data 研究 ] 05 初步建置 Hadoop 分散式運算平台 - Part2 
SSH 免密碼登入

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!