hadoop1.2.1集羣安裝過程詳解

hadoop集羣安裝過程詳解

一,環境:

1,主機規劃:

集羣中包括4個節點:1Master2Salve,節點之間局域網連接,可以相互ping通。

機器名稱


IP地址


hadoop01


192.168.0.31


hadoop02


192.168.0.32


hadoop03


192.168.0.33


三個節點上均是CentOS6.3 x86_64系統,並且有一個相同的用戶hadoophadoop01做爲master配置NameNodeJobTracker的角色,負責總管分佈式數據和分解任務的執行;另外兩臺配置DataNodeTaskTracker的角色,負責分佈式數據存儲以及任務的執行。安裝目錄統一爲/usr/local

2,軟件版本:

hadoop-1.2.1.tar.gzjdk-7u25-linux-x64.rpm

二,準備工作,三臺機器都需要做 ,將三臺機器selinuxiptables停用。

1,安裝jdk

[root@hadoop01 ~]# rpm -ivh jdk-7u25-linux-x64.rpm

[root@hadoop01 ~]# cd /usr/java/

[root@hadoop01 java]# ls

default jdk1.7.0_25 latest

[root@hadoop01 java]# ln -s jdk1.7.0_25 jdk

[root@hadoop01 java]# vim /etc/profile

163833654.png

[root@hadoop01 java]# source /etc/profile 讓其java命令立即生效

[root@hadoop01 java]# java 執行java命令,如果能正常執行就表示java安裝完成

2,添加一個hadoop用戶,用來運行hadoop集羣

164032405.png

3,做三臺機器之間做雙機互信,原因master通過遠程啓動datanode進程和tasktracker進程,如果不做雙機互信,會導致每次啓動集羣服務都會需要密碼

[root@hadoop01 ~]# vim /etc/hosts

164007967.png

hosts文件分別複製到另外兩臺。

4,切換到hadoop用戶,對其用做雙機互信,先在三臺機器先執行ssh-keygen生成公鑰與私鑰。

164107192.png

將公鑰複製到別的機器,需要對hadoop01hadoop03,都做相同的動作。

164143568.png

[hadoop@hadoop01 ~]$ ssh-copy-id -i hadoop03

[hadoop@hadoop01 ~]$ ssh-copy-id -i hadoop01

5,同步時間,三臺機器啓用ntpd服務,另外兩臺執行相同的操作

[root@hadoop01 ~]# crontab -e

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz &> /dev/null

三,配置master,也就hadoop01

[root@hadoop01 ~]# tar xf hadoop-1.2.1.tar.gz -C /usr/local/

[root@hadoop01 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1

[root@hadoop01 ~]# su - hadoop

[hadoop@hadoop01 ~]$ cd /usr/local/hadoop-1.2.1/

(1)Hadoop的配置文件都存儲在conf下,配置文件解釋

hadoop-env.sh:用於定義hadoop運行環境相關的配置信息,比如配置JAVA_HOME環境變量、爲hadoopJVM指定特定的選項、指定日誌文件所在的目錄路徑以及masterslave文件的位置等;

core-site.xml: 用於定義系統級別的參數,它作用於全部進程及客戶端HDFS URLHadoop的臨時目錄以及用於rack-aware集羣中的配置文件的配置等,此中的參數定義會覆蓋core-default.xml文件中的默認配置;

hdfs-site.xml: HDFS的相關設定,如文件副本的個數、塊大小及是否使用強制權限等,此中的參數定義會覆蓋hdfs-default.xml文件中的默認配置;

mapred-site.xmlmapreduce的相關設定,如reduce任務的默認個數、任務所能夠使用內存的默認上下限等,此中的參數定義會覆蓋mapred-default.xml文件中的默認配置;

masters: hadoopmaster,secondary-masters主機列表,當啓動Hadoop時,其會在當前主機上啓動NameNodeJobTracker,然後通過SSH連接此文件中的主機以作爲備用NameNode;

slavesHadoop集羣的slave(datanode)tasktracker的主機列表master啓動時會通過SSH連接至此列表中的所有主機併爲其啓動DataNodetaskTracker進程;

Hadoop-metrics2.properties:控制metricshadoop上如何發佈屬性

Log4j.properties:系統日誌文件、namenode審計日誌、tarsktracker子進程的任務日誌屬性

(2)修改hadoop-env.sh

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hadoop-env.sh

164348466.png

(3)修改core-site.xml

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/core-site.xml

164416953.png


hadoop.tmp.dir屬性用於定義Hadoop的臨時目錄,其默認爲/tmp/hadoop-${username}HDFS進程的許多目錄默認都在此目錄中,/hadoop/tmp目錄,需要注意的是,要保證運行Hadoop進程的用戶對其具有全部訪問權限。

fs.default.name屬性用於定義HDFS的名稱節點和其默認的文件系統,其值是一個URI,即NameNodeRPC服務器監聽的地址(可以是主機名)和端口(默認爲8020)。其默認值爲file:///,即本地文件系統。

(4)修改hdfs-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hdfs-site.xml

164511467.png

dfs.name.dir屬性定義的HDFS元數據持久存儲路徑,默認爲${hadoop.tmp.dir}/dfs/name

dfs.replication屬性定義保存副本的數量,默認是保存3份,由於這裏只有兩臺slave。所以設置2。

(5)修改mapred-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/mapred-site.xml

164546632.png

(6)編輯masters文件

masters用於指定輔助名稱節點(SecondaryNameNode)的主機名或主機地址

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/masters

164626639.png

(7)編輯slaves文件,這個文件只需在master主機上編輯就行

用於指定各從服務器(TaskTrackerDataNode)的主機名或主機地址

164710190.png

在三臺機器上分別創建兩個目錄:

[root@hadoop01 local]# mkdir -p /hadoop/data

[root@hadoop01 local]# mkdir -p /hadoop/tmp

[root@hadoop01 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop02 local]# mkdir -p /hadoop/data

[root@hadoop02 local]# mkdir -p /hadoop/tmp

[root@hadoop02 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop03 local]# mkdir -p /hadoop/data

[root@hadoop03 local]# mkdir -p /hadoop/tmp

[root@hadoop03 local]# chown -R hadoop:hadoop /hadoop/

(8)配置slave:將配置的hadoop整個目錄複製到hadoop02haoop03

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop02:/usr/local/

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop03:/usr/local/

修改權限:

[root@hadoop02 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/

[root@hadoop03 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/

四,啓動集羣:

1、格式化名稱節點

與普通文件系統一樣,HDFS文件系統必須要先格式化,創建元數據數據結構以後才能使用。

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop namenode -format

210308927.png

如果格式化出錯,一般會提示錯誤,就像下面,已經在提示哪個文件,第幾行,根據提示檢查即可。

210233291.png

[hadoop@hadoop01 ~]$ bin/start-all.sh

210154672.png

[hadoop@hadoop01 ~]$ jps 查看進程是否起來。secondarynamenodenomenodejobtracker三個進程必須都有,才正常

8549 SecondaryNameNode

8409 NameNode

8611 JobTracker

8986 Jps

或者這種方式查看集羣是否正常

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop dfsadmin -report

Safe mode is ON

Configured Capacity: 37073182720 (34.53 GB)

Present Capacity: 32421658624 (30.2 GB)

DFS Remaining: 32421576704 (30.19 GB)

DFS Used: 81920 (80 KB)

DFS Used%: 0%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.0.33:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2325061632 (2.17 GB)

DFS Remaining: 16211488768(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.46%

Last contact: Sat Aug 31 22:25:13 CST 2013

Name: 192.168.0.32:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2326462464 (2.17 GB)

DFS Remaining: 16210087936(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.45%

Last contact: Sat Aug 31 22:25:12 CST 2013

四,排錯思路

1,是否是hadoop.tmp.dirdfs.data.dir屬性,如果定義在別的目錄需要在集羣中所有節點都創建,並讓hadoop用戶能夠訪問

2,查看進程對應的端口是否有在監聽。在上面配置中將namenode的端口定義9000jobtracker定義成9001

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9000

tcp 0 0 ::ffff:192.168.0.31:9000 :::* LISTEN 22709/java

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9001

tcp 0 0 ::ffff:192.168.0.31:9001 :::* LISTEN 22924/java

3,查看日誌,哪個服務沒起來就查看對應的日誌。

4,查看集羣中所有節點的時間是不是一致。

5iptableselinux是否阻止。

6/etc/hosts是否正確。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章