Hadoop入門進階步步高(五)-搭建Hadoop集羣

5、搭建Hadoop集羣

上面的步驟,確認了單機能夠執行Hadoop的僞分佈執行,真正的分佈式執行無非也就是多幾臺slave機器而已,配置方面的有一點點區別,配置起來就很是簡單了。node

1、準備三臺服務器

192.168.56.101nginx

192.168.56.102ubuntu

192.168.56.103服務器

在每臺機器的/etc/hosts中都將iphostname給映射上:ssh

192.168.56.101  nginx1分佈式

192.168.56.102  nginx2oop

192.168.56.103  nginx3字體

其中192.168.56.101爲前面配置的那臺服務器,用於作爲namenodejobtracker,另外兩臺用於作slaves,用於執行datanodetasktrackerspa

要使某臺服務器成爲namenode,必須在要core-site.xml中指定它;要使某個節點成爲jobtracker,必須在mapred-site.xml指定它,這個參見第5點中的core-site.xml以及mapred-site.xml的配置。.net

Hadoop來講,從hdfs的角度來看有namenodedatanodenamenode只可以有一個,而datanode能夠有多個,namenode存放的是datanode中文件的元數據,客戶端經過namenode獲取datanode中文件的信息;從jobtracker角度來講看有jobtrackertasktrackerjobtracker只可以有一個,而tasktracker能夠有多外,tasktracker經過jobtracker來調度。

在本例中使用192.168.56.101作爲namenodejobtracker,使用192.168.56.102作爲secondarynamenodedatanode以及tasktracker,使用192.168.56.103作爲datanode以及tasktracker,詳情參見下面的配置。

2、三臺服務器要具備一致的配置信息

1)、JDK的路徑必須相同;

2)、操做Hadoop的用戶必須相同;

3)、Hadoop的存放路徑必須相同;

Slave機器上的hadoop可直接將namenode上面的hadoop拷貝過去,不用作任何修改,只要路徑放置就能夠了;

4)、每臺機器~/.ssh目錄下存放相同的id_rsaauthorized_keys

namenode的機器上的~/.ssh/id_rsaauthorized_keys拷貝到每臺slave機器上的~/.ssh中,固然slave機器中也必須是安裝了ssh的了,而後在每臺機器上都經過ssh訪問一下其它的兩臺機器,確保都是能夠不輸入密碼訪問的。

5)、三臺機器的/etc/profile中的內容相同;

3、修改$HADOOP_HOME/conf/slaves文件

這個文件存放的是全部datanodeIP或者機器名,每行指定一個。咱們這裏使用nginx2nginx3來作爲datanode,所以slaves文件的配置以下:

nginx2

nginx3

 

4、修改$HADOOP_HOME/conf/masters文件(此例中可選)

masters文件中放置的是secondarynamenode的機器名,其中默認的內容爲「localhost」,可是在生產環境中,確定不會將namenodesecondarynamenode放置在同一臺服務器上,在此例中我就將secondarynamename設置在第二臺服務器上,那麼此時文件中的內容應該以下:

#這裏只使用一臺作爲secondarynamenode

nginx2

#nginx3

5、修改core-site.xmlmapred-site.xmlhdfs-site.xml

只須要作簡單的修改就能夠了,不一樣點以紅色字體標識出。

core-site.xml:

<configuration>  

  <property>  

    <!-- 用於設置Hadoop的文件系統,由URI指定,value對應的服務器就是namenode所在的服務器及端口,secondarynamenode經過在masters這個文件中指定 -->

    <name>fs.default.name</name>  

    <value>hdfs://nginx1:9000</value>  

  </property>  

  <property>

<!-- 配置Hadoop的臨時目錄,默認在/tmp目錄下,可是/tmp上面可能會被系統自動清理掉。-->

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

<!-- 目錄若是不存在,須要手動建立 -->

    <value>/home/fenglibin/hadoop_tmp</value>

    <description>A base for other temperary directory</description>

  </property>

</configuration>  

 

mapred-site.xml

<configuration>  

  <property>  

    <!-- value對應的值爲jobtracker所在的服務器及端口,tasktrackerslaves中指定 -->

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

    <value>nginx1:9001</value>  

  </property>  

</configuration>

 

    hdfs-site.xml

<configuration>  

  <property>

    <!-- 指定其副本數,value的值表示副本的數量 -->  

<name>dfs.replication</name>  

<!-- 這裏有兩臺datanode -->

    <value>2</value>  

  </property>  

</configuration>

 

6、啓動驗證

6.1查看進程

DataNode都是經過NameNode啓動起來的,於是啓動的時候只須要在NameNode上執行start-all.sh就能夠了,此時咱們查看各服務器中的進程。

Nginx1NameNode)所在服務器:

fenglibin@ubuntu1110 :/usr/local/hadoop-1.2.1$ jps

2834 NameNode

3011 JobTracker

3108 Jps

Ngnix2

fenglibin@ubuntu11102:~$ jps

984 DataNode

1075 TaskTracker

919 SecondaryNameNode

1420 Jps

Ngnix3

fenglibin@ubuntu11103:~$ jps

1374 Jps

1021 TaskTracker

846 DataNode

從上面的進程信息,能夠看到nginx1中啓動了namenodejobtracker,nginx2nginx3都分別啓動了DataNode及TaskTracker,只是nginx2中比nginx3中多啓動了一個SecondaryNameNode,這也是咱們但願的結果。

經過以下命令:

hadoop dfsadmin -report

可獲得以下輸出:

Warning: $HADOOP_HOME is deprecated.

 

Safe mode is ON

Configured Capacity: 15283421184 (14.23 GB)

Present Capacity: 10592149504 (9.86 GB)

DFS Remaining: 10591629312 (9.86 GB)

DFS Used: 520192 (508 KB)

DFS Used%: 0%

Under replicated blocks: 20

Blocks with corrupt replicas: 0

Missing blocks: 0

 

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

Datanodes available: 2 (2 total, 0 dead)

 

Name: 192.168.56.102:50010

Decommission Status : Normal

Configured Capacity: 7641710592 (7.12 GB)

DFS Used: 307200 (300 KB)

Non DFS Used: 2733502464 (2.55 GB)

DFS Remaining: 4907900928(4.57 GB)

DFS Used%: 0%

DFS Remaining%: 64.23%

Last contact: Sun Jun 15 15:46:39 CST 2014

 

 

Name: 192.168.56.103:50010

Decommission Status : Normal

Configured Capacity: 7641710592 (7.12 GB)

DFS Used: 212992 (208 KB)

Non DFS Used: 1957769216 (1.82 GB)

DFS Remaining: 5683728384(5.29 GB)

DFS Used%: 0%

DFS Remaining%: 74.38%

Last contact: Sun Jun 15 15:46:39 CST 2014

 

 

6.2 集羣狀態監控頁面

查看namenode的狀態

namenode是佈署在192.168.56.101上,只須要輸入:

http://192.168.56.101:50070

便可查看namenode的狀態,以下圖所示:

 

查看jobtracker的狀態

jobtrackernamenode是佈署在同一臺機器上的,輸入:

http://192.168.56.101:50030

便可查看jobtracker的狀態,以下圖所示:

 

查看secondarynamenode的狀態

Secondarynamenode是佈署在192.168.56.102上面,輸入:

http://192.168.56.102:50090

便可查看其狀態,以下:

 

查看192.168.56.102上面的tasktracker的狀態,打入:

http://192.168.56.102:50060

查看狀態,以下:

 

 

從上面能夠看出,監控的服務,都是以「500*」端口對外提供服務,不過這裏發現一個問題,同爲datanode以及tasktracker192.168.56.103上面卻沒有開啓一個「500*」這樣的端口,而192.168.56.102上卻開啓除secondarynamenode以外的其它4個「500*」這樣的端口:

192.168.56.102

 

其中端口50090secondarynamenode的監控端口,而50060tasktracker的監控端口,而5001050075以及50020都是datanode使用的端口。

而在192.168.56.103上,卻只開了兩個端口:

 

分別與namenode以及jobtracker相連着的。

爲何在192.168.56.103上面tasktracker以及datanode的監控呢?

相關文章
相關標籤/搜索