MapReduce系列-eclipse运行MapReduce

1、eclipse安装hadoop的插件
下载 hadoop-eclipse-plugin-2.6.0.jar,将其放入 eclipse 的 \plugins 目录,并重启 eclipse,项目视图(Project Explorer)会多出一个DFS Locations文件夹,在 Window—>Show View—>Other—>MapReduce Tools—>Map/Reduce Locations,会在Console栏位多出一个Map/Reduce Locations

2、插件配置
在Map/Reduce Locations栏位下空白的地方右键—>New Hadoop Location
LocationName:自己命名
Map/Reduce(V2) Master:HOST随意,Port随意,这两个地方不用配置对,因为mapreduce没有提交到Hadoop集群上运行的,而是在本地运行的。
DFS Master:Host为HDFS NameNode节点的IP,Host为负责接收Client连接的RPC端口,用于获取文件系统metadata信息。这两个配置对应fs.defaultFS配置的ip和端口

配置完成后右键点击DFS Locations下面创建的Location(明智就是上面配置的LocationName),点击Reconnect,这时候会看到HDFS的文件目录,如果出错,那应该是Map/Reduce(V2) Master的Host和Port没有配置正确,修改后重新Reconnect,直到连接到HDFS为止

3、写一个MapReduce应用


4、异常处理
(1)、HDFS权限(如果MapReduce输入输出路径是本地目录,则不会出现下面异常)
异常信息:org.apache.hadoop.security.AccessControlException: Permission denied: user=dwdw, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

解决方案:在 mapred-site.xml 配置文件中设置属性 dfs.permission 为 false 即可

(2)、NativeIO异常
异常信息:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

解决方案:解压自己对应版本的hadoop-common源码包,把org.apache.hadoop.io.nativeio.NativeIO.java拷贝到MapReduce项目中,注意,拷贝后NativeIO.java包名是org.apache.hadoop.io.nativeio,这样才能覆盖hadoop-common包下面的代码,然后修改access方法的方法体,直接return true,修改后代码如下:
public static boolean access(String path, AccessRight desiredAccess)
throws IOException {
return true;
}

备注:其它异常看日志解决就好。暂时没遇到其它异常

5、运行结果
完成上面的异常处理后就可以正确的运行MapReduce,可以注意到,MapReduce并没有提交到Yarn或者Hadoop集群上运行,只是把结果集保存在Hadoop集群的HDFS文件目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值