首先配置single node,配置如下:
真機操作系統:OS X EI Capitan
虛擬機:VMware Fusion Pro 8.1.0
虛擬機操作系統:CentOS 6.6
JDK:1.8.0_73
Hadoop:2.7.1
1. 安裝虛擬機及配置環境
安裝完虛擬機,按默認配置即可,因是個人做練習用,選擇了直接以root用戶(su - root)搭建集群。
安裝vim、ssh,service ssh status測試是否ssh服務是否啟動。
復制jdk到/usr/java/jvm目錄下,并在~/.bashrc中配置java環境變量。
(p.s. 此處踩坑,如果平時開發用root用戶,那么在/root/.bashrc中配置java環境變量,如果用其他用戶,則在/home//.bashrc中配置。此外,不同于macOS,在~/.bash_profile中配置的話,會出現$JAVA_HOME只在當前session中生效的情況,打開一個新的terminal又需要重新source ~/.bash_profile,目前尚未找到原因。)
完成以上操作后,java -version測試是否配置成功。
配置Hadoop環境,參照Hadoop官網,http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html。
2. 修改主機名和網絡配置
網絡連接選擇NAT,測試網絡是否可用,將虛擬機復制,分別命名為master,host1,host2,host3...
(此處網絡配置只以VMware Fusion為例)
回到真機中sudo vim /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf,查看ip range
然后為幾個虛擬機分配固定ip,需在range之外(p.s. 配置時必須保證所有虛擬機處于關機狀態,否則不會生效。此外各個虛擬機由于是復制的,因此需要重新生成mac地址。)
配置完成后重啟虛擬機,ifconfig查看ip地址,測試網絡連接狀態。
打開各個虛擬機terminal,vim /etc/sysconfig/network,配置主機名,如master,host1,host2,host3.......
vim /etc/hosts,填寫各個主機和ip的映射。
配置完成后重啟虛擬機。
3. 配置ssh
進入master虛擬機,ssh host1,測試是否能否連接。
在master上生成公鑰秘鑰及authorized_keys,如下圖操作:
在各個host上生成公鑰秘鑰(只執行第一個命令)。
進入master虛擬機中ssh目錄,cd ~/.ssh,sudo scp?authorized_keys root@192.163.187.101:~/.ssh/。
再執行ssh host1命令,此后不再需要輸入密碼。
4. 啟動所有節點
進入master虛擬機,Hadoop根目錄,vim etc/hadoop/slaves,將各個節點填入。
sbin/.stop-all.sh,核對log。
在master虛擬機上通過jps命令查看進程是否啟動。
ssh連接各個host從節點,切換到root用戶查看進程是否啟動。
運行dfs過程中如果出現本地庫錯誤有兩種可能的原因:
1. 本地庫與操作系統版本不一致
2. glibc版本過低
配置過程中踩到的坑:
1. 切記關閉防火墻
2. hostname和network的配置
3. master和slave互相設置ssh無密碼訪問,不只是單向設置
4. 三個xml配置文件中要配置路徑