1、時鐘同步
打開終端,輸入date查看時間
step:
1、轉換爲root用戶:su root
2、打開表示時鐘的文件:crontab -e
3、輸入:0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
並保存
4、在終端執行/usr/sbin/ntpdate cn.pool.ntp.org
。可以看到已經成功,如果一次沒有成功再次進行嘗試。
5、在其他機器上執行同樣的步驟。
2、配置主機名
以master爲例:執行命令:vi /etc/sysconfig/network
。令HOSTNAME=master。
執行命令:hostname master。
然後再次執行hostname命令就可以發現主機名已經發生改變。
其他的機器類似(slave,slave1)
3、網絡配置
本機網絡狀態正常,不需要網絡配置。一般都不需要網絡配置。
4、關閉防火牆
爲什麼要關閉防火牆
打開終端,切換至root用戶su root
。
執行setup
,可以看到如下界面,選擇Firewall configuration
選定之後按回車進入選項。可以看到如下界面。然後將*改爲空格,選擇OK。
選擇yes
Quit即可
對其他機器執行同樣的操作。
5 配置主機列表
在/etc/hosts中添加IP地址和主機名的映射。由於我當前只開了兩臺機器,所以只有兩個記錄。配置完成後可以通過ping master
驗證是否配置成功。如下:
在各臺機器上執行同樣的操作。
6、安裝JDK
選擇使用jdk1.7。初次搭建集羣,時間又非常的急迫,只找到了比較舊的課程,但相對是比較完整的。爲了與課程保持一致,避免不必要的錯誤,這裏與課程保持一致。後面有時間再寫新版本的過程。
參考文章:CentOS 6.5下安裝Java JDK 環境(注意JDK選擇1.7即可)
注:本機將環境變量加在了~/.bashrc
下
注意:一開始使用的是JDK1.8 後來出現了很多的bug,沒有時間改動,所以又切換到了1.7。所以圖片中出現1.8的情況,皆改爲1.7
完成上面的單個機器上的JDK的安裝後,可以通過scp
命令將jdk拷貝到其他節點上。
1、分別在slave*機器的usr目錄下創建java目錄。便於管理。
2、然後在master機器上切換到root用戶,執行命令(注意修改目錄)scp -r /usr/java/jdk1.7/ root@slave:/usr/java
。(後來又將jdk移動到了java目錄下,便於管理)遇到如下圖的情況,輸入yes即可。
完成jdk的拷貝後,然後拷貝環境變量。同樣的原理,但是由於環境變量是在普通用戶的家目錄中,所以不同在root用戶下執行scp。命令:scp ~/.bashrc xiaoguan@slave:~/
7、設置免密登錄
這裏主要是配置主節點到從接到的免密鑰登錄。
爲什麼要配置免密鑰登錄?
在集羣中,Hadoop控制腳本依賴SSH來執行鍼對整個集羣的操作。例如,某個腳本能夠終止並重啓集羣中的所有守護進程。所以,需要安裝SSH,但是,SSH遠程登陸的時候,需要密碼驗證,集羣中數千臺計算機,數千臺計算機都需要手工輸入密碼,這是不太現實的,所以,就需要配置SSH無密碼登錄。[4]
在終端生成密鑰:ssh-keygen -t rsa
。在生成時按三次回車即可。會自動保存在home目錄下的.ssh目錄中。
複製公鑰文件:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
.
修改authorized_keys的權限:chmod 600 ~/.ssh/authorized_keys
將authorized_keys的權限複製到slave結點:scp authorized_keys xiaoguan@slave:~/
。這裏只用了一個slave
打開slave結點機器,將authorized_keys移動到.ssh目錄下。然後修改一下權限:chmod 600 ~/.ssh/authorized_keys
完成後,使用ssh slave
命令進行結點的切換,可以發現,不用進行輸入密碼即可完成切換。
注意:master機器.ssh權限爲700,authorized_keys權限爲600。slave機器的權限應該和他保持一致,否則免密無效。
參考
[4]. Hadoop分佈式模式下SSH免密碼登錄