hadoo安装常见问题

遇到问题以后先查看日志,以下是常见的错误情况及解决方法,希望对大家有所帮助。

1、启动hadoop时没有NameNode的可能原因:

(1) NameNode没有格式化

(2) 环境变量配置错误

(3) Ip和hostname绑定失败

2、地址占用

报错:org.apache.hadoop.hdfs.server.namenode.NameNode: Address already in use

解决方法:查找被占用的端口号对应的PID:netstat –tunl

  • Pkill -9 PID 实在不行就killall -9 java

3、safeMode

报错:

bin/hadoop fs -put ./input input

put: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/input. Name node is in safe mode.

hadoop dfsadmin -safemode leave

解决方法:

NameNode在启动的时候首先进入安全模式,如果dataNode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统一直处于安全模式状态,即只读状态。

dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0999倍才可以离开安全模式,否则一直是这种只读模式。如果设置为1,则HDFS一直处于安全模式。

下面这行摘录自NameNode启动时的日志(block上报比例1达到了阈值0.999)

The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 14 seconds.

有两种方法离开这种安全模式:

(1) 修改dfs.safeMode.threshold.pct为一个比较小的值,缺省是0.999;

(2) hadoop dfsadmin –safemode leave命令强制离开

用户可通过dfsadmin –safemode value来操作安全模式,参数value说明如下:

Enter : 进入安全模式

Leave :强制NameNode离开安全模式

Get : 返回安全模式是否开启的信息

Wait:等待,一直到安全模式结束。

4、could only be replicatied to 0 nodes, instead of 1

报错:

hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop

.ipc.RemoteException: java.io.IOException: ... could only be replicated to 0 nodes, instead of 1 ...

可能出现的现象:用jps查看进程都正常。但是用web查看的话,live nodes 为0,这说明datanode没有正常启动,可是datanode进程又启动了。

解决方法:

(1) 防火墙原因:

  • 永久关闭防火墙命令:chkconfig iptables stop

(2) 磁盘空间原因:

  • df –ah #查看磁盘空间

如果是磁盘空间不够,则调整磁盘空间(像下图就是磁盘空间不够)

  • https://img-blog.youkuaiyun.com/20140315235931984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZWFzeWhhZG9vcA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

如果上述方法不行,可用以下方法(只不过会丢失数据,慎用)

A. 先运行stop-all.sh

B. 格式化namenode,不过在这之前先删除原目录,

即core-site.xml下配置的<name>hadoop.tmp.dir</name>指向的目录,

删除后切记重新建立配置的空目录,然后运行命令hadoop namenode-format。

5、启动时报错java.net. UnknownHostException

原因分析:通过localhost.localdomain根本无法映射到一个IP地址。

解决方法:查看/etc/hosts,将主机名hostname添加到hosts文件中。

6、启动时报错: java.io.IOException: File jobtracker.info could only be replicated to 0 nodes, instead of 1。

解决方法:

首先,检查防火墙是否关闭,是否对各节点的通信产生了影响;

其次,可以检查namenode和datanode中的namespaceID的值是否相同,在不同的情况下,会造成该问题,修改为相同的值后,重启该节点;

然后,将safemode设置为off状态

Hadoop dfsadmin –safemode leave

此外,还需检查/etc/hosts文件中主机名的映射是否正确,不要使用127.0.0.1或localhost。

将safemode设置为off状态可以有两种方法:

执行上面的命令可以强制设置为off状态,或者在hdfs-site.xml文件中添加如下代码,将safemode的threshold.pct设置为较小的值,这种方法避免了在执行hadoop过程中经常性遇到错误Name node is in safe mode而导致需强制将safemode置为off。

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片 1. <span style="font-size:18px;"><property>

  1. <name>dfs.safemode.threshold.pct</name>

  2. <value>0.95f</value>

  3. </property>

  4. </span>

7、ip和域名解析问题

也会造成File jobtracker.info could only be replicated to 0 nodes, instead of 1的问题,此时要检查/etc/hosts文件中主机名的映射是否正确,127.0.1 对应的名称不能为空或者其他不存在的主机名

8、hive执行报错: java.lang.OutOfMemoryError: GC overhead limit exceeded(没有试验过,仅作为参考)

原因:

这个是jdk6新增的错误类型,是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。

解决方法:

关闭该功能,可以添加JVM的启动参数来限制使用内存:

在mapred-site.xml里新增项:mapred.child.java.opts,

内容:-XX:-UseGCOverheadLimit

9. FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: Java heap space

单个shuffle能够消耗的内存占reduce所有内存的比例,默认值为0.25。Expert”专家模式”,说的很唬人。。

mapred-site.xml中,降低mapreduce.reduce.shuffle.memory.limit.percent这个参数应该可以使得程序选择OnDiskMapout而不是选择InMemory,调低至0.06在测试,顺利执行,不再报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值