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版本不一致,试过了还是同样的错误。
资源来自网络