【目的】:學習大數據
在此記錄搭建大數據的過程。
【系統環境】
宿主機操作系統:Win7 64位
虛擬機軟件:Vmware workstation 12
虛擬機:Ubuntu 16 64位桌面版
【步驟概要】
一、准備
1、准備安裝軟件
2、規划好虛擬機數量、機器名稱、IP
3、設置虛擬機靜態IP
4、建立專用於hadoop的賬號
二、設置免密登錄
實現這幾台測試機之間可以免密碼登錄
三、安裝和配置Java環境
四、安裝和配置Hadoop
五、測試和收尾
【搭建過程】
一、准備
1、安裝文件准備
Hadoop軟件:
JDK:
Ubuntu 16的安裝軟件
2、虛擬機准備
測試計划使用三台虛擬機
在Win7里啟動Vmware workstation,安裝一台操作系統為Ubuntu 16的空的虛擬機,從這台虛擬機另外再克隆出來兩台
3、機器名稱:hadoop.master、hadoop.slave1、hadoop.slave2
通過修改/etc/hostname來設置虛擬機的主機名稱
#vi /etc/hostname
4、查看和確定網關,我這測試環境的網關是:192.168.152.2
查看方式:
1)、點擊Vmware workstation左上角的“編輯”
2)、選擇“虛擬網絡編輯器”
3)、選擇NAT模式
4)、上圖中“使用本地DHCP服務將IP地址分配給虛擬機”,很多網上文檔都是把此項前面的“√"去掉,如果所有的虛擬機都設置為靜態IP,可以去掉,因為我還有別的虛擬機,不在意是否靜態IP,所以,此項“√”保留。
5)、“NAT設置”按鈕,可看到網關設置,我虛擬機的網關為:192.168.152.2
這是系統默認的,在此無需變更。
5、規划三台虛擬機的IP:192.168.152.21、192,168.152.22、192.168.152.23
IP地址選擇,前面三節都是:192.168.152,后面是除了網關里占用了2,其它1~255之間的數即可。如果已經設定了其它靜態IP,不和那些沖突即可。
6、修改/etc/hosts,修改hosts文件目的是為了這三台虛擬機可以通過機器名稱互相訪問
上圖是第一台hadoop.master的,另兩台,修改127.0.0.1 hadoop.XXXXX 修改為相應的機器名稱
7、為虛擬機設置靜態IP
只所以設置為靜態IP,是因為虛擬機啟動后,有時會自動變更IP,而在搭建的大數據環境里,會配置IP地址,動態變化后,會出現IP地址不匹配。
#sudo vi /etc/network/interfaces
我的文件打開后,里面有如下內容:
auto lo
iface lo inet loopback
這些內容不變,增加下面內容
auto ens33
iface ens33 inet static
address 192.168.152.21
netmask 255.255.255.0
gateway 192.168.152.2
dns-nameservers 202.96.209.5
保存后退出,重啟電腦,使用ifconfig檢查新設置的IP地址是否已經生效。
使用Ping命令檢查是否能ping通
1)、內網是否能ping通其它機器,比如,在hadoop.master里ping 192.168.152.22
2)、 Ping外網,比如:ping www.baidu.com
測試如下:
說明:
1、如果編輯/etc/network/interfaces,里面沒有配置dns,則可以ping通內網的其它機器,無法ping通外網的機器
2、注意軟件版本,如果虛擬機不是Ubuntu16,而是Ubuntu14或Ubuntu18,那么配置靜態IP,可能需要編輯不同的文件,就不是/etc/network/interfaces了
如果虛擬機是CentOS ,更不是/etc/network/interfaces,但道理是通的,搭建Hadoop完全分布式大數據環境,利用虛擬機來實現,需要配置靜態IP,避免機 器重啟后配置失效。
3、如果設定有問題,則查找原因,解決后再往后繼續。
8、增加user,這個用戶專用於操作hadoop
1)、切換到root賬號
2)、這里用戶名設為:hadoop
#useradd hadoop
3)、為增加的賬號設置口令
#passwd hadoop
4)、去home文件夾下檢查
#cd /home
#ll
在home文件夾下發現沒有新增hadoop文件夾
5)、刪除已建立的user hadoop,換種方式重新建立
a.刪除原hadoop賬號
#userdel hadoop
b.查看,在home文件夾下沒有hadoop的賬號信息
#ll
c.按下述命令增加hadoop賬號,使用參數
#useradd -r -m -s /bin/bash hadoop
d.再查看home文件夾,正常情況下,在home文件夾下會出現hadoop文件夾
6)、參照步驟5)在另外兩台機器上建立hadoop賬號,並設置hadoop的口令,這三台機器的口令要一致。
#useradd -r -m -s /bin/bash hadoop
#passwd hadoop
9、把新增的這個用戶設為管理員,編輯/etc/sudoers
注意:Tab鍵的使用
二、設置免密登錄
1、#cd ~/.ssh
提示無此目錄
2、安裝,sudo apt-get install openssh-server
按提示輸入y,回車
3、安裝好以后,輸入cd ~/.ssh,仍然提示沒有這個文件夾
4、執行ssh localhost
執行ssh localhost命令后,就會建立一個~/.ssh的隱藏的文件夾
5、輸入exit 退出
6、進入~/.ssh
#cd ~/.ssh
7、如果先前有公鑰,則先刪除
#rm ./id_rsa*
8、生成公鑰
#ssh-keygen -t rsa
一路按回車即可
9、讓主節點能夠免密登錄到主節點
1)、把公鑰添加到key中
# cat ./id_rsa.pub >> ./authorized_keys
2)、第一次使用ssh登錄主節點本機
#ssh hadoop.master
3)、輸入exit退出
#exit
4)、第二次使用ssh登錄主節點本機
#ssh hadoop.master
5)、輸入exit退出
#exit
10、把主節點的公鑰傳到從節點,也就是另外兩台機器行,實現從主節點免密登錄到從節點
1)、分別到兩台從節點機器上hadoop.slave1和hadoopslave2上,切換到hadoop賬號,檢查有無~/.ssh文件夾
#su hadoop
#cd ~/.ssh
如果沒有,則建立
#mkdir ~/.ssh
檢查
#cd ~/.ssh
2)、切換到hadoop賬號下
#su hadoop
3)、進入~/.ssh
#cd ~/.ssh
4)、查看
#ll
5)、拷貝傳輸
#scp id_rsa.pub >> hadoop@hadoop.slave1:/home/hadoop/
#scp id_rsa.pub >> hadoop@hadoop.slave2:/home/hadoop/
6)、從上圖看,公鑰傳輸被拒絕掉了,解決辦法:
分別在hadoop.slave1和hadoop.slave2上執行下面語句:
#sudo apt-get install openssh-server
7)、回到主節點,重新拷貝傳輸公鑰
#su hadoop
#cd /home/hadoop
#cd .ssh
#scp id_rsa.pub >> hadoop@hadoop.slave1:/home/hadoop/
#scp id_rsa.pub >> hadoop@hadoop.slave2:/home/hadoop/
8)、再分別到兩台從節點,把id_rsa.pub加到authorized_Keys里
#su hadoop
#cd /home/hadoop
#cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
9)、從主節點,以hadoop登錄,檢查是否能免密登錄hadoop.slave1和hadoop.slave2
三、安裝和配置Java環境
四、安裝和配置Hadoop