環境: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的流程大概是這樣:
start-mapred.sh的流程相似:
注: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/