win7平台上使用eclipse(luna)将mapred任务上传到集群上运行

win7平台上使用eclipse(luna)将mapred任务上传到集群上运行

本地环境:

  • jdk版本 1.7.0_51
  • hadoop版本:2.4.1和2.7.2
  • hadoop eclipse插件:hadoop-eclipse-plugin-2.4.1.jar

hadoop集群环境:

  • jdk版本 1.7.0_79
  • hadoop版本:2.7.2
  • 一台master,两台slaver,使用YARN做资源管理器

步骤:

  1. 配置windows上的hadoop环境
    官网上下载hadoop压缩包hadoop-2.7.2.tar.gz 然后解压。在windows上使用hadoop需要下面一些文件:hadoop.dll、hadoop.exp、hadoop.lib、hadoop.pdb、libwinutils.lib、winutils.exe、winutils.pdb。这些文件网上有说是怎么生成的,我是直接在网上搜现成的。貌似不同版本的这些文件好像差别不是很大。然后还需要将hadoop.dll放在system32文件夹下。具体原理也不是很清楚。

  2. 配置eclipse上的hadoop环境
    这一步主要是使用hadoop-eclipse-plugin-2.4.1.jar这个插件。这个插件网上也有生成的方法,使用https://github.com/winghc/hadoop2x-eclipse-plugin 提供的方法,使用ant编译,ant jar -Dversion=2.7.2 -Dhadoop.version=2.7.2 -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/local/hadoop 最后卡在那一晚上都没成功,最后还是放弃了,在网上下载了一个2.4.1版本的。然后就是一般的配置方法了,重启eclipse,配置hadoop路径,这个地方是可以切换版本的,我的2.4.1和2.7.2切换没有问题,然后就是编辑mapreduce配置。

  3. 配置mapred项目
    将集群上的core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml四个配置文件放在项目中,注意一定要复制到src文件夹中,否则是不会起作用的。当然如果要看日志,也需要新建一个log4j.properties文件,文件内容网上随便搜。
    在mapred-site.xml文件中添加如下配置:
  <property>  
        <name>mapred.remote.os</name>
        <value>Linux</value>
        <description>Remote MapReduce framework's OS, can be either Linux or Windows</description>  
    </property>

    <property>
        <name>mapreduce.app-submission.cross-platform</name>
        <value>true</value>
    </property>

然后点run on hadoop,就能够运行了。

问题

  1. 集群中的mapred-site.xml文件中一定要配置mapreduce.framework.name为yarn,否则总是在本地运行,而不能在集群中运行。
  2. 如果报你的mapred程序的类不存在错误,那么恭喜你,前面都设置成功了,接下来只要把你项目导出jar包,然后上传到集群中的hadoop安装目录share/hadoop/mapred/lib下就可以了。当然集群中每台机器都需要这样上传的。本来以为eclipse提交任务,这些jar包可以自动传到集群上,但是细想一下,万一jar包很大呢,而且应该是需要手动传上去的。
  3. 如果不设置上节3中的 mapred.remote.os和mapreduce.app-submission.cross-platform,那么就会报:org.apache.hadoop.util.Shell.runCommand(Shell.java:545),并且提示返回值是0这样的错误。具体原理也不是很清楚。
  4. 之前一直报错,在mapred web页面发现提交的用户是hadoop而我又没有新建hadoop用户,新建了hadoop用户之后还是一样的错误,说明不是hadoop用户的问题,使用hadoop集群运行任务好像和用户没有关系。

弄了好久的使用eclipse直接运行集群上的mapred任务终于成功了,虽然了解一些hadoop的原理,但是发现是远远不够的,以后有时间,需要好好看看hadoop的源代码。下载的hadoop包中也包括了各个jar包的源码。可以好好研究研究!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值