windows下运行mapreduce时出现org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z错误

windows下运行mapreduce时出现org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z错误的解决

最近在学习Hadoop的基础,在写mapreduce时,因为不想每次打成jar包到虚拟机上运行,所以在Windows下装了Hadoop,家里和公司的电脑上都装了,公司的运行正常,但是同样的代码在家里的电脑上却报了access0错误,困扰了三天的问题,终于解决了,记录一下找到问题的过程(虽然这看起来是一个很简单很蠢的错误,但毕竟是自己花了三天时间找出来的,第一篇博客就献给它吧)

关于windows下运行mapreduce首先是需要下载winutils.exe放到bin目录里,这个教程好多前辈都已经写过了,我在这里就不多说了。

在百度这个错误时大多数都是说因为没有winutils文件,我也一度以为是自己找的文件有问题,把时间都花在替换文件、修改xml文件配置上了,但是今天把公司的整个Hadoop安装目录替换了家里电脑上的Hadoop,发现还是同样的错误,于是排除了winutils和配置文件的问题。

只能去看运行的错误日志,发现报错的上一行是:
1266 [main] INFO org.apache.hadoop.mapreduce.JobSubmitter - Cleaning up the staging area file:/tmp/mapred/staging/xx17663622/.staging/job_local17663622_0001
于是猜想是不是因为文件夹读取权限问题,更改了配置文件中tmp文件夹的路径,发现不起作用。

然后继续向上看运行日志:
63 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader - Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: C:\HadoopSoft\hadoop-2.7.7\bin\hadoop.dll: Can’t load AMD 64-bit .dll on a IA 32-bit platform

32位?我的系统是64位的啊?下载winutils和Hadoop都是64的啊,32位是哪来的,好像发现问题了!
去百度了后面的关键字“on a IA 32-bit platform”,点开第一个博客:
https://blog.csdn.net/qq_31634461/article/details/78722938
嗯,虽然不是Hadoop相关,但是还是知道了问题所在,java版本问题,于是查看了一下自己的java版本,果然是32位的!
去官网重新下了64位jdk重新安装,运行,问题解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值