天天看點

如何搭建Hadoop叢集環境

第一步:安裝

(1) 下載下傳hadoop包 http://hadoop.apache.org/

(2) 登入需要配置hadoop的伺服器(hadoopsrv01) su -gird(官方建議用grid賬戶搭建)

(3) 解壓 tar -xvf hadoop-2.1.0-bin.tar.gz 到一個目錄比如/home/gird

(4) 進入/home/gird 建立臨時目錄 tmp

(5) 配置 hadoop-env.sh, core-site.xml, hdfs-site.xml,mapred-site.xml ,masters,slaves檔案

(6) 修改hadoop-env.sh 檔案,隻需要設定 export java_home=/usr/java/jdk1.7.0 即可,其他不需要修改。

(7) 修改core-site.xml 檔案,增加以下内容

<property>

<name>default.name</name>

<value>http://hadoopsrv01:9000</value>

</property>

<name>hadoop.tmp.dir</name>

<value>/home/gird/hadoop-2.1.0/tmp</value>

(8) 修改hdfs-site.xml,根據你自己的datanode節點數,設定複制因子。

<name>dfs.replication</name>

<value>2</value>

(9) 修改mapred-site.xml檔案

<name>mapred.job.tracker</name>

<value>hadoopsrv01:9001</value>

(10) 修改masters,slaves 增加namenode,datanode節點配置。

masters:

hadoopsrv01

slaves:

hadoopsrv02

hadoopsrv03

(11) 格式化hadoop叢集 bin/hadoop namenode -format

(12) 啟動叢集 bin/start-all.sh

(13)檢查背景程序是否ok /usr/java/jdk1.7.0/bin/jps

namenode,jobtracker,datanode,tasktracker

如果以上都能看到,就說明hadoop分布式環境搭建好了

第二步:測試

(1) 進入cd /home/gird mkdir input

(2) cd input

(3)通過輸出重定向的方式,新增兩個txt檔案

echo "hi everyone">text1.txt  

echo "hi,hadoop">text2.txt

(4) 檢視hadoop hdfs裡是否有東西 

cd /home/gird/hadoop-2.1.0/bin/hadoop  fs -ls

傳回:ls: cannot  access .: no such file or directory

(5)把input目錄下的檔案拷貝到hadoop in目錄下

 bin/hadoop fs -put ../put  ./in

 提示錯誤:

 put: org.apache.hadoop.hdfs.server .namenode.safemodeexception: cannot create directory /user/gird/in. name node is in safe mode.

執行:/home/gird/hadoop-2.1.0/bin/hadoop dfsadmin -safemode leave

(6) 執行example jar 進行統計分析。

 /home/gird/hadoop-2.1.0/bin/hadoop jar hadoop-examples-2.1.0.jar wordcount in out

(7) 檢視執行輸出檔案。 

bin/hadoop fs -cat ./out/part-r-00000

傳回:

hadoop 1

hi 2

everyone 1

第三步:配置ssh驗證

(1) 依次登入登入到 hadoopsrv01,hadoopsrv02,hadoopsrv03,先進行(1),(2),(3)操作,然後進行第(4)步驟操作:

(1):su - grid

(2): ssh-keygen -t rsa  全部預設,直接回車,不需要輸入任何東西。

(3): cd .ssh 進入.ssh目錄

(4):  

hadoopsrv01上:

scp id_rsa.pub 

hadoopsrv02上:

hadoopsrv03上:

(2) 測試

ssh hostname 如果不需要輸入密碼就證明設定成功了。