当前位置:   article > 正文

Windows下运行MapReduce程序处理集群中hdfs数据所踩到的坑_在windows运行mapruduce的数据文件用hdfs运行

在windows运行mapruduce的数据文件用hdfs运行

前言

遇到了很多坑,一步一步百度和谷歌解决了。其实还是对原理不太了解导致的。

步骤

步骤网上有很多,例如
https://my.oschina.net/u/999578/blog/180343

遇到的问题及解决方案

有些错误具体报错信息找不到了,只记得一些解决方案了

Exception in thread "main" java.net.ConnectException: Call From yitechWin7/192.168.1.130 to 192.168.1.129:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
  • 1

将主节点上core-site.xml中原来的端口9000改为8020

后来遇到许多切片,块分配的问题,网上也没有解答。后来才发现,把所有节点的core-site.xml上的端口都改为8020

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /wc/output/_temporary/0. Name node is in safe mode.
The reported blocks 3 has reached the threshold 0.9990 of total blocks 3. The number of live datanodes 2 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 12 seconds.
  • 1
  • 2

只是由于当前namenode处于安全模式导致的,等一段时间或者关闭namenode安全模式即可。关闭namenode安全模式命令如下:

hadoop dfsadmin -safemode leave
  • 1

(1)

Could not locate executable null\bin\winutils.exe in the Hadoop binaries.  ...
  • 1

将hadoop.dll、winutils.exe放到win下hadoop的bin目录下,hadoop.dll放到C:\Windows\System32目录下。

(2)

然而并没有解决,还是报同样的错误,经过折腾发现可能是由于windows下的环境变量没有配好。

HADOOP_HOME:
C:\hadoop-2.6.0
PATH追加:
%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin\winntils.exe
  • 1
  • 2
  • 3
  • 4

如果没有生效,重启即可。如果不想重启的话,可以在代码中添加:

System.setProperty("hadoop.home.dir", "C:\\hadoop-2.6.0");
  • 1

(3)

但是后来还是出现了很奇怪的问题,后来得知,是hadoop.dll和hadoop的版本不一致导致的。2.4.0版本前后所用到的hadoop.dll版本不一样,下载的使用需要注意。

hadoop2.6(x64)V0.2 可以在我的CSDN资源页下载: http://download.csdn.net/download/yangzheng0515/9981734

报关于log4j.properties的错误,或者控制台没有任何信息。

将CentOS下hadoop配置文件目录下的log4j.properties 复制到win下MR项目的src目录下即可。当然core-site.xml和hdfs-site.xml也要放入src目录下。

报错信息:

Unable to initialize MapOutputCollector org.apache.hadoop.mapred.MapTask$MapOutputBuffer
  • 1

这里写图片描述
我是对map的输出key类型仅仅实现了Writable,而没有实现comparable. 由上图可知,会进行shuffle阶段对key进行分类,相同的key,会把value收集在一起,就是reduce 的Iterable value.
解决办法: 需要map阶段输出的key类型实现 compareTo. 如果只进行序列化是可以仅仅实现Writable接口 write(),readFile的map到reduce时存在shuffle,若作为key,则需要实现WritableComparable.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/506372
推荐阅读
相关标签
  

闽ICP备14008679号