hadoop2.4.1中本地运行模式报错解决办法

1.本地运行wordcount时,出现java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.错误
这里写图片描述

2.原因是本地hadoop安装目录中缺少winutils文件及本地lib文件,普通安装hadoop目录中的bin和lib->native目录如下:
这里写图片描述
这里写图片描述
这里写图片描述

3.这时候,需要下载如下的bin和lib文件夹,替换掉安装目录中的问价,替换后的目录如下:
这里写图片描述
这里写图片描述

4.文件的下载地址:
http://download.csdn.net/detail/wzcwmhp/9688665

5.覆盖完后,需要配置HADOOP_HOME,path系统环境变量。
这里写图片描述
这里写图片描述

6.运行程序:
出现以下错误:Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
这里写图片描述

7.解决办法:
找到报错的这句话,点击进去:
这里写图片描述
这里写图片描述
其实是文件访问权限问题,只需将return true就可以了,但是这是二进制class文件,不能修改,需要下载hadoop_src源代码文件:
这里写图片描述

源代码下载地址如下:
http://download.csdn.net/detail/wzcwmhp/9688682

找到hadoop-2.4.1-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio文件夹下,将nativeio.java文件打开,修改代码改为return true.
这里写图片描述

8.将该文件拷贝到项目中,建立一个和系统一样的包下:
这里写图片描述
这里写图片描述

9.导入后,有可能会报错,我的已经修改了,所以没报错,报错的话只需将jre_system包删除,从新导入即可
这里写图片描述

10.这时候,在运行程序
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:963)
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:391)错误,

11.这是默认的虚拟机运行内存不够,这时候需要设定运行参数
-Xmx1000M
这里写图片描述

12.这时候,提示目录已经存在,这是因为上一次运行的结果,生成了输出目录,只需将输出目录删除
这里写图片描述
删除output目录

13.重新运行程序,运行成功
这里写图片描述
这里写图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值