三二互联专业提供速度最快最稳定的美国服务器、香港服务器。中美直连,亚洲优化![ 代理登陆 ] [ 付款方式 ] [ 找回密码 ][ 电子协议责任书 ]
硬件资源保障

采用高配品牌服务器

主流强悍CPU配置

确保服务高速稳定运行

中美直连线路

中美直连亚洲优化

采用中国CN2骨干网络

保证速度飞快稳定高效

Hadoop开发过程中常见问题即解决方案

美国、香港服务器

Hadoop开发过程中常见问题即解决方案

01-04   来源:

 核心内容:

1、Hadoop开发过程中常见问题即解决方案


在Hadoop开发的过程中,我们总是遇到各种各样的问题,今天就整理总结一下:

万能的解决方案:6个检查+具体日志

在Hadoop开发的过程中如果遇到各种异常,首先使用jps命令查看节点的启动是否正常,然后在去查看相关的日志文件,但是在查看相关日志之前,你可以先检查一下面几点:
1、防火墙原因:检查各个节点的防火墙是否关闭成功。(重点是检查NameNode)




view source

print

?



1.


[root@hadoop11 ~]# service iptables status


2.


iptables: Firewall is not running.

2、检查IP地址与主机名的映射关系是否绑定成功




view source

print

?



1.


[root@hadoop11 ~]# more /etc/hosts


2.


127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4


3.


10.187.84.50 hadoop11


4.


10.187.84.51 hadoop22


5.


10.187.84.52 hadoop33


6.


10.187.84.53 hadoop44


7.


10.187.84.54 hadoop55


8.


10.187.84.55 hadoop66

3、检查NameNode是否处于安全模式




view source

print

?



1.


[root@hadoop11 ~]# hadoop dfsadmin -safemode get


2.


DEPRECATED: Use of this script to execute hdfs command is deprecated.


3.


Instead use the hdfs command for it.


4.


 


5.


Safe mode is OFF

4、检查NameNode是否已经进行了格式化处理




view source

print

?



1.




2.


hadoop.tmp.dir


3.


/usr/local/hadoop/tmp


4.



5、检查配置文件的配置是否成功
6、检查NameNode节点和DataNode节点中存放的namespaceID的版本号是否相同




view source

print

?



01.


[root@hadoop11 current]# pwd


02.


/usr/local/hadoop/tmp/dfs/name/current


03.


[root@hadoop11 current]# more VERSION


04.


#Wed Nov 02 21:27:01 CST 2016


05.


namespaceID=1890187682


06.


clusterID=CID-6a82f5f4-a705-4a20-bfda-ee5e9a69c3de


07.


cTime=0


08.


storageType=NAME_NODE


09.


blockpoolID=BP-574118934-10.187.84.50-1478093221696


10.


layoutVersion=-56


11.


 


12.


 


13.


[root@hadoop44 current]# pwd


14.


/usr/local/hadoop/tmp/dfs/data/current/BP-574118934-10.187.84.50-1478093221696/current


15.


[root@hadoop44 current]# more VERSION


16.


#Sun Nov 27 09:37:03 CST 2016


17.


namespaceID=1890187682


18.


cTime=0


19.


blockpoolID=BP-574118934-10.187.84.50-1478093221696


20.


layoutVersion=-55

好的,当我们查看完上述6点之后如果还没有解决问题,那我们再去查看相关的日志文件即可。
OK,到现在为止我在给大家介绍一下在开发过程中经常遇到的几个异常问题:

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

这个问题对于Hadoop的初学者是经常遇到的,之所以出现这个问题,可能有3点原因:
1、NameNode没有进行格式化处理(6个检查以包括)
先删除hadoop.tmp.dir所对应的目录(即logs和tmp),然后对NameNode进行格式化处理




view source

print

?



1.




2.


hadoop.tmp.dir


3.


/usr/local/hadoop/tmp


4.




5.



2、检查IP地址与主机名的映射关系是否绑定成功(6个检查以包括)
3、检查配置文件的配置是否成功(6个检查以包括),重点是hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml和slaves。

2、Name node is in safe mode.

例如:
这里写图片描述
原因:NameNode在刚开始启动的时候会进入到安全模式,倒计时30s后退出,在安全模式下会不能进行增、删、改操作,只能进行查看操作。但是如果数据节点DataNode丢失的block块达到一定比例的话则系统一直处于安全模式,即只读状态。
解决方法:
1、在HDFS的配置文件hdfs-site.xml中,修改dfs.safemode.threshold.pct所对应的数值,将其数值改成一个较小的数值,默认的数值是0.999f。




view source

print

?



01.




02.


dfs.safemode.threshold.pct


03.


0.999f


04.




05.


Specifies the percentage of blocks that should satisfy


06.


the minimal replication requirement defined by dfs.replication.min.


07.


Values less than or equal to 0 mean not to wait for any particular


08.


percentage of blocks before exiting safemode.


09.


Values greater than 1 will make safe mode permanent.


10.




11.



2、执行命令 hadoop dfsadmin -safemode leave 强制NameNode离开安全模式。(6个检查以包括)




view source

print

?



1.


[root@hadoop11 hadoop]# hadoop dfsadmin -safemode leave


2.


DEPRECATED: Use of this script to execute hdfs command is deprecated.


3.


Instead use the hdfs command for it.


4.


 


5.


Safe mode is OFF

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

例如:
这里写图片描述
这里写图片描述
这个异常可能出现的现象:执行命令jps显示的进程都很正常,但是用web界面查看的话,显示的live nodes为0,这说明数据节点DataNode没有正常启动,但是数据节点DataNode又正常启动了。
这个问题可能出现的原因:
1、防火墙原因,检查所有节点的防火墙是否关闭成功。(6个检查以包括)
2、磁盘空间原因:执行命令df -al 查看磁盘空间的使用情况,如果是磁盘空间不足的话,则调整磁盘空间。
这里写图片描述
如果是磁盘空间不足的话,具体进行下面的步骤在进行查看:




view source

print

?



01.


[root@hadoop66 local]# cd /


02.


[root@hadoop66 /]# ls


03.


bin dev home lib64 media mnt opt root selinux sys usr


04.


boot etc lib lost+found misc net proc sbin srv tmp var


05.


[root@hadoop66 /]# du -sh * (这个命令很重要)


06.


7.6M bin


07.


27M boot


08.


264K dev


09.


36M etc


10.


5.4G home


11.


142M lib


12.


26M lib64


13.


16K lost+found


14.


4.0K media


15.


0 misc


16.


4.0K mnt


17.


0 net


18.


8.0K opt


19.


du: cannot access `proc/14788/task/14788/fd/4": No such file or directory


20.


du: cannot access `proc/14788/task/14788/fdinfo/4": No such file or directory


21.


du: cannot access `proc/14788/fd/4": No such file or directory


22.


du: cannot access `proc/14788/fdinfo/4": No such file or directory


23.


0 proc


24.


2.6G root


25.


15M sbin


26.


0 selinux


27.


4.0K srv


28.


0 sys


29.


252K tmp


30.


31G usr


31.


256M var

3、如果上述方法都不行的话,可用以下方法进行处理(但是该方法会造成数据的丢失,所以慎用!)
先删除hadoop.tmp.dir所对应的目录,然后对NameNode重新进行格式化处理。(6个检查以包括)

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

原因:集群中的主机名没有映射到相应的IP地址(6个检查以包括)
解决方法:在/etc/hosts文件中添加所有节点的主机名与IP地址的映射关系。




view source

print

?



1.


[root@hadoop11 ~]# more /etc/hosts


2.


127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4


3.


10.187.84.50 hadoop11


4.


10.187.84.51 hadoop22


5.


10.187.84.52 hadoop33


6.


10.187.84.53 hadoop44


7.


10.187.84.54 hadoop55


8.


10.187.84.55 hadoop66

5、TaskTracker进程启动了,但是DataNode进程没有启动

解决方法:先删除hadoop.tmp.dir所对应的文件夹,然后对NameNode重新进行格式化处理。




view source

print

?



1.




2.


hadoop.tmp.dir


3.


/tmp/hadoop-${user.name}


4.


A base for other temporary directories.


5.



6、java.lang.OutOfMemoryError

原因分析:出现这个异常,明显是JVM内存不足的原因,要修改所有数据节点DataNode所对应的JVM内存大小。
方法:在MapReduce的配置文件mapred-site.xml中,修改mapred.child.java.opts所对应的数值。




view source

print

?



1.




2.


mapred.child.java.opts


3.


-Xmx200m


4.



注意:一般JVM的最大内存使用应该为总内存大小的一半,例如我们的服务器的内存大小为4G,则设置为2048m,但是这个值可能依旧不是最优的数值。其中
-Xms 表示内存初始化的大小,-Xmx表示能够使用的最大内存。
在linux 下查看服务器内存的硬件信息:




view source

print

?



1.


[root@hadoop11 ~]# cat /proc/meminfo |grep MemTotal


2.


MemTotal: 3871080 kB

7、Incompatible namespaceIDs in

原因分析:每次对NameNode格式化之后都会产生一个新的namespaceID,如果多次对NameNode格式化的话可能导致NameNode节点和DataNode节点中存放的版本号不一致。
解决方法:
1、在NameNode节点和DataNode节点中检查namespaceID的版本号是否相同,如果不相同的话,修改为相同的值后然后重新启动该节点。(6个检查以包括)
2、先删除hadoop.tmp.dir所对应的目录,然后对NameNode重新进行格式化处理。(6个检查以包括)
上面这些就是我在开发过程中经常遇到的一些问题,希望对大家有所帮助。

三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快

上一篇:在进行使用数据库服务器可能会经常遇到的问题 下一篇:centos网卡变化无法联网恢复

美国GIA服务器三二互联版权所有 WWW.222.cc 2008-2015 All Rights Reserved
三二互联 - 专业的美国C3服务器香港vps、抗DOOS流量清洗、云备份系统、网站加速系统、美国GIA服务器和香港云服务器产品提供商
三二互联24小时在线工单系统为您提供全面、专业、周到的技术支持与服务
咨询热线:400-679-9994(免长话费)