︿
Top

2015年12月3日 星期四

CDH 5.4.7 安裝 (Part1)


先前筆者有一篇文章, 描述如何安裝 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)


Cloudera 官網有提供了一個 QuickStart VMs for CDH 5.4.2 的虛擬機, 其配置為 CentOS 6.4 + CDH 5.4.2 的 Pseudo Cluster.


筆者手邊有 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 範本機

安裝一個 base 的機器 (cdh-base), 細節可以參考 安裝 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/* .


WinSCP連到 192.168.190.138 將 ~/backup/ssh_backup 資料夾複製到本機端




設定 ssh 的 RSA 認證 (hadoop身份)

WinSCP連到 192.168.190.138 將前步驟的 ssh_backup 下的內容, 全部上傳到 ~/.ssh 資料夾下
在右方先建立一個 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'




參考文件

















沒有留言:

張貼留言