硬件资源:
三台CentOS5.6虚拟机(Vmware)
本机 windows7 64x
基本资源配置:
三台虚拟机均是克隆自同一个镜像
已经安装了Java环境(jdk1.6.0_25)
Hadoop路径在/usr/hadoop/hadoop-0.20.205.0
操作步骤:
1、机器名称规范
ip分别为128、129、130,将128设置为master,其他设置为slave
修改
/etc/sysconfig/network
/etc/hosts
两处配置,名称分别为hadoop-master\hadoop-slave01\hadoop-slave02
注意:此处名称最好不用使用下划线,有可能引发namenode的启动异常。
2、修改Hadoop配置
在master节点的conf中修改master和slave文件,分别为机器的ip地址
修改master节点的conf中:
core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://ip-master:9000</value>
</property>
mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
hdfs-site.xm
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
注意此处的端口号均为默认。
3、建立m-s之间的ssh连接
首先master与slave机器都需要进行ssh信任文件生成,执行如下命令:
$ ssh-keygen -t rsa
中间需要输入的地方直接回车,接受缺省值即可
由于使用root用户登录,所以密钥文件生成在 /root/.ssh/文件夹下,存有一对密钥id_dsa和id_dsa.pub。
此处id_dsa(私钥)必须为其他用户不可读,所以文件属性应当是600
在master机器执行:
将id_dsa.pub(公钥)复制为 authorized_keys
$ cp id_dsa.pub authorized_keys
如果是多台机器需要,无密码登陆,则各自机器产生公钥追加到authorized_keys即可.
使用scp协议覆盖slave端的密钥文件夹,使得slave机器信任来自master的连接:
$ scp /root/.ssh/* ip-slave:/root/.ssh
4、启动服务
建议将$HADOOP_HOME/bin下的所有文件给与执行权限:
$ chmod 777 bin
master作为namenod需要执行如下脚本:
$HADOOP_HOME/bin/hadoop namenode –format
完成后执行 $HADOOP_HOME/bin/start-all.sh
5、问题检查
在Hadoop根目录下的logs文件中,检查各个服务日志的启动情况
6、其他情况说明:
Q: $HADOOP_HOME is deprecated
A: 基本不会产生任何影响。由于脚本启动时设置了该环境变量,就会提示用户原有环境变量失效。可以取消环境变量设置,或者直接去bin/hadoop中找到这句话,去掉即可
Q: 无效的选项 -jvm / Unrecognized option: -jvm
A: 在使用root用户登录时 bin/hadoop 脚本就会进行判断,加上-jvm参数。此处是为了进入jsvc(http://commons.apache.org/daemon/jsvc.html),此处并不确定是否bug,也不再进行详细的追溯,解决方法就是进入 bin/hadoop 脚本中 找到 jvm 参数并去掉。