天天看點

Hadoop 2.5.2分布式叢集配置

這裡一共有三台機器,系統為ubuntu 14.04.2,其中一台為master 其餘兩台為slave

首先用adduser指令添加一個普通使用者,指令如下:

修改 /etc/sudoers 檔案,找到下面一行,把前面的注釋(#)去掉

這裡設定三台機器的使用者名統一為lq

/etc/hostname檔案中存放的是主機名,修改檔案後儲存然後重新開機機器,重新登陸後主機名生效 這裡設定master機器主機名為rfidlabmaster 其餘兩台機器主機名分别為rfidlabslave1、rfidlabslave2

配置hosts 在三台機器上分别修改/etc/hosts檔案,如在master機器上修改:

用以下形式添加

在master機器下

一直回車。.ssh目錄下多出兩個檔案

私鑰檔案:id_rsa公鑰檔案:id_rsa.pub

複制id_rsa.pub檔案為authorized_keys

将公鑰檔案authorized_keys分發到節點rfidlabslave1、rfidlabslave2上:

注意:如果目前使用者目錄下沒有.ssh目錄,可以自己建立一個該目錄,該目錄的權限最好設定為700,authorized_keys權限最好設定為600

驗證ssh無密碼登入:

由于master機器上已經安裝過java,安裝目錄為/usr/lib/jvm/jdk1.8.0_60,是以直接将安裝目錄發到其他的slave節點,如果沒有java,就要去官網下載下傳解壓。

修改/etc/profile檔案 配置java環境變量

<a href="http://hadoop.apache.org/releases.html">hadoop下載下傳位址</a>

可以選擇一個自己需要的版本,這裡選擇的是hadoop-2.5.2

先下載下傳一個到master伺服器的/opt/tools路徑下,如果該路徑不存在就自己建立一個該目錄

修改hadoop xml檔案配置

修改etc/conf/core-site.xml 配置如下

修改etc/conf/mapred-site.xml 配置如下

conf/hdfs-site.xml 配置如下,注意檔案路徑中不要包含一些點、逗号等特殊字元,檔案路徑需要寫成完全路徑,以file:開頭

修改etc/hadoop/yarn-site.xml

修改 etc/hadoop/slaves

etc/hadoop/hadoop-env.sh和yarn-env.sh中配置java環境變量

使用scp 直接把以上配置copy到另外的叢集上

修改/etc/profile檔案 配置hadoop環境變量

分布式hadoop環境搭建完畢

(1)格式化檔案系統

如果啟動失敗 則需要手動建立目錄

成功會顯示 info common.storage: storage directory /home/lq/hadoop/dfs/name has been successfully formatted.

(2) 啟動hadoop

輸出:

如果出現以下輸出使其卡着不動,則要在/etc/ssh/ssh_config 檔案中添加

stricthostkeychecking no 然後重新開機ssh服務/etc/init.d/ssh restart

去其他slave節點輸入 jps 檢視

fatal org.apache.hadoop.hdfs.server.datanode.datanode: initialization failed for block pool (datanode uuid unassigned) service to master/xxx. exiting. java.io.ioexception: incompatible clusterids

問題定位:所有namenode目錄、所有datanode目錄、從節點臨時目錄

問題原因:

1) 主節點的namenode clusterid與從節點的datanode clusterid不一緻

2) 多次格式化了namenode跟datanode之後的結果,格式化之後從節點生成了新的id,造成不一緻

解決辦法:

在格式化之前,先把所有的服務停掉(stop-dfs.sh、stop-yarn.sh或者stop-all.sh),確定都停掉了之後,分别到所有節點的namenode目錄、datanode目錄、臨時目錄,把以上目錄裡面的所有内容都删除掉。然後再重新啟動就可以了。一個個機器删除比較麻煩 附上一個腳本可以在各台機器上批量删除,參考該部落格改寫的

建立腳本:allcmd.sh

建立完執行chmod +x allcmd.sh

建立指令檔案 cmdlist

建立伺服器清單檔案 serverlist

使用方法:在腳本所在目錄下建立cmdlist檔案和serverlist

然後調用:./allcmd.sh serverlist cmdlist 即可