Hadoop系列之(一)CentOS7安裝配置及SSH無密碼驗證配置
1.部署環境及相關版本軟體
- 作業系統:MAC OS X EI Caption 10.11.6
- CPU:2.7 GHz Intel Core i5
- 記憶體:8 GB 1867 MHz DDR3
- 虛擬機器:Parallels Desktop 10
- 其他軟體: hadoop-2.7.1.tar.gz hbase-1.1.7-bin.tar.gz apache-hive-1.2.1-bin.tar.gz zookeeper-3.4.6.tar.gz spark-1.5.1-bin-hadoop2.6.tgz apache-storm-0.9.5.tar.gz apache-flume-1.6.0-bin.tar.gz sqoop-1.4.6.tar.gz thrift-0.8.0.tar.gz mongodb-linux-x86_64-rhel70-3.2.10.tgz redis-3.2.5.tar.gz
2.CentOS7 安裝
PD這個軟體在mac上算是特別好用的虛擬機器了,用的當然是破解版的,目前有PD10的破解版,建議別升級,升級後不能用,也別將mac 升級成 mac sierra,升級後很多破解版的軟體無法使用,吐槽一下蘋果新版的MBP,那叫一個諷刺,自己的手機無法直接連線自己的電腦。
這裡要往上選擇一下第一個安裝,這樣不用檢查,省去很多時間。其中要設定一下時區,以及root的密碼,以及一個使用者及密碼,這裡所有的設定的使用者為:hadoop,因為Hadoop環境建議不要直接用root使用者直接去安裝。這裡有一點為分割槽的設定為題,就用預設的就行了。CentOS7安裝有個好處為配置與安裝分離,安裝完基礎的軟體包後,再進行系統的配置。
以上為CentOS7安裝完畢,然後就可以重啟登入了。第一次登入可用root使用者登入並且設定。
(1).設定防火牆
在CentOS6.*的版本及以前,service iptables stop 在CentOS7中
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
(2).hostname設定
檢視當前機器名:
hostname
預設為:修改/etc/hostname
檔案
vi /etc/hostname 刪除:localhost.localdomain 新增:Master.Hadoop 儲存退出:wq 其他兩臺分別為: Slave1.Hadoop Slave2.Hadoop
(3).配置ip
宣告一下,我用的虛擬機器為PD,用VMWare的同學在比較新的版本上可能找不到ifcfg-eth0配置檔案,但是如果用NAT模式的話,會出現另一個配置檔案ifcfg-eno...之類的。所以如果這樣的話,配置VMWare相應的配置檔案即可。預設的ONBOOY選項為yes,所以也不用配了。
CentOS6.*檢視ip地址命令為:ifconfig
,CentOS7修改為:ip
addr
因為所用PD虛擬機器的網路設定為共享網路,故只需要在eth0配置檔案將開機啟動設定為yes
即可,因每增加一臺虛擬機器,PD變會將ip進行自增,且下次開機不會改變。如果是物理機的話,就需要配置ip地址,相關的配置不做太多介紹,主要配置IPADDR
NETMASK
GATEWAY
三個即可。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
將ONBOOT=no 變為 ONBOOT=yes
儲存退出:wq
/etc/init.d/network restart 即可
此時,ip addr
即可檢視相應的ip。 本人搭建了三臺虛擬機器,其ip分別為:
10.211.55.13 Master.Hadoop
10.211.55.14 Slave1.Hadoop
10.211.55.15 Slave2.Hadoop
(4).hosts配置
vi /etc/hosts
新增
10.211.55.13 Master.Hadoop
10.211.55.14 Slave1.Hadoop
10.211.55.15 Slave2.Hadoop
:wq
以上為CentOS7的安裝及其配置,接下來為SSH無密碼登入配置。
3.SSH無密碼驗證配置
Hadoop執行過程中需要管理遠端Hadoop守護程序,在Hadoop啟動以後,NameNode是通過SSH(Secure Shell)來啟動和停止各個DataNode上的各種守護程序的。這就必須在節點之間執行指令的時候是不需要輸入密碼的形式,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登入並啟動DataName程序,同樣原理,DataNode上也能使用SSH無密碼登入到NameNode。預設安裝好的系統上已經安裝了ssh和rsync,可以通過以下命令檢視:
rpm –qa | grep openssh
rpm –qa | grep rsync
如果提示沒有安裝,則需安裝,如果安裝跳過該步
yum install ssh #安裝SSH協議
yum install rsync #rsync是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案)
systemctl restart sshd.service #啟動服務
SSH無密碼原理:Master(NameNode | JobTracker)作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve(DataNode | Tasktracker)上時,需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。當Master通過SSH連線Salve時,Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。重要過程是將客戶端Master複製到Slave上。
分為兩部分:Master無密碼登入所有的Slave 和 所有的Slave無密碼登入到Master
這句話一定要看,一定要看,因為關係到配置ssh效率的問題。
原理說白了就是:需要將Master的公鑰id_rsa.pub追加到所有的Slave的authorized_keys裡邊,將所有的Slave中的id_rsa.pub追加到Master的authorized_keys裡邊。
因此先配置Master和所有的Slave機器的sshd_config
vi /etc/ssh/sshd_config
將下邊三個選項進行配置
RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰檔案路徑(和上面生成的檔案同)
儲存退出:wq,後要將sshd服務重啟
systemctl restart sshd.service #啟動服務
然後分別在所有機器的hadoop使用者的~/目錄下分別建立.ssh資料夾並將其許可權設為700 chmod 700 .ssh
~/ 目錄為登入hadoop使用者後,直接cd下的目錄
1).Master無密碼登入所有的Slave
1.在Master上生成密碼對 在Master節點上執行:
ssh-keygen -t rsa -P ''
這條命是生成其無密碼金鑰對,詢問其儲存路徑時直接回車採用預設路徑。生成的金鑰對:id_rsa和id_rsa.pub,預設儲存在”/home/hadoop/.ssh”目錄下檢視”/home/hadoop/”下是否有”.ssh”資料夾,且”.ssh”檔案下是否有兩個剛生產的無密碼金鑰對。2.接著在Master節點上做如下配置,把id_rsa.pub追加到授權的key裡面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.修改檔案”authorized_keys”許可權 許可權的設定非常重要,因為不安全的設定安全設定,會讓你不能使用RSA功能
chmod 600 ~/.ssh/authorized_keys
4.使用hadoop普通使用者驗證是否成功
ssh localhost
從上圖中得知無密碼登入本級已經設定完畢。
5.接下來是把公鑰複製所有的Slave機器上,在下邊的指令中,將公鑰複製到了.ssh
資料夾下,在初始狀態下,Slave機器預設沒有.ssh
目錄,Slave機器上沒有建立的需要手動建立,已經有的忽略。使用下面的命令格式進行復制公鑰:
scp ~/.ssh/id_rsa.pub 遠端使用者名稱@遠端伺服器IP:~/
例如:
scp ~/.ssh/id_rsa.pub [email protected]1.55.14:~/.ssh
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh
然後分別登入Slave1和Slave2兩臺機器,將id_rsa.pub
追加到authorized_keys
中,並將其許可權設定為600
後刪除id_rsa.pub
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub
6.在Master上hadoop使用者登入Slave上的Hadoop使用者驗證是否成功
ssh [email protected]
ssh [email protected]
不在提示讓輸入密碼,表示Master登入所有Slave節點ssh配置成功。
2).Slave無密碼登入所有的Master
和Master無密碼登入所有Slave原理一樣,就是把Slave的公鑰追加到Master的”.ssh”資料夾下的”authorized_keys”中,記得是追加(>>)
。
為了說明情況,我們現在就以”Slave1.Hadoop”無密碼登入”Master.Hadoop”為例,進行一遍操作,也算是鞏固一下前面所學知識,剩餘的”Slave2.Hadoop”和”Slave3.Hadoop”就按照這個示例進行就可以了。
1.首先建立”Slave1.Hadoop”自己的公鑰和私鑰,並把自己的公鑰追加到”authorized_keys”檔案中。用到的命令如下:
ssh-keygen -t rsa -P ''
回車
回車
2.檢視生成的公鑰和私鑰
cd
cd .ssh
ll
3.將公鑰id_rsa.pub傳送到Master
scp id_rsa.pub [email protected]:~/
注意:這裡傳送到了~/目錄下,沒有到.ssh目錄下,因為Master .ssh 目錄下已經有一個id_rsa.pub,為Master之前生成的,因此不能將其替換。
4.登入到Master,將公鑰追加到authorized_keys中,並修改其許可權
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub #追加完成後要刪除id_rsa.pub
5.驗證Slave無密碼登入到Master 在Slave機器上
ssh [email protected]
注:本人機器 55.13為Master 55.14為Slave1 55.15為Slave2
至此,SSH無密碼通訊已經配置完畢,我們可以發現一個規律,需要頻繁登入Master和Slave上進行傳送id_rsa.pub,為了簡化,其實可以先將每一臺的公鑰生成,然後傳送到Master中,傳送的過程中可以起一個別的名字,別重名就行,然後在Master中統一將公鑰追加到authorized key中。這樣Master中算是有一份比較全的Slave key了,再將這一份傳送到所有的Slave節點,變省去了很多傳送的步驟。
如:
Slave1
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa1.pub
Slave2
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa2.pub
Master
cat ~/.ssh/id_rsa1.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa2.pub >> ~/.ssh/authorized_keys
然後將authorized_keys 傳送到所有的Slave
scp ~/.ssh/authorized_keys [email protected]:~/.ssh
scp ~/.ssh/authorized_keys [email protected]:~/.ssh
並確保Slave上的authorized_keys許可權為600即可
本章結束,下一章,配置jdk以及hadoop。
#看在我辛苦截圖敲程式碼的份上,喜歡的話打賞一下吧,哈哈。
來自個人部落格連結:http://ferdbi.com/%E5%A4%A7%E6%95%B0%E6%8D%AE/2016/11/14/Hadoop%E7%B3%BB%E5%88%97%E4%B9%8BCentOS7%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E5%8F%8A%E5%85%B6SSH%E6%97%A0%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95.html
個人部落格