大数据初学者需要看看的Hadoop问题及解决方案

1、namenode无法启动,不报错

可能原因是:之前用root启动过,导致current文件夹的权限和所属更改了,需要更改回来

解决:current文件夹位于hadoop安装目录同级目录的tmp/dfs/namesecondary

2、WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo

原因:查看本地文件:

[root@db96 hadoop]# file /usr/local/hadoop/lib/native/libhadoop.so.1.0.0
/usr/local/hadoop/lib/native/libhadoop.so.1.0.0: ELF 32-bit LSB shared object,
Intel 80386, version 1 (SYSV), dynamically linked, not stripped
是32位的hadoop,安装在了64位的linux系统上。lib包编译环境不一样,所以不能使用。

解决:重新编译hadoop.就是重新编译hadoop软件。

3、Hadoop 报错be replicated to 0 nodes, instead of 1

原因(1)namespaceid不相同(2)没有足够的硬盘

解决(1)停止datanode(2)删除datadir下所有数据。(3)重启datanode

4、The ratio of reported blocks 0.0000 has not reached the threshold 0.9990. Safe mode will be turned off automatically.

原因:由日志可以看出无法删除/home/hadoop/tmp/mapred/system.(其实这只是一种假象,往往我们会去纠结于这个目录,其实不然)

解决:

(1):终极办法强制退出安全模式(safemode)

hadoop dfsadmin -safemode leave

这种方式虽然快,但会有遗留问题,我在用habse的时候就遇到过,很麻烦,然后你就用“hadoop fsck /”工具慢慢恢复吧。

(2):删除namenode下/home/hadoop/tmp下的所有文件,重新format,当然这种方式非常暴力,因为你的数据完全木有了

(3):参考源码可发现这个错误是在检查file的时候抛出来的,基本也就是file的block丢失、错误等原因造成的。

这种情况在副本数为1的情况下会很棘手,其他的时候hadoop基本能自行解决,错误数很多的情况下就会一直处于safemode下,当然你关于集群修改配置文件后的分发,本人写了一个配置文件分发工具可以强制离开安全模式,先保证正常读写,然后再启用“hadoop fsck /”工具慢慢修复。

5、Access denied for user ‘root’@‘hadoop1master’ (using password: YES)

原因:没有除本地用户的其他用户远程连接

解决:修改mysql表,将localhost修改为%

6、运行本地的wordcount报错

该错误是缺少hadoop.dll(hadoop2.6.0编译的版本)文件,需要将hadoop.dll拷贝到hadoop2.6.0/bin目录下。

再次运行没有报错。

7、运行api的时候报了权限问题,使用的是hadoop,而我们想使用root

原因:配置环境变量中设置了HADOOP_USER_NAME=hadoop或者在run configuration中设置的-DHADOOP_USER_NAME=hadoop

解决:将配置环境变量中设置成HADOOP_USER_NAME=root或者在run configuration中设置的-DHADOOP_USER_NAME=root

8、org.apache.hadoop.dfs.SafeModeException:Name node is in safe mode安全模式

解决方法:bin/hadoop dfsadmin -safemode leave也就是关闭Hadoop的安全模式,这样问题就解决了。

9、用java -jar执行hadoop的job报错

原因:用hadoop的mapreduce变成,在执行的时候需要依赖hadoop的大部分依赖,所以上述错误是缺少hadoop的依赖包

解决:(1)建议使用hadoop -jar 执行job(2)如果使用java -jar,需要使用java -cp 把hadoop依赖的所有jar拼接到路径里面去(3)如果使用java -jar,另一种是在打包的时候把hadoop依赖的jar一起打包进去

10、运行mr程序报UnsatisfiedLinkError:nativeio.NativeIO$Windows.access0(Ljava/lang/String

一般这个问题是由本地hadoop环境变量照成的。需要设置hadoop_home变量的值。注意hadoop安装目录下,bin目录中缺少hadoop.dll和winutils.exe等动态库。还要增加bin目录到path路径。另外编辑器需要添加hadoop环境 还要注意jdk等是否正确安装。

11、在使用hdfs的copyfromlocal上传文件到hdfs时,爆出本地文件找不到异常,但是查看本地文件确实存在

原因:windows设置了隐藏已知文件的扩展名功能,导致上传的文件没有写扩展名

解决:在上传文件的地方添加上扩展名即可。

12、在执行hadoop-deamon.sh start xxx时报错

原因:启动的时候,节点名写错了

解决:修改名字,名字有, namenode datanode等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值