现在的位置: 首页 > 综合 > 正文

hadoop运行常见的错误

2013年01月07日 ⁄ 综合 ⁄ 共 2908字 ⁄ 字号 评论关闭

常见错误:

1.       出现类似:

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs …

的异常,是因为先格式化了 namenode ,后来又修改了配置导致。将 dfs/data 文件夹内容删除,再重新格式化 namenode 即可。

2.       出现类似:

INFO org.apache.hadoop.ipc.Client: Retrying connect to server:…

的异常,首先确认 name node 是否启动。如果已经启动,有可能是 master 或 slave1 中的配置出错,集群配置参考步骤 11 。也有可能是防火墙问题,需添加以下例外:

50010 端口用于数据传输, 50020 用于 RPC 调用, 50030 是 WEB 版的 JOB 状态监控, 54311 是job tracker , 54310 是与 master 通信的端口。

完整的端口列表见:

http://www.cloudera.com/blog/2009/08/hadoop-default-ports-quick-reference/

 

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 50010 -j ACCEPT

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 50020 -j ACCEPT

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 50030 -j ACCEPT

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 50060 -j ACCEPT

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 54310 -j ACCEPT

iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 54311 -j ACCEPT

 

iptables -A OUTPUT -p tcp -m tcp --dport 50010 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 50020 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 50010 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 50020 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 50030 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 50030 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 50060 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 50060 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 54310 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 54310 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --dport 54311 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 54311 -j ACCEPT

 

保存规则:

/etc/init.d/iptables save

重启 iptables 服务:

service iptables restart

如果还是出现问题 2 的错误,那可能需要手工修改 /etc/sysconfig/iptables 的规则。手动添加这些规则。若有 ”reject-with icmp-host-prohibited” 的规则,需将规则加到它的前面。注意修改配置文件的时候,不需要带 iptables 命令。直接为类似于:

-A OUTPUT -p tcp -m tcp --sport 54311 -j ACCEPT

 

或关闭防火墙 ( 建议,因为端口太多,要加的例外很多 )

service iptables stop

 

3.       在 /etc/hosts 文件中,确保一个 host 只对应一个 IP ,否则会出错(如同时将 slave1 指向 127.0.0.1 和192.168.225.66 ),可能导致数据无法从一个节点复制至另一节点。

4.       出现类似:

FATAL org.apache.hadoop.mapred.TaskTracker: Error running child : java.lang.OutOfMemoryError: Java heap space…

的异常,是因为堆内存不够。有以下几个地方可以考虑配置:

a.       conf/hadoop-env.sh 中, export HADOOP_HEAPSIZE=1000 这一行,默认为注释掉,堆大小为1000M ,可以取消注释,将这个值调大一些(对于 16G 的内存,可以调至 8G )。

b.       conf/mapred-site.xml 中,添加 mapred.map.child.java.opts 属性,手动指定 JAVA 堆的参数值为 -Xmx2048m 或更大。这个值调整 map 任务的堆大小。即:

<property>

    <name>mapred.map.child.java.opts </name>

    <value>-Xmx2048m</value>

</property>

c.       conf/mapred-site.xml 中,添加 mapred.reduce.child.java.opts 属性,手动指定 JAVA 堆的参数值为 -Xmx2048m 或更大。这个值调整 reduce 任务的堆大小。即:

<property>

    <name>mapred.reduce.child.java.opts </name>

    <value>-Xmx2048m</value>

</property>

                   注意调整这些值之后,要重启 name node 。

 

5.       出现类似: java.io.IOException: File /user/root/pv_product_110124 could only be replicated to 0 nodes, instead of 1…

的异常,首先确保 hadoop 临时文件夹中有足够的空间,空间不够会导致这个错误。

如果空间没问题,那就尝试把临时文件夹中 dfs/data 目录删除,然后重新格式化 name node :

hadoop namenode -format

注意:此命令会删除 hdfs 上的文件

 

6.       出现类似: java.io.IOException: Broken pipe…

的异常,检查你的程序吧,没准输出了不该输出的信息,如调试信息等。

抱歉!评论已关闭.