先前筆者有一篇文章, 描述如何安裝 CentOS 7.1 + Hadoop 2.7.1 (Single Node Cluster), 在該環境再裝 Hive 1.2.1 是OK 的, 但後來要再裝 HBase 1.1.2 卻一直失敗, 才發現 HBase 1.1.2 只支援到 Hadoop 2.5.1 ( Which version of hbase should I use with Hadoop-2.7.1? ), 亦即在 Hadoop 生態系 (ecosystem) 裡, 不能完全都用最新的, 不然常會發生版本不合的問題, 故還是找一些發行商提供的驗測過發行套件來進行安裝, 比較不會有版本匹配的問題.
本篇及下一篇, 會描述如何建立 Cloudera CDH 5.4.7 的過程. 本篇著重在 VM 及 作業系統相關設定; 下一篇才會進入 CDH 5.4.7 的安裝.
文章的內容有點長, 但可以由 目錄 看出整個大綱.
註1: 筆者係由網路搜尋相關文章 Study, 並進行實作, 故本文若有些疏漏, 尚請見諒.
註2: 目前 (2015.12.05) CDH 的版本為 5.5
目錄
內容
前言
先前由於安裝了 CentOS 7.1 + Hadoop 2.7.1 後, 再裝 Hive 1.2.1 是OK 的, 但後來要再裝 HBase 1.1.2 卻一直失敗, 才發現 HBase 1.1.2 只支援到 Hadoop 2.5.1 ( Which version of hbase should I use with Hadoop-2.7.1? ), 亦即在 Hadoop 生態系 (ecosystem) 裡, 不能完全都用最新的, 不然常會發生版本不合的問題, 故還是找一些發行商提供的驗測過發行套件來進行安裝, 比較不會有版本匹配的問題, 例如本文所要描述的 Cloudera CDH 發行套件 (Cloudera Distribution including apache Hadoop)
筆者手邊有 CentOS 6.5 的 iso 安裝檔, 而當時最新的 CDH 版本為 5.4.7, 所以就直接採用 CentOS 6.5 + CDH 5.4.7 這個搭配組合.
規劃
在安裝前, 先規劃各個主機的功能, 筆者是建了 3 台虛擬機, 列表如下:
主機名稱
|
IP
|
記憶體
|
硬碟空間
|
nn.cdh
|
192.168.190.140
|
6GB
|
80GB
|
dn01.cdh
|
192.168.190.141
|
2GB
|
80GB
|
dn02.cdh
|
192.168.190.142
|
2GB
|
80GB
|
dn03.cdh
|
192.168.190.143
|
2GB
|
80GB
|
製作範本虛擬機
安裝 CentOS 6.5 範本機
安裝 vmware tools (root身份)
這樣可以讓螢幕及剪貼簿…等的操作更為便利
執行 ./vmware-install.pl 之後, 會有一些設定詢問, 基本上, 都是按下 <Enter> 就 OK.
加入使用者 (root身份)
以 root 身份登入, 加入 hadoop 這個使用者帳號, 且以 visudo 將 hadoop 加入可執行 sudo 指令的成員
[root@localhost ~]# useradd hadoop
[root@localhost ~]# passwd hadoop
[root@localhost ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) NOPASSWD: ALL
設定為固定 IP (root身份)
這台是範本機, 所以我們先假設其 IP 為 192.168.190.138
驗證一下
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=009a8c6b-7b30-4346-85de-80c39e7afb65
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=00:0C:29:85:6D:1D
IPADDR=192.168.190.138
PREFIX=24
GATEWAY=192.168.190.2
DNS1=192.168.190.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
LAST_CONNECT=1442635529
設定 /etc/hosts (root身份)
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.190.140 nn.cdh nn.cdh
192.168.190.141 dn01.cdh dn01.cdh
192.168.190.142 dn02.cdh dn02.cdh
192.168.190.143 dn02.cdh dn02.cdh
關閉防火牆 (root身份)
暫時性關閉
# service iptables stop
永久性關閉
# chkconfig iptables off
關閉 SELinux (root身份)
暫時性關閉
# setenforce 0
永久性關閉
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
設定信任 (root身份) (optional)
由於上述關閉防火牆及SELinux 的作法比較不安全, 故其實可以在 /etc/sysconfig/iptables 裡, 加入信任主機的設定
# gedit /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# Accept packets from trusted IP addresses
-A INPUT -s 192.168.190.140 -j ACCEPT
-A INPUT -s 192.168.190.141 -j ACCEPT
-A INPUT -s 192.168.190.142 -j ACCEPT
-A INPUT -s 192.168.190.143 -j ACCEPT
# -------------------------------------
設定 ssh 的 RSA 認證 (root身份)
產生 RSA Key
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
產生 known_hosts 檔
# ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 72:7e:8b:9d:8d:4a:33:77:8f:e7:2f:13:a8:a3:53:c1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
# vi ~/.ssh/known_hosts
0.0.0.0,127.0.0.1,localhost,192.168.190.140,nn.cdh,192.168.190.141,dn01.cdh,192.168.190.142,dn02.cdh,192.168.190.143,dn03.cdh ssh-rsa ...
註: 0.0.0.0 for Secondary namenode
以下建立 .ssh 資料夾的備份, 以便未來進行複製
# mkdir backup
# cd backup
# mkdir ssh_backup
# cd ssh_backup
# cp ~/.ssh/* .
設定 ssh 的 RSA 認證 (hadoop身份)
在右方先建立一個 backup 的資料夾, 以存放 ssh_backup 子資料夾
[hadoop@localhost ~]$ cp ~/backup/ssh_backup/* ~/.ssh
[hadoop@localhost ~]$ chmod 700 ~/.ssh
[hadoop@localhost ~]$ chmod 600 ~/.ssh/authorized_keys
製作集群所需虛擬機
以範本虛擬機 clone 4台主機
以範本機 clone 3 台主機, 分別為 nn.cdh, dn01.cdh, dn02.cdh, dn03.cdh
建立並啟動 Apache Web Server (NameNode)
主因: 需要離線安裝 CDH
[hadoop@nn ~]$ cd
[hadoop@nn ~]$ sudo yum install httpd
[hadoop@nn ~]$ sudo service httpd start
[hadoop@nn ~]$ sudo chkconfig httpd on
針對各台主機作修正 (root身份)
有4台虛擬機, 必須依不同的主機名稱及IP作4次設定
更改主機網卡及IP設定
以下要修正 2 個地方, 一個是 HWADDR, 一個是 IPADDR
HWADDR 要改為 ifconfig 指令查到的那個 MAC.
# ifconfig
eth1 Link encap:Ethernet HWaddr 00:0C:29:92:29:5E
inet addr:192.168.190.138 Bcast:192.168.190.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe92:295e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12111 (11.8 KiB) TX bytes:2307 (2.2 KiB)
# gedit /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=009a8c6b-7b30-4346-85de-80c39e7afb65
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=00:0C:29:92:29:5E
IPADDR=192.168.190.140
PREFIX=24
GATEWAY=192.168.190.2
DNS1=192.168.190.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
LAST_CONNECT=1442635529
更改主機名稱
[root@localhost ~]# vi /etc/sysconfig/network
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=nn.cdh
關機再開, 檢查設置的結果
一定要關機再開, 不可以只重開, 看來是成功了 …
[root@nn ~]# hostname
nn.cdh
[root@nn ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:92:29:5E
inet addr:192.168.190.140 Bcast:192.168.190.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe92:295e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
附錄
關於 Key 的交換
假設有第4台 DataNode (dn04.cdh) 要加入到 CDH Cluster 時, 並且不是由範本機 Clone 出來時 , 要手工作一些 Key 的設定.
[root@dn04 ~]# mkdir public_key
[root@nn ~]# scp ~/.ssh/id_rsa.pub root@dn04.cdh:~/public_key/ id_rsa_nn.pub
[root@dn04 ~]# cp ~/.ssh/id_rsa.pub ~/public_key/ id_rsa_dn04.pub
[root@nn ~]# mkdir public_key
[root@dn04 ~]# scp ~/public_key/* root@nn.cdh:~/public_key
[root@nn ~]# cat ~/public_key/id_rsa_dn04.pub >> ~/.ssh/authorized_keys
[root@dn04 ~]# cat ~/public_key/id_rsa_dn04.pub >> ~/.ssh/authorized_keys
[root@dn04 ~] ssh dn04.cdh
Agent admitted failure to sign using the key.
# ssh-add
Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap]
Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)
關機的集中管理
[root@nn ~] ssh root@dn01.cdh 'shutdown -h now'
[root@nn ~] ssh root@dn02.cdh 'shutdown -h now'
[root@nn ~] ssh root@dn03.cdh 'shutdown -h now'
沒有留言:
張貼留言