您的位置:首页 > 运维架构

配置hadoop出现的问题

2010-07-14 21:13 85 查看
1、No route to host

防火墙问题 关掉即可

service iptables stop

如果出现不能识别iptables ,请用su -l root登陆

上命令只会使用当次机器运行有效,机器重启会又会无效!

2、跑mapreduce程序时,map很快就完成,但是reduce到16.66%的时候就卡住了,在50030/jobtracker.jsp可以看到报错: Too many fetch-failures

具体可以查看datanode logs里面对应的job的日志,发现

报错java.io.FileNotFoundException: http://localhost.localdomain:50060/mapOutput?job=job_201005261703_0046&map=attempt_201005261703_0046_m_000001_0&reduce=0

这里假设reduce是在机器test71上面进行的,而map的数据map=attempt_201005261703_0046_m_000001在test76上面,而localhost却在test71上面找,肯定找不到,所以报错……

解决办法:

1、在http://****:50070/dfshealth.jsp上面确保各个node的名字不一样,并且绝对不能是localhost

2、如果node显示是localhost,得修改对应机器上面的 /etc/sysconfig/network 文件,设置HOSTNAME,比如设置HOSTNAME=test76,之后重启才能生效!

下面是安装步骤:

1、给每台机器安装jdk,

如出现依赖报错: xxxxxx is needed by xxxxxx , 请使用rpm --force来安装

2、修改每台机器的/etc/hosts文件,需要root身份,确保每台机器的添加进去。确保节点之间都能ping 通

3、配置namenode到每个datanode的ssh免登陆

Hadoop需要namenode到datanode的无密码SSH,所以需要设置namenode到其他3台datanode的无密码公钥认证方式的SSH。
首先用hadoop用户登录每台机器(包括namenode),在/home/hadoop/目录下建立.ssh目录,并将目录权设为:drwxr-xr-x,设置命令:
chmod 755 .ssh
在namenode执行入下图命令(用新建的hadoop用户登录):
输入ssh-keygen -t rsa后,
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Enter same passphrase again:
这三个项目都直接回车。
然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/hadoop/.ssh/authorized_keys文件中,
如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,
如果没有authorized_keys这个文件,直接cp或者scp就好了,
下面的操作假设各个机器上都没有authorized_keys文件。
具体命令:
在namenode执行(用新建的hadoop用户登录):
cp /home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/authorized_keys
scp authorized_keys test162.sqa:/home/hadoop/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即test162.sqa机器上hadoop帐户的密码(hadoop),
当然,也可以用其他方法将authorized_keys文件拷贝到其他机器上。另外2台datanode也一样拷贝。
scp authorized_keys test163.sqa:/home/hadoop/.ssh/scp authorized_keys test164.sqa:/home/hadoop/.ssh/
用hadoop用户登录每台机器,修改/home/hadoop/.ssh/authorized_keys文件的权限为:-rw-r–r–,设置命令:
cd /home/hadoop/.ssh
chmod 644 authorized_keys
设置完成后,测试一下namenode到各个节点的ssh链接,包括到本机,如果不需要输入密码就可以ssh登录,说明设置成功了。
其他机器一样测试:
ssh test162.sqassh test163.sqassh test164.sqa

4、有防火墙的都关掉

5、通过

http://namenode-ip:50070来查看具体的集群情况;

http://namenode-ip:50030来查看具体的job情况;

6、定位错误的方法:

通过http://namenode-ip:50030来查看具体的每个task的运行,找出失败的task所在的主机,并在logs/user/对应的Task Attempts/syslog 文件中查看错误发生的原因。

hadoop的问题多半是由于节点的互通问题,网络问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: