前言:本實(shí)驗(yàn)的所有路徑均為本人計(jì)算機(jī)路徑,有些路徑需要看自己的,跟著我的一起做最好。普通用戶(hù)下大部分命令需要加sudo,root模式下不用。如果怕麻煩,直接在root用戶(hù)下操作。
目錄
實(shí)驗(yàn)環(huán)境:
實(shí)驗(yàn)步驟:
一、配置NAT網(wǎng)絡(luò)?,分配靜態(tài)IP地址
1.打開(kāi)VMware,選擇編輯,選擇虛擬網(wǎng)絡(luò)編輯器,選擇NAT模式,取消選擇使用本地DHCP服務(wù)將IP地址分配給虛擬機(jī)(進(jìn)行完此操作,虛擬機(jī)應(yīng)該是沒(méi)網(wǎng)了)
?2.點(diǎn)擊上圖中的NAT設(shè)置,查看并記住網(wǎng)關(guān)IP(要以自己電腦的為準(zhǔn))
3.打開(kāi)控制面板\網(wǎng)絡(luò)和 Internet\網(wǎng)絡(luò)連接,右鍵VMnet8,查看屬性,選擇Ipv4,點(diǎn)擊屬性:
?4.打開(kāi)終端,查看網(wǎng)卡名稱(chēng):
5.打開(kāi)網(wǎng)絡(luò)配置文件,配置網(wǎng)絡(luò):
6.執(zhí)行 reboot? 命令重啟系統(tǒng)(非必須)。
7.用 ping 命令驗(yàn)證網(wǎng)絡(luò)是否通達(dá)(其實(shí)打開(kāi)瀏覽器搜索試一下也可以):
?二、關(guān)閉防火墻(可以防止后續(xù)ssh登錄出現(xiàn)問(wèn)題)
三、為了方便,修改host用戶(hù)名(安裝虛擬機(jī)的時(shí)候就直接起對(duì)名字就好了)
四、配置主機(jī)名與ip映射:
?五、配置Java jdk1.8
1.在宿主機(jī)下載jdk1.8然后通過(guò)共享文件夾傳到虛擬機(jī)
?2.可以通過(guò)圖形界面進(jìn)入共享文件夾目錄然后右鍵在終端打開(kāi):
?3.使用命令進(jìn)行解壓,使用命令tar -zxf 剛才復(fù)制的名字 -C /usr/local(我選擇將jdk安裝至 /usr/local/ 中為例,也可以裝在其他地方)
4.配置環(huán)境變量
5.刷新環(huán)境變量:(一定要做)
6.測(cè)試java命令是否可用:
?六、安裝配置hadoop
?1.在宿主機(jī)下載hadoop然后通過(guò)共享文件夾傳到虛擬機(jī)
?2.可以通過(guò)圖形界面進(jìn)入共享文件夾目錄然后右鍵在終端打開(kāi):
3.然后使用命令sudo tar -zxf 剛才復(fù)制的名字 -C /usr/local(我選擇將 Hadoop 安裝至 /usr/local/ 中為例,也可以裝在其他地方)
4. 進(jìn)入/usr/local/進(jìn)行操作:
5. Hadoop 解壓后即可使用。輸入如下命令來(lái)檢查 Hadoop 是否可用,成功則會(huì)顯示 Hadoop 版本信息(不查看也行,配置完環(huán)境變量查看即可):
6.配置環(huán)境變量(root模式下)
七、 安裝配置ssh,配置root用戶(hù)ssh登錄?
1.SSH介紹
2.配置root用戶(hù)ssh登錄:
八、克隆兩個(gè)虛擬機(jī)
九、本機(jī)以及不同主機(jī)之間的ssh免密登錄
1.先說(shuō)一下原理:
2.自身免密的步驟,以A主機(jī)(假設(shè)登錄名為name,相當(dāng)于master的lee)為例:
3.主機(jī)之間免密登錄(假設(shè)A:192.168.75.111,B:192.168.75.113。A登錄名為lee,host名為Node1;B登錄名為lee,host名為Node3)
4.總結(jié)(master,salve1,slave2本機(jī)的ssh免密登錄以及相互之間的免密登錄,登錄名均為lee)
十、最終配置與調(diào)試
1.修改配置文件
2.將配置好的Hadoop分發(fā)到其他主機(jī)
3.格式化namenode
4.啟動(dòng)hadoop
?5.瀏覽器web測(cè)試
本框架的分布式集群如下圖所示(IP地址不一定跟圖中一樣)
實(shí)驗(yàn)環(huán)境:
ubuntu18.04
Hadoop版本:3.1.3
JDK版本:1.8
實(shí)驗(yàn)步驟:
一、配置NAT網(wǎng)絡(luò)?,分配靜態(tài)IP地址
1.打開(kāi)VMware,選擇編輯,選擇虛擬網(wǎng)絡(luò)編輯器,選擇NAT模式,取消選擇使用本地DHCP服務(wù)將IP地址分配給虛擬機(jī)(進(jìn)行完此操作,虛擬機(jī)應(yīng)該是沒(méi)網(wǎng)了)
?2.點(diǎn)擊上圖中的NAT設(shè)置,查看并記住網(wǎng)關(guān)IP(要以自己電腦的為準(zhǔn))
我的是192.168.75.2:
實(shí)際上就是文章開(kāi)頭圖中的這個(gè):
3.打開(kāi)控制面板\網(wǎng)絡(luò)和 Internet\網(wǎng)絡(luò)連接,右鍵VMnet8,查看屬性,選擇Ipv4,點(diǎn)擊屬性:
?
(選擇使用下面的IP地址)查看ip地址,當(dāng)這個(gè)地址跟虛擬機(jī)NAT設(shè)置里的網(wǎng)關(guān)(也就是上文所說(shuō)的192.168.75.2)一樣時(shí),需要改變
當(dāng)不一樣時(shí),改為192.168.75.x(即前三段數(shù)字與網(wǎng)關(guān)ip一樣),x不能為2,以免與網(wǎng)關(guān)沖突,最好也不為0(注意要以自己電腦的為準(zhǔn))
這里我把ip地址設(shè)為192.168.75.1:
?
?這個(gè)IP地址就是文章開(kāi)頭圖片的這個(gè):
?然后修改默認(rèn)網(wǎng)關(guān)為192.168.75.2與網(wǎng)關(guān)ip一樣
?
?4.打開(kāi)終端,查看網(wǎng)卡名稱(chēng):
輸入ip addr 查看網(wǎng)卡名稱(chēng)(后續(xù)要用),本人網(wǎng)卡名稱(chēng)為ens33(基本上都是這個(gè)名字):
輸入ls /etc/netplan查看配置文件:
從圖上可以看出網(wǎng)絡(luò)配置文件名為:01-network-manager-all.yaml
5.打開(kāi)網(wǎng)絡(luò)配置文件,配置網(wǎng)絡(luò):
輸入(如果提示權(quán)限不夠就用root模式):
vi /etc/netplan/01-network-manager-all.yaml
或vim /etc/netplan/01-network-manager-all.yaml
或gedit /etc/netplan/01-network-manager-all.yaml(僅適用于圖形界面,最方便)
?注:未安裝vim時(shí),使用vi命令可能會(huì)出bug,處理方法見(jiàn)我其他文章(未完待做)
?修改文件如下(一定要注意縮進(jìn)):
network:
? ethernets:
? ? ens33:
#配置的網(wǎng)卡名稱(chēng)
? ? ? dhcp4: no
#關(guān)閉dhcp4
? ? ? dhcp6: no
#關(guān)閉dhcp6
? ? ? addresses: [192.168.75.115/24]
#設(shè)置本機(jī)IP地址(192.168.75.x,不能與下邊的網(wǎng)關(guān)一樣)及掩碼
? ? ? gateway4: 192.168.75.2
#設(shè)置網(wǎng)關(guān)(即虛擬機(jī)NAT設(shè)置里的網(wǎng)關(guān))
? ? ? nameservers:
? ? ? ? addresses: [114.114.114.114,8.8.8.8]
#設(shè)置DNS
我的Node1(master)節(jié)點(diǎn)配置如下:
配置完應(yīng)該是這樣的(一定要注意縮進(jìn),空格和tab鍵不能一起用):
network:
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.75.111/24]
gateway4: 192.168.75.2
nameservers:
addresses: [114.114.114.114,8.8.8.8]
version: 2
renderer: NetworkManager
其中g(shù)ateway4就是上文說(shuō)的的網(wǎng)關(guān)即192.168.75.2
addresses是linux虛擬機(jī)即節(jié)點(diǎn)的IP地址,也就是文章開(kāi)頭圖中的(需要三個(gè)節(jié)點(diǎn)):
?前三位與網(wǎng)關(guān)一樣,最后一位自己分配,即192.168.75.x,為了防止沖突,這里的x不能是2,1(192.168.75.1是宿主機(jī)的VMnet8這個(gè)虛擬網(wǎng)絡(luò)的IP地址),最好不要是0。我分配的是192.168.75.111,另外兩個(gè)節(jié)點(diǎn)(slave1 slave2)是192.168.75.112和192.168.75.113(這兩個(gè)節(jié)點(diǎn)可以先不分配,先配置完master的部分環(huán)境,再克隆兩個(gè)即可,注意,克隆的兩個(gè)虛擬機(jī)只需要改addresses即可)。
Node1(后邊改名為master):
?改完之后一定要保存設(shè)置?。?!
即一定要執(zhí)行(sudo)netplan apply(普通用戶(hù)要加sudo)命令可以讓配置直接生效
sudo netplan apply
如果回車(chē)之后什么都沒(méi)提示說(shuō)明,配置成功,否則失敗,需要檢查上方的操作(縮進(jìn),漏輸入,多輸入)
6.執(zhí)行 reboot? 命令重啟系統(tǒng)(非必須)。
7.用 ping 命令驗(yàn)證網(wǎng)絡(luò)是否通達(dá)(其實(shí)打開(kāi)瀏覽器搜索試一下也可以):
ping -c 4 baidu.com
下圖為正常情況
?二、關(guān)閉防火墻(可以防止后續(xù)ssh登錄出現(xiàn)問(wèn)題)
在root用戶(hù)下,輸入以下命令即可關(guān)閉防火墻(同樣地,根據(jù)命令字面意思,打開(kāi)防火墻也就會(huì)了吧):
ufw disable
三、為了方便,修改host用戶(hù)名(安裝虛擬機(jī)的時(shí)候就直接起對(duì)名字就好了)
即把Node改為master,Node2改為slave1,Node3改為slave2。(一個(gè)主節(jié)點(diǎn),兩個(gè)從節(jié)點(diǎn))
圖形界面(很簡(jiǎn)單):
打開(kāi)Ubuntu設(shè)置->共享,然后修改即可
重啟才能真正生效?。?!?
命令行界面(圖形界面也可以用):
ubuntu 18.04不能直接修改/etc/hostname中主機(jī)名稱(chēng),重啟后又恢復(fù)到安裝時(shí)設(shè)置的主機(jī)名稱(chēng).
正確的修改步驟如下:
修改主機(jī)名(永久),root用戶(hù)不用加sudo
sudo vi /etc/hostname?
然后改為需要的主機(jī)名后保存
保存后重啟
sudo reboot
如果是root模式,不用加sudo
四、配置主機(jī)名與ip映射:
sudo vi /etc/hosts? 插入下列內(nèi)容
192.168.75.xxx(這里是你的ip地址,上一步設(shè)置過(guò)了) 主機(jī)名
以master為例,應(yīng)該是
192.168.75.111 master
完整的如下圖:
ip地址每個(gè)人都不一樣,用你自己配的!
如果沒(méi)記住,可以使用以下命令查看(記住請(qǐng)略過(guò))
ifconfig
如果發(fā)生以下錯(cuò)誤,說(shuō)明你沒(méi)有安裝net相關(guān)組件,直接復(fù)制它的提示
?根據(jù)提示,使用命令安裝net相關(guān)組件
sudo apt install net-tools
如果出現(xiàn)以下報(bào)錯(cuò):
那么先執(zhí)行sudo apt-get update,再sudo apt install net-tools
sudo apt-get update
再次使用ifconfig,可以查看自己的ip地址:
?五、配置Java jdk1.8
1.在宿主機(jī)下載jdk1.8然后通過(guò)共享文件夾傳到虛擬機(jī)
設(shè)置共享文件夾:
(30條消息) 大數(shù)據(jù)開(kāi)源框架環(huán)境配置(三)——打開(kāi)Ubuntu虛擬機(jī),設(shè)置root密碼,安裝VMware Tools,設(shè)置共享文件夾_木子一個(gè)Lee的博客-CSDN博客
?2.可以通過(guò)圖形界面進(jìn)入共享文件夾目錄然后右鍵在終端打開(kāi):
?也可以在終端使用cd /mnt/hgfs/share進(jìn)入(我的共享文件夾目錄是/mnt/hgfs/share,以自己的為準(zhǔn),/mnt/hgfs/是一樣的,第三級(jí)每個(gè)人不同)
提前復(fù)制好壓縮包的名字,我的是jdk-8u311-linux-x64.tar.gz
?3.使用命令進(jìn)行解壓,使用命令tar -zxf 剛才復(fù)制的名字 -C /usr/local(我選擇將jdk安裝至 /usr/local/ 中為例,也可以裝在其他地方)
sudo tar -zxvf ./jdk-8u311-linux-x64.tar.gz -C /usr/local
或
sudo tar -zxf ./jdk-8u311-linux-x64.tar.gz -C /usr/local
注意:每個(gè)人下載的jdk1.8版本可能不一樣,也就是壓縮包名字可能不一樣
4.配置環(huán)境變量
為了方便,先修改文件名:
進(jìn)入/usr/local
cd /usr/local
執(zhí)行:
mv jdk1.8.0_311 jdk
將原文件夾名改為jdk
然后設(shè)置環(huán)境變量(需要在root用戶(hù)下):
關(guān)于環(huán)境變量的相關(guān)問(wèn)題,請(qǐng)看:
(30條消息) 解決配置了/etc/profile/下環(huán)境路徑刷新后,重新打開(kāi)或切換用戶(hù)失效的問(wèn)題_木子一個(gè)Lee的博客-CSDN博客
(30條消息) Linux(Ubuntu)配置不同用戶(hù)的環(huán)境變量_木子一個(gè)Lee的博客-CSDN博客_linux不同用戶(hù)的環(huán)境變量?(30條消息) ubuntu配置環(huán)境變量的方法_ubuntu設(shè)置環(huán)境變量_木子一個(gè)Lee的博客-CSDN博客
(30條消息) ubuntu中環(huán)境變量文件/etc/profile、.profile、.bashrc、/etc/bash.bashrc之間的區(qū)別和聯(lián)系_木子一個(gè)Lee的博客-CSDN博客_ubuntu 環(huán)境變量文件
cd
vi /etc/profile
或
vim /etc/profile
或
gedit /etc/profile(僅限于圖形界面)
在最后加入環(huán)境變量(直接復(fù)制過(guò)去會(huì)有亂碼,仔細(xì)檢查一下):
以下路徑(/usr/local/jdk)是以我自己的為準(zhǔn)
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
或:
export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
5.刷新環(huán)境變量:(一定要做)
source /etc/profile
6.測(cè)試java命令是否可用:
java -version
如果提示Command ‘java’ not found…..,說(shuō)明環(huán)境變量配置錯(cuò)誤,需要檢查一下
出現(xiàn)以下內(nèi)容說(shuō)明成功了:?
?六、安裝配置hadoop
?1.在宿主機(jī)下載hadoop然后通過(guò)共享文件夾傳到虛擬機(jī)
?2.可以通過(guò)圖形界面進(jìn)入共享文件夾目錄然后右鍵在終端打開(kāi):
也可以在終端使用cd /mnt/hgfs/share進(jìn)入
提前復(fù)制好壓縮包的名字,每個(gè)人可能不一樣,我的是hadoop-3.1.3.tar.gz
3.然后使用命令sudo tar -zxf 剛才復(fù)制的名字 -C /usr/local(我選擇將 Hadoop 安裝至 /usr/local/ 中為例,也可以裝在其他地方)
如果是root用戶(hù)下,不需要加sudo(下同)
即
sudo tar -zxvf ./hadoop-3.1.3.tar.gz -C /usr/local
或
sudo tar -zxf ./hadoop-3.1.3.tar.gz -C /usr/local
注意:每個(gè)人下載的hadoop版本可能不一樣,也就是壓縮包名字可能不一樣
4. 進(jìn)入/usr/local/進(jìn)行操作:
cd /usr/local/
將文件夾名改為hadoop
sudo mv ./hadoop-3.1.3/ ./hadoop
5. Hadoop 解壓后即可使用。輸入如下命令來(lái)檢查 Hadoop 是否可用,成功則會(huì)顯示 Hadoop 版本信息(不查看也行,配置完環(huán)境變量查看即可):
cd /usr/local/hadoop
./bin/hadoop version
以上兩條命令可以用一條代替:
/usr/local/hadoop/bin/hadoop version
6.配置環(huán)境變量(root模式下)
vi /etc/profile
或
vim /etc/profile
或
gedit /etc/profile(僅限于圖形界面)
添加(同樣,路徑/usr/local/hadoop也是每個(gè)人都不一樣的,即安裝目錄):
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
保存退出后刷新環(huán)境變量!
source /etc/profile
這時(shí)候就可以直接用hadoop version(不需要找到指定目錄)查看Hadoop版本了,驗(yàn)證是否配置成功
七、 安裝配置ssh,配置root用戶(hù)ssh登錄?
1.SSH介紹
ssh為 Secure Shell 的縮寫(xiě),由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是較可靠,專(zhuān)為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。首先查看系統(tǒng)是否啟動(dòng)了SSH進(jìn)程
在root模式下,
安裝ssh服務(wù):
apt install openssh-server
安裝完成后啟動(dòng)SSH進(jìn)程:
service ssh start
2.配置root用戶(hù)ssh登錄:
默認(rèn)情況下Ubuntu不允許使用root用戶(hù)進(jìn)行SSH登錄,需對(duì)配置文件/etc/ssh/sshd_config進(jìn)行如下修改:(也可以在root用戶(hù)下進(jìn)行,不用輸入sudo)
sudo vi /etc/ssh/sshd_config
或
sudo vim /etc/ssh/sshd_config
或(僅限于圖形界面)
sudo gedit /etc/ssh/sshd_config
將配置項(xiàng)PermitRootLogin 設(shè)為yes
可以直接把PermitRootLogin prohibit-passwd前面的#去掉,然后改成
PermitRootLogin yes
也可以跟下圖一樣,直接添加
然后重啟ssh服務(wù)(一定要做!):
service ssh restart
八、克隆兩個(gè)虛擬機(jī)
克隆操作:
保證虛擬機(jī)在關(guān)機(jī)狀態(tài),點(diǎn)擊虛擬機(jī):
然后選擇管理->克隆,點(diǎn)擊下一步:?
?默認(rèn):
?選擇完整克隆,下一步:
?修改名字和位置(最好不要在C盤(pán)),完成:
克隆后的兩個(gè)虛擬機(jī)(salve1、slave2)
開(kāi)機(jī)后,用ifconfig看看IP地址,發(fā)現(xiàn)跟master一樣,需要重新改一下ip地址。
跟步驟一一樣,在網(wǎng)絡(luò)配置文件里修改ip地址即可
slave1:
slave2:
也要記得保存設(shè)置:
sudo netplan apply
發(fā)現(xiàn)jdk也已經(jīng)搞好了
java -version
查看VMware Tools,發(fā)現(xiàn)也裝好了
Root密碼也是一樣的
防火墻狀態(tài)也是一樣的
Hadoop也安裝好了
修改完ip之后,在mobaxterm里邊遠(yuǎn)程登錄,發(fā)現(xiàn)是可以的
mobaxterm請(qǐng)看:
(30條消息) 使用MobaXterm進(jìn)行遠(yuǎn)程登錄_木子一個(gè)Lee的博客-CSDN博客
用戶(hù)名(master是lee,slaves也是lee)也是一樣的,可以選擇改,不改也沒(méi)關(guān)系
如果你在克隆之前做了不同主機(jī)之間的ssh免密登錄(一般放在下一步做),那么克隆之后是不行的,要重新配置
所以最好克隆之后再配置不同主機(jī)之間的ssh免密登錄
九、本機(jī)以及不同主機(jī)之間的ssh免密登錄
如果不想看1 2 3啰嗦就直接往下翻,看4.總結(jié)
1.先說(shuō)一下原理:
假如有兩臺(tái)(或多臺(tái))同局域網(wǎng)的服務(wù)器A:192.168.75.111,B:192.168.75.113。讓A,B這兩臺(tái)服務(wù)器之間能兩兩互相免密登錄,并且每臺(tái)服務(wù)器都可以自我免密登錄(自我免密登錄即:ssh?localhost 時(shí)不需要密碼)。
免密登錄需要授權(quán),假設(shè)把A公鑰id_rsa.pub交給B授權(quán),那么A就可以免密登錄B,如果A的公鑰id_rsa.pub給了自己,那么A就可以免密登錄自己。
2.自身免密的步驟,以A主機(jī)(假設(shè)登錄名為name,相當(dāng)于master的lee)為例:
首先生成公鑰、私鑰:ssh-keygen -t rsa,然后一直回車(chē);
然后查看A主機(jī)生成密鑰文件,默認(rèn)在用戶(hù)目錄中的.ssh文件夾內(nèi)(在普通用戶(hù)下生成的公鑰,密鑰文件只在普通用戶(hù)的.ssh文件里,root用戶(hù)里的沒(méi)有,而且連.ssh文件夾都沒(méi)有(只有生成密鑰,才會(huì)創(chuàng)建.ssh文件夾),反之也是如此):
普通用戶(hù):/home/name/.ssh/? ?name是登錄名,如果換成master節(jié)點(diǎn),我的master的登錄名是lee,所以位置在/home/lee/.ssh/
對(duì)于root用戶(hù),位于/root/.ssh下
其中:id_rsa為私鑰文件,id_rsa.pub為公鑰文件
如下圖所示
然后對(duì)于普通用戶(hù),查看/home/name/.ssh/有沒(méi)有管理密碼登錄權(quán)限的authorized_keys文件
如果按照我的master節(jié)點(diǎn),就是/home/lee/.ssh
命令依次為:
cd /home/name/.ssh/
ls
對(duì)于root用戶(hù),查看/root/.ssh有沒(méi)有authorized_keys文件
cd /root/.ssh/
ls
若有,直接執(zhí)行
cat id_rsa.pub >> authorized_keys
若沒(méi)有,則先創(chuàng)建“authorized_keys”文件,并修改權(quán)限為“600”:
touch authorized_keys
chmod 600 authorized_keys
然后執(zhí)行
cat id_rsa.pub >> authorized_keys
最后測(cè)試一下自身免密登錄:
ssh localhost
如果出現(xiàn):
則修改/etc/ssh/ssh_config文件中的配置(sudo vi /etc/ssh/ssh_config 或sudo vim /etc/ssh/ssh_config或sudo gedit /etc/ssh/ssh_config,root用戶(hù)不需要加sudo),添加如下兩行配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
?注:普通用戶(hù)和root用戶(hù)的免密登錄配置是獨(dú)立的,也就是說(shuō),如果以上操作都是在普通用戶(hù)下進(jìn)行的,那么root用戶(hù)下就不能免密登錄(得需要免密),反之也是這樣。如果兩種用戶(hù)都要免密,那么就要還需在root模式下執(zhí)行以上操作
3.主機(jī)之間免密登錄(假設(shè)A:192.168.75.111,B:192.168.75.113。A登錄名為lee,host名為Node1;B登錄名為lee,host名為Node3)
首先,A生成密鑰:
ssh-keygen -t rsa
然后一直回車(chē);
然后查看A主機(jī)生成密鑰文件,默認(rèn)在用戶(hù)目錄中的.ssh文件夾內(nèi)(在普通用戶(hù)下生成的公鑰,密鑰文件只在普通用戶(hù)的.ssh文件里,root用戶(hù)里的沒(méi)有,反之也是如此):
普通用戶(hù):/home/lee/.ssh/ (cd /home/lee/.ssh/回車(chē),ls,回車(chē))??
對(duì)于root用戶(hù),位于/root/.ssh下(cd /root/.ssh/,回車(chē),ls,回車(chē))
其中:id_rsa為私鑰文件,id_rsa.pub為公鑰文件
接下來(lái),即把A生成的公鑰給B的管理密碼登錄權(quán)限的authorized_keys文件(才能實(shí)現(xiàn)A免密登錄B)。這就意味著B(niǎo)也要生成密鑰(authorized_keys在.ssh文件夾里。只有生成密鑰,才會(huì)創(chuàng)建.ssh文件夾)。
打開(kāi)B的終端,生成密鑰(ssh-keygen -t rsa),查看有無(wú)authorized_keys文件(一般沒(méi)有),創(chuàng)建authorized_keys文件并修改權(quán)限為“600”(touch authorized_keys
chmod 600 authorized_keys),即跟上邊的操作一樣。
然后很關(guān)鍵的一步:把A的公鑰追加到B的authorized_keys文件里
打開(kāi)A的終端,
普通用戶(hù):進(jìn)入/home/lee/.ssh/ (cd /home/lee/.ssh/,回車(chē))
Root 用戶(hù):進(jìn)入/root/.ssh(cd /root/.ssh/,回車(chē))
利用scp命令把A的公鑰發(fā)到B的tmp(可以自己選一個(gè))文件夾下:
執(zhí)行(192.168.75.113為B的IP地址):
scp id_rsa.pub 192.168.75.113:/tmp
打開(kāi)B的終端,把A的公鑰id_rsa.pub復(fù)制到B的.ssh文件夾下(普通用戶(hù)在/home/lee/.ssh/,root用戶(hù)在/root/.ssh)
普通用戶(hù)執(zhí)行:
cat /tmp/id_rsa.pub>>/home/lee/.ssh/authorized_keys
或
cp /tmp/id_rsa.pub /home/lee/.ssh/authorized_keys
root用戶(hù)執(zhí)行:
cat /tmp/id_rsa.pub>>/root/.ssh/authorized_keys
或
cp /tmp/id_rsa.pub /root/.ssh/authorized_keys
最后測(cè)試一下,成功:(可以有4種測(cè)試方法:ssh ip地址、ssh 登錄名@IP地址、ssh 登錄名@host名、ssh host名):
ssh 192.168.75.113
相當(dāng)于(因?yàn)樵谇懊嬉呀?jīng)做過(guò)地址與host名的映射了)
ssh Node1
注:普通用戶(hù)和root用戶(hù)的免密登錄配置是獨(dú)立的,也就是說(shuō),如果以上操作都是在普通用戶(hù)下進(jìn)行的,那么root用戶(hù)下就不能免密登錄(得需要免密),反之也是這樣。如果兩種用戶(hù)都要免密,那么就要還需在root模式下執(zhí)行以上操作。
同樣實(shí)現(xiàn)B對(duì)A的免密登錄,也是同上
4.總結(jié)(master,salve1,slave2本機(jī)的ssh免密登錄以及相互之間的免密登錄,登錄名均為lee)
自身免密登錄:
首先生成公鑰、私鑰(三個(gè)節(jié)點(diǎn)都要這樣做):
ssh-keygen -t rsa
然后一直回車(chē);
然后創(chuàng)建“authorized_keys”文件,并修改權(quán)限為“600”:
touch authorized_keys
chmod 600 authorized_keys
然后執(zhí)行
cat id_rsa.pub >> authorized_keys
最后測(cè)試一下自身免密登錄:
ssh localhost
如果出現(xiàn):
則修改/etc/ssh/ssh_config文件中的配置(sudo vi /etc/ssh/ssh_config 或sudo vim /etc/ssh/ssh_config或sudo gedit /etc/ssh/ssh_config,root用戶(hù)不需要加sudo),添加如下兩行配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
不同主機(jī)之間的免密登錄 :
將master的公鑰發(fā)送到slave1:
scp id_rsa.pub 192.168.75.112:/tmp
打開(kāi)slave1的終端,把master的公鑰id_rsa.pub復(fù)制到slave1的.ssh文件夾下(普通用戶(hù)在/home/lee/.ssh/,root用戶(hù)在/root/.ssh)
普通用戶(hù)執(zhí)行:
cat /tmp/id_rsa.pub>>/home/lee/.ssh/authorized_keys
或
cp /tmp/id_rsa.pub /home/lee/.ssh/authorized_keys
root用戶(hù)執(zhí)行:
cat /tmp/id_rsa.pub>>/root/.ssh/authorized_keys
或
cp /tmp/id_rsa.pub /root/.ssh/authorized_keys
最后測(cè)試一下(可以有4種測(cè)試方法:ssh ip地址、ssh 登錄名@IP地址、ssh 登錄名@host名、ssh host名)
同樣地,重復(fù)上方操作,注意ip地址的改變
master還要發(fā)給slave2,
slave1要發(fā)給master和slave2,
slave2要發(fā)給master和slave1
十、最終配置與調(diào)試
1.修改配置文件
先找到目錄:
cd /usr/local/hadoop/etc/hadoop
(0) 修改hadoop-env.sh
vim hadoop-env.sh
添加java路徑:
export JAVA_HOME=/usr/local/jdk
(1)修改文件workers
需要把所有數(shù)據(jù)節(jié)點(diǎn)的主機(jī)名寫(xiě)入該文件,每行一個(gè),默認(rèn)為 localhost(即把本機(jī)作為數(shù)據(jù)節(jié)點(diǎn)),所以,在偽分布式配置時(shí),就采用了這種默認(rèn)的配置,使得節(jié)點(diǎn)既作為名稱(chēng)節(jié)點(diǎn)也作為數(shù)據(jù)節(jié)點(diǎn)。在進(jìn)行分布式配置時(shí),可以保留localhost,讓Master節(jié)點(diǎn)同時(shí)充當(dāng)名稱(chēng)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn),或者也可以刪掉localhost這行,讓Master節(jié)點(diǎn)僅作為名稱(chēng)節(jié)點(diǎn)使用。
vim workers
本教程master節(jié)點(diǎn)僅作為名稱(chēng)節(jié)點(diǎn)使用,因此將workers文件中原來(lái)的localhost刪除,只添加如下內(nèi)容:
slave1
slave2
(2)修改文件core-site.xml
vim core-site.xml
或更方便的:?
gedit core-site.xml
把core-site.xml文件修改為如下內(nèi)容:
<configuration>
<!--指定namenode的地址-->
??????? <property>
??????????????? <name>fs.defaultFS</name>
??????????????? <value>hdfs://master:9000</value>
??????? </property>
<!--用來(lái)指定使用hadoop時(shí)產(chǎn)生文件的存放目錄-->
??????? <property>
??????????????? <name>hadoop.tmp.dir</name>
??????????????? <value>file:/usr/local/hadoop/tmp</value>
??????????????? <description>Abase for other temporary directories.</description>
??????? </property>
<!--用來(lái)設(shè)置檢查點(diǎn)備份日志的最長(zhǎng)時(shí)間-->
??? ????<property>
??????? ????????<name>fs.checkpoint.period</name>
??????? ????????<value>3600</value>
??????? </property>
</configuration>
(3)修改文件hdfs-site.xml(gedit命令更方便)
vim hdfs-site.xml
對(duì)于Hadoop的分布式文件系統(tǒng)HDFS而言,一般都是采用冗余存儲(chǔ),冗余因子通常為3,也就是說(shuō),一份數(shù)據(jù)保存三份副本。但是,本教程有2個(gè)slave節(jié)點(diǎn)作為數(shù)據(jù)節(jié)點(diǎn),即集群中有2個(gè)數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)能保存2份,所以 ,dfs.replication的值設(shè)置為 2。hdfs-site.xml具體內(nèi)容如下:
<configuration>
?? ?????<property>
??????????????? <name>dfs.namenode.secondary.http-address</name>
??????????????? <value>master:50090</value>
??????? </property>
<!--指定hdfs保存數(shù)據(jù)的副本數(shù)量-->
??????? <property>
??????????????? <name>dfs.replication</name>
??????????????? <value>2</value>
??????? </property>
<!--指定hdfs中namenode的存儲(chǔ)位置-->
??????? <property>
??????????????? <name>dfs.namenode.name.dir</name>
??????????????? <value>file:/usr/local/hadoop/tmp/dfs/name</value>
??????? </property>
<!--指定hdfs中datanode的存儲(chǔ)位置-->
??????? <property>
??????????????? <name>dfs.datanode.data.dir</name>
??????????????? <value>file:/usr/local/hadoop/tmp/dfs/data</value>
??????? </property>
</configuration>
(4)修改文件mapred-site.xml(gedit命令更方便)
“/usr/local/hadoop/etc/hadoop”目錄下有一個(gè)mapred-site.xml.template,需要修改文件名稱(chēng),把它重命名為mapred-site.xml,(命令:mv mapred-site.xml.template mapred-site.xml)(也可能不需要重命名)
vim mapred-site.xml
然后,把mapred-site.xml文件配置成如下內(nèi)容:
<configuration>
<!-- 指定MR運(yùn)行在yarn上 -->
??????? <property>
??????????????? <name>mapreduce.framework.name</name>
??????????????? <value>yarn</value>
??????? </property>
??????? <property>
??????????????? <name>mapreduce.jobhistory.address</name>
??????????????? <value>master:10020</value>
??????? </property>
???? ???<property>
??????????????? <name>mapreduce.jobhistory.webapp.address</name>
??????????????? <value>master:19888</value>
??????? </property>
??????? <property>
??????????????? <name>yarn.app.mapreduce.am.env</name>
??????????????? <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
??????? </property>
??????? <property>
??????????????? <name>mapreduce.map.env</name>
??????????????? <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
??????? </property>
??????? <property>
??????????????? <name>mapreduce.reduce.env</name>
??????????????? <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
??????? </property>
</configuration>
(5)修改文件 yarn-site.xml(gedit命令更方便)???
vim yarn-site.xml
把yarn-site.xml文件配置成如下內(nèi)容:
<configuration>
<!--指定Yarn的ResourceManager地址-->
??????? <property>
??????????????? <name>yarn.resourcemanager.hostname</name>
??????????????? <value>master</value>
??????? </property>
<!--指定Yarn的NodeManager獲取數(shù)據(jù)的方式是shuffle-->
??????? <property>
??????????????? <name>yarn.nodemanager.aux-services</name>
??????????????? <value>mapreduce_shuffle</value>
??????? </property>
<!--Yarn打印工作日志-->???
??? ????<property>???
??????? ????????<name>yarn.log-aggregation-enable</name>
??????? ????????<value>true</value>???
??? ????</property>
</configuration>
2.將配置好的Hadoop分發(fā)到其他主機(jī)
上述5個(gè)文件全部配置完成以后,需要把master節(jié)點(diǎn)上的“/usr/local/hadoop”文件夾復(fù)制到各個(gè)節(jié)點(diǎn)上:
scp -r /usr/local/hadoop root@slave1:/usr/local/
scp -r /usr/local/hadoop root@slave2:/usr/local/
3.格式化namenode
hdfs namenode -format
4.啟動(dòng)hadoop
先啟動(dòng)HDFS:
start-dfs.sh
再啟動(dòng)YARN:
start-yarn.sh
啟動(dòng)后可以在Web頁(yè)面查看hadoop信息:
http://mini1:50070
為了防止start-dfs.sh后報(bào)錯(cuò):
在/usr/local/hadoop/sbin路徑下
將start-dfs.sh,stop-dfs.sh兩個(gè)文件頂部添加以下參數(shù)
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
還有,start-yarn.sh,stop-yarn.sh頂部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
以下警告可以忽略(也可能沒(méi)有警告):
?5.瀏覽器web測(cè)試
輸入文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-742669.html
master:9870
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-742669.html
到了這里,關(guān)于大數(shù)據(jù)開(kāi)源框架環(huán)境搭建(四)——HDFS完全分布式集群的安裝部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!