一個4節點Hadoop集羣的配置示例

環境:java

操做系統:CentOS 6.5 64bitnode

Hadoop:Version 1.2.1shell

Servers:hadoopnamenode,hadoop2ndnamenode,hadoopdatanode1,hadoopdatanode2bash

注:爲方便起見,在這4臺server上,我都直接使用root帳戶進行操做ssh

 

下載及環境變量設置:oop

在全部4臺server上:網站

從Apache網站下載hadoop-1.2.1-bin.tar.gz,解壓後放置在某個目錄下,我放在了/usr/local下,爲方便起見,我把目錄hadoop-1.2.1更名爲hadoop。加密

修改.bashrc,添加下面的環境變量:操作系統

export HADOOP_PREFIX=/usr/local/hadooporm

export PATH=$PATH:$HADOOP_PREFIX/bin

 

配置hosts文件:

在/etc/hosts中添加:

153.65.170.11  hadoopnamenode

153.65.170.45  hadoop2ndnamenode

153.65.171.174  hadoopdatanode1

153.65.171.24  hadoopdatanode2

 

配置ssh

在hadoopnamenode上執行:

ssh-keygen//生成公鑰、私鑰

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoop2ndnamenode//將hadoopnamenode的公鑰copy到其它三臺server上

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoopdatanode1

ssh-copy-id   –i   ~/.ssh/id_rsa.pub   root@hadoopdatanode2

這麼作的目的是能夠不須要密碼從hadoopnamenode上ssh到其它三臺server上。通過ssh-copy-id後,這個公鑰實際上會被添加到其它三臺server的~/.ssh/authorized_keys文件中。

例如要從hadoopnamenode登陸hadoop2ndnamenode,其流程大概是:hadoop2ndnamenode向hadoopnamenode發送一段隨機字符串,hadoopnamenode用本身的私鑰加密後,再發回來。hadoop2ndnamenode用事先儲存的hadoopnamenode公鑰進行解密,若是成功,就證實用戶是可信的,直接容許登陸shell,再也不要求密碼。

 

配置Hadoop

通常地,咱們將使用下面的命令啓動hdfs(即name node, secondary name node, data node)及MapReduce:

/usr/local/hadoop/bin/start-dfs.sh

/usr/local/hadoop/bin/start-mapred.sh

start-dfs.sh的流程大概是這樣:

  1. 執行該命令的機器自動成爲name node(以及job tracker),
  2. 啓動/usr/local/hadoop/conf /slaves中列出的全部機器並做爲data node(以及task tracker),
  3. 啓動/usr/local/hadoop/conf /masters中列出的全部機器並做爲secondary name node。

start-mapred.sh的流程相似:

  1. 執行該命令的機器自動成爲job tracker,
  2. 啓動/usr/local/hadoop/conf /slaves中列出的全部機器並做爲task tracker

注:conf/masters文件每每給人帶來困惑,直觀上讓人以爲它是爲配置name node所用,可是由於(1)的緣由,name node是不須要特別配置到conf/masters中,須要配置的只有secondary name node。

 

根據以上描述,咱們能夠開始修改hadoopnamenode上的masters文件,刪除原內容,添加一行:

hadoop2ndnamenode

修改hadoopnamenode上的slaves文件,刪除原內容,添加兩行:

hadoopdatanode1

hadoopdatanode2

 

除此以外,須要在hadoopdatanode1與hadoopdatanode2上做出配置,使得data node知道name node,task tracker知道job tracker。因此分別修改hadoopdatanode1與hadoopdatanode2上的conf/core-site.xml:

<configuration>

  <property>

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

    <value>hdfs://hadoopnamenode:10001</value>

  </property>

</configuration>

及conf/mapred-site.xml:

<configuration>

  <property>

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

    <value>hadoopnamenode:10002</value>

  </property>

</configuration>

 

格式化name node

在hadoopnamenode上執行:

hadoop  namenode  -format

 

啓動Hadoop

首先,在hadoopnamenode上執行下面命令來啓動全部name node, secondary name node, data node:

start-dfs.sh

可使用jps命令在4臺server上查看當前運行的java進程,正常狀況你會看到:

hadoopnamenode上有進程:NameNode

hadoop2ndnamenode上有進程:SecondaryNameNode

hadoopdatanode1/hadoopdatanode2上有進程:DataNode

其次,在hadoopnamenode上執行下面命令來啓動全部job tracker, task tracker:

start-mapred.sh

繼續使用jps命令在4臺server上查看當前運行的java進程,正常狀況你會看到:

hadoopnamenode上有進程:NameNode, JobTracker

hadoop2ndnamenode上有進程:SecondaryNameNode

hadoopdatanode1/hadoopdatanode2上有進程:DataNode, TaskTracker

 

關閉Hadoop

在hadoopnamenode上:

stop-mapred.sh

stop-dfs.sh

 

其它:

Name node管理界面:http://hadoopnamenode:50070/

Job tracker 管理界面:http://hadoopnamenode:50030/

相關文章
相關標籤/搜索