setdlldirectory java_在本地(windowns下)运行mr项目遇到的问题及处理方案

1.准备windowns版的hadoop,我这里是hadoop2.7.1.(已经对hadoop下的bin和etc目录进行了替换,主要是要bin目录下hadoop.dll和winutils.exe )

2.准备好org/apache/hadoop/io/nativeio.NativeIO.java和org/apache/hadoop/io/YARNRunner.java

二 执行过程

1.安装好java的jdk(1.8就行)

2.将hadoop解压后直接放在一个目录下(对于目录最好不要太深,可以在根目录下,hadoop目录,jdk目录最好都不要有空格)

3.给hadoop配置好环境变量

一、新建一个环境变量

HADOOP_HOME=D:\hadoop\hadoop-2.7.1

二、在Path环境变量后面追加:

%HADOOP_HOME%\bin

4.创建好单机的测试项目

5.将一中2里面的两个.java文件导入项目的eclipse的src或者idea的java下面

三 注意点

1.这里与集群或单机运行没有关系

2.跟使用eclipse和idea没有关系

四 常遇到的问题

1.底层io处理问题,有时版本不匹配也会出现.

问题描述:.Exception in thread "main" java.lang.NoSuchMethodError:

org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode(Ljava/io/File;I)V

解决:NativeIO.java和YARNRunner.java两个文件因为系统的版本不同,有时需要添加,有时不需要.可以尝试添加或删除

将org文件夹直接放到目录的java目录下

2.hadoop.dll文件和hadoop的版本不匹配

问题描述:Exception in thread "main" java.lang.NoSuchMethodError:

org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V

解决:我给的是hadoop2.7.1,那hadoop.dll也要是对应版本的.注意:我给的hadoop本身是已经替换了hadoop.dll

3.访问权限问题

问题描述.org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

解决:将hadoop的bin目录下的hadoop,dll放在.c:\windows\system32 下.

注意:如果是win7一般没有权限问题 ,win8和win10权限问题比较常见.

4.空指针问题,没有找到hadoop包

问题描述:NullpointException

解决:配置环境变量,还是不行可以继续在代码中添加

System.setProperty("hadoop.home.dir", "D:\hadoop-2.7.1");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值