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
下载地址:
https://github.com/winghc/hadoop2x-eclipse-plugin
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文件目录下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)