Hadoop与Eclipse

  1. 将hadoop-eclipse-plugin-2.5.1.jar放入Eclipse的plugins目录下,然后重启Eclipse,使插件生效
  2. 创建Map/Reduce项目
  3. window——show view——Map/Reduce Location:
    这里写图片描述
  4. window——open prespective——other——Map/Reduce(会出现在Project Explorer列表中)
    这里写图片描述
    这里写图片描述
  5. 在Map/Reduce Locations中New Hadoop Location:配置如下:只需要用到DFS就可以了,端口和NN的50070页面显示的端口一致即可。Host我写的是node1,是因为我在c:/windows/sytem32/hosts文件中配置了路由映射,也可以直接写IP(注意关掉集群的防火墙)
    这里写图片描述
    在hdfs-site.xml中配置了NN的RPC地址和端口号(8020)
    这里写图片描述
  6. 此时就可以在Project Explorer看到文件目录(无报错信息):
    这里写图片描述
  7. 在创建目录或上传文件的时候总是失败:

  8. eclipse连接远程hadoop集群开发时报错

Exception in thread “main”
org.apache.hadoop.security.AccessControlException: Permission denied:
user=Jason, access=WRITE, inode=”data”:zxg:supergroup:rwxr-xr-x at
org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:207)

当前登录windows的用户名和hadoop集群的用户名不一致,将没有权限访问

解决方案:

管理DFS system目录。目前做法是将hadoop服务集群关闭权限认证,修改hadoop安装集群master的hadoop-2.5.1/conf/mapred-site.xml,增加:

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

正式发布时,可以在服务器创建一个和hadoop集群用户名一致的用户,即可不用修改master的permissions策略。
8. 编写WordCount的Mapper和Reducer,再编写Driver(主类)
9. 将程序export(src下的代码文件)成jar文件。
10. 执行:上传到任何一台机器中(实际是在ResourceManager中运行),使用命令:

hadoop jar wc.jar com.mr.RunJob
注:wc.jar是jar文件名,com.mr.RunJob是主类

11. 运行结果:
集群中运行的状态:

最终结果

在yarn中看到的结果:

这里写图片描述

Eclipse插件中的结果
这里写图片描述

运行结果:
这里写图片描述


下面介绍一些在Windows中运行的方法:

  1. MR执行环境有两种:本地测试环境,服务器环境

  2. 本地测试环境(windows):可以进行Debug调试 (开发过程中一般采用本地方式)文件可以直接放在本地,不需要启动集群。
    • 在windows的hadoop目录bin目录有一个winutils.exe
    • 在windows下配置hadoop的环境变量HADOOP_HOME(系统变量),配置好环境变量之后需要重启eclipse才能找到路径
      这里写图片描述
      这里写图片描述
    • 拷贝debug工具(winutils.ext)到HADOOP_HOME/bin
    • 如果出现下面错误:
      这里写图片描述
    • 下载对应版本的hadoop.dll 和winutil.exe,放入hadoop_home/bin中,将hadoop.dll放入windows/system32中,不需要重启。
    • MR调用的代码需要改变:
      a、src不能有服务器的hadoop配置文件(因为如果有的话,还会到服务器中去运行,会报错)
      b、在调用是使用:
      Configuration config = new Configuration();
      config.set(“fs.defaultFS”, “hdfs://node1:8020”); (从hdfs上去取输入数据)
      config.set(“yarn.resourcemanager.hostname”, “node1”);
      c、执行:与普通Java程序一样,Run JavaApplication (使用的是本地线程)
  3. 服务器环境:
    首先需要在src下放置服务器上的hadoop配置文件
    • 在本地直接调用,执行过程在服务器上(真正企业运行环境)
      a、把MR程序打包(jar),直接放到本地
      b、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
      c、增加一个属性:
      System.setProperty(“HADOOP_USER_NAME”, “root”);
      config.set(“mapred.jar”, “C:\Users\Administrator\Desktop\wc.jar”);
      d、本地执行main方法,servlet调用MR,程序将jar包提交到服务器中去执行。
      也能在node1:8088中看到执行过程与结果
    • 直接在服务器上,使用命令的方式调用,执行过程也在服务器上
      a、把MR程序打包(jar),传送到服务器上
      b、通过: hadoop jar jar路径 类的全限定名
      需要设置HADOOP_USER_NAME,要不然会出现权限错误
      这里写图片描述

2.7.1的winutils.exe和hadoop.dll的下载地址:链接: http://pan.baidu.com/s/1bpCCySn 密码: ffar

winutil.exe和hadoop.dll版本要对应

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值