环境: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/