大数据初学者需要看哪些Hadoop问题和解决方案?
1,namenode无法启动,未报告错误。
可能的原因是之前由root启动,改变了当前文件夹的权限和所有权,需要改回来。
解决方案:当前文件夹位于与hadoop安装目录同级的tmp/dfs/namesecondary中。
2、警告util。NativeCodeLoader:无法为您的平台加载本机hadoop库
原因:查看本地文件:
[root @ db96 Hadoop]# file/usr/local/Hadoop/lib/native/lib Hadoop . so . 1 . 0 . 0
/usr/local/Hadoop/lib/native/libhadoop . so . 1 . 0 . 0:ELF 32位LSB共享对象,
英特尔80386,1版(SYSV),动态链接,非剥离
它是安装在64位linux系统上的32位hadoop。Lib包编译环境不同,无法使用。
解决方法:重新编译hadoop。也就是重新编译hadoop软件。
3、Hadoop错误被复制到0个节点,而不是1。
原因(1)namespaceid不同(2)硬盘不足。
解决方案(1)停止datanode(2)删除datadir下的所有数据。(3)重启datanode
4、报告块的比率0.0000没有达到阈值0.9990。安全模式将自动关闭。
原因:从日志中可以看出/home/hadoop/tmp/mapred/system无法删除(其实这只是一种错觉,我们经常纠结于这个目录,其实并不是)。
求解:
(1):最终的解决方案是强制退出安全模式。
Hadoop DFS admin-安全模式离开
这种方法虽然快,但是会有遗留问题,我在使用habse的时候就遇到过。很麻烦,然后可以用“hadoop fsck/”工具慢慢恢复。
(2):删除namenode /home/hadoop/tmp下的所有文件,并格式化。当然这种方法很暴力,因为你的数据完全没了。
(3):参考源代码,可以发现这个错误是在检查文件的时候抛出的,基本上是文件的块丢失错误造成的。
这种情况在份数为1时会很困难。其他时候hadoop基本可以自己解决,错误多的时候会一直处于safemode。当然,关于修改配置文件后集群的分发,我写了一个配置文件分发工具,可以强制其离开安全模式,保证正常读写,然后启用“hadoop fsck/”工具慢慢修复。
5、拒绝用户“root”@“Hadoop 1 master”的访问(使用密码:是)
原因:除了本地用户,没有来自其他用户的远程连接。
解决方案:修改mysql表并将localhost改为%
6.运行本地wordcount来报告错误。
错误在于文件Hadoop。dll(Hadoop 2 . 6 . 0编译的版本)丢失,需要将hadoop.dll复制到目录hadoop2.6.0/bin。
再次运行,没有错误。
7.运行api的时候,我报了权限问题,用的是hadoop,我们想用root。
原因:在配置环境变量中设置了HADOOP_USER_NAME=hadoop或者在运行配置中设置了-DHADOOP_USER_NAME=hadoop。
解决方案:在配置环境变量中设置HADOOP_USER_NAME=root,或者在运行配置中设置-DHADOOP_USER_NAME=root。
8.org.apache.hadoop.dfs.safemode异常:name节点处于safemode安全模式。
解决方法:bin/Hadoop DFS admin-safe mode leave就是关闭Hadoop的安全模式,这样问题就解决了。
9、使用java -jar执行hadoop作业出错。
原因:带有hadoop的mapreduce在执行时变得依赖hadoop的大部分依赖项,所以上面的错误是缺少hadoop的依赖包。
解决方案:(1)建议使用hadoop -jar执行作业。(2)如果使用java -jar,需要使用java -cp将hadoop所依赖的所有jar拼接到路径中。(3)如果使用java -jar,另一种是打包时将hadoop所依赖的jar打包在一起。
10.运行mr程序并向UNSATISFIEDLINKERROR:native io报告。nativio $ windows . access 0(ljava/lang/string。
通常,这个问题是由本地hadoop环境变量来说明的。你需要设置hadoop_home变量的值。注意,hadoop安装目录下的bin目录中缺少动态库,如hadoop.dll和winutils.exe。还要将bin目录添加到路径中。另外,编辑需要添加hadoop环境,注意jdk是否安装正确。
11.使用hdfs的copyfromlocal将文件上传到hdfs时,在本地文件中发现异常,但本地文件确实存在。
原因:windows设置了隐藏已知文件扩展名的功能,导致上传的文件没有写扩展名。
解决方法:在文件上传的地方加一个扩展名就可以了。
12.执行hadoop-deamon.sh start xxx时报告错误。
原因:启动时,节点名称拼写错误。
解决方法:修改名称,名称是,namenode datanode等。
13,hadoop 8088看不到mapreduce任务的执行状态,没有数据显示。
解决方案:
(1)首先,检查配置$ Hadoop _ home/conf/map red-site . XML是否存在于您的集群中。
是否配置了mapreduce.framework.name。
(2)如果没有,请在$ Hadoop _ home/conf/map red-site . XML中的原始配置文件中添加以下内容。
MapReduce . job history . address name & gt;
master:10020 value & gt;
属性& gt
MapReduce . job history . web app . address name & gt;
master:19888 value & gt;
属性& gt
14、保安。AccessControlException:用户sunqw的访问被拒绝。需要超级用户权限
解决方案:
模式1:
将HADOOP_USER_NAME添加到系统环境变量中,其值为root
或者通过java程序动态添加,如下所示:
1 system . set property(" HADOOP _ USER _ NAME "," root ");
模式2:
在非hadoop操作下使用Eclipse写入hdfs文件系统时,由于sunqw对“/”目录没有写权限,所以会出现异常。解决方法是在hadoop中打开HDFS目录的权限,命令如下:hadoop fs -chmod 777/。
模式3:
修改hadoop的配置文件:conf/hdfs-core.xml,添加或修改dfs.permissions的值为false。
模式4:
将Eclipse所在机器的名称改为root,与服务器上运行的hadoop的名称保持一致。