大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

Hadoop学习中有遇到的错误

问题1

由于多次format namenode节点导致 namdenode 的 namespaceID 与 datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。

解决:

1、先将Hadoop所有服务停止,stop-all.sh

2、在自己设置的临时文件夹(tmp/dfs/)中将data文件夹删除

3、重新启动Hadoop服务就可以了,start-dfs.sh,用jps查看。

问题2

window下的eclipse,远程连接虚拟机上的ubantu上的Hadoop伪分布式,遇到的问题如下截图:

解决:

1、没有理解好伪分布式与完全分布式

2、自己配置的只是一个用于本地测试的伪分布式环境。

问题3

解决:

在相应的路径下增添winutils.exe,即可。

问题4

-Dmaven.multiModuleProjectDirectory system property is not set.

解决:

添加M2_HOME的环境变量。在myEclipse中,Preference->Java->Installed JREs->Edit 选择一个jdk,添加这句话 ”-Dmaven.multiModuleProjectDirectory=$M2_HOME“ 如图:

问题5

从windows本地使用Hadoop上传或删除文件失败,出现如下问题:

解决方法:

为了安全,HDFS的权限检测机制默认是打开的,关闭之后,才能使用Eclipse插件上传文件到HDFS或者从HDFS中删除文件。为了能在Windows上直接操作Hadoop集群中的HDFS,需要做一些配置,有两种可行方法:

1、如果只在测试环境下,直接把Hadoop集群中的HDFS的权限检测关闭,可在hdfs-site.xml中添加如下变量,重启Hadoop集群即可。

<property> <name>dfs.permissions</name> <value>false</value></property>

2、修改Windows本地主机名。首先,“右击”桌面上图标“我的电脑”,选择“管理”,接着选择“本地用户和组”,展开“用户”,找到当前系统用户,修改其为“hadoop”。最后,把电脑进行“注销”或者“重启电脑”,这样修改的用户名才有效。

(一般学习用,第一种方法就好了。)

问题6

window下eclipse运行Map/Reduce 项目,出现的错误,截图如下:

原因:当前用的Hadoop版本与hadoop.dll文件的版本不匹配。我用的是Hadoop2.9.0,而hadoop.dll不是这个版本。

解决方法:

1、上网下载2.9.0的hadoop.dll文件放到C:\Windows\System32下;

2、还有记得更改本地hadoop\bin下的hadoop.dll。

问题7

hadoop连接mysql并将数据存储到hdfs中。

解决方法:

1、把jar包传到集群上,命令如下

hadoop fs -put mysql-connector-java-5.1.31.jar /hdfspath

2、在mr程序提交job前,添加一下语句:

job.addArchiveToClassPath(new Path("hdfs://IP:9000/hadfpath/mysql-connector-java-5.1.31.jar"));

问题8

跑同样的算法,只不过数据源变大了,就出现这个报错:

原因:

虚拟机ubuntu磁盘空间满了,系统为了安全自动进入安全状态,从而任何修改操作将不能操作。

解决:

1. 给虚拟机扩容

2. 删除没用的缓存或数据

问题10

eclipse连接虚拟机搭建的局域网Hadoop集群,出现如下报错;

org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated

还没有解决,怀疑是Hadoop版本与hadoop-eclipse-plugin-2.7.3.jar版本不一致,试过了还是同样的错误。

资源来自网络