Hadoop真实分布式并行环境部署经验

一、 安装环境

(1) Master机器:用VMServer虚拟的RedHat Linux AS4 Update4操作系统,IP:172.18.190.90。VMServer宿主机是Windows Server2003
(2) Slaves1机器:一台普通PC,操作系统与Master一样。IP:172.18.190.236。
(3) Slaves机器:一台普通PC,操作系统与Master一样。IP:172.18.190.238。

二、 总体步骤

(1) 安装JDK,里面自带jre6。我安装的JDK版本是1.6.0_24.安装完后,在/etc/profile里设置JAVA_HOME,JRE_HOME,PATH,CLASSPATH等环境变量。并新建一java文件测试,用Javac、java命令测试能否编译成功。
(2) SSH一般在安装Linux时已经附加安装,所以只需要配置。命令过程如下:
 ssh-keygen  –t  rsa
 cat id_rsa.pub  >>  authorized_keys
 scp –r id_rsa.pub root@slaves:.ssh/XX.pub
 (登陆slaves用户,吧id_rsa.pub添加到slaves的authorized_keys文件)
 cat XX.pub >> authorized_keys
注:有ssh问题时,有时要修改/etc/ssh/sshd_config文件
(3) 配置路由和机器名
 修改/etc/hosts文件,这里要特别注意hosts文件的格式。同一个机器名,不能在两个IP里出现。例如本机IP为172.18.190.90,机器名为Hadoop.master。在hosts文件中不能这样写:
127.0.0.1           hadoop.master          localhost
172.18.190.90       hadoop.master          hadoop.master
(4) 配置Hadoop
 修改conf文件夹下hadoop-env.sh、core-site.xml、mapred-site.xml、hdfs-site.xml、masters和slaves文件
 进入Hadoop目录,用bin/hadoop namenode –format命令格式化文件系统
 用bin/start-all.sh(或bin/start-dfs.sh、bin/start-mapred.sh分别启动文件系统和Mapreduce)命令启动Hadoop。
 用bin/hadoop dfsadmin –report或bin/hadoop –safemode leave命令查看文件系统启动情况或离开安全模式。

三、 经验教训
(1)所有步骤按网上教程部署完毕后,启动Hadoop,用jps查看,master和slave的进程都是正常启动,但是执行例程就出错。总是报:
WARN org.apache.hadoop.ipc.RemoteException: Java.io.IOException:File /home/hadoop-0.XX.X/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes,instead of 1 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditior(FSNamesystem.java:1271)
在多个Hadoop版本上都是这样。
刚开始束手无策,也不知原因是什么,只会看master上的log。后来经过查阅网上大量资料,去看了slave上的log,发现原来datanode连不了master。在网上一查找到解决方案,先把core-site.xml、mapred-site.xml的地址由机器名改成IP,这次错误变成:

Hadoop真实分布式并行环境部署经验


 
按照上面的提示操作,注释了第一行:127.0.0.1 ,避免了机器名在两个IP出现。OK!Hadoop跑起来了,哈哈

经验总结是:要多看log!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ef363d2dac2073efe44c624740cc5c2c.html