Hadoop官方wiki上介绍了如何用Maven编译和生成Eclipse项目,但是它需要hadoop-common的trunk代码,因为只有trunk上有pom.xml文件。而对于其他release版本的源代码,都包含build.xml,因此可以通过ant来编译。本文根据自己的经验,总结一下如何将下载的tar.gz源码包导入Eclipse,进而通过Eclipse编译和执行Hadoop。

Compile and Build

  1. 从官网上下载源码包,这里下载的是hadoop-1.0.4.tar.gz,不需要解压
  2. 新建一个空的Eclipse Project,Import -> General -> Archive File,选择此tar.gz文件,将其全部导入新建的Project
  3. 将需要编译的源码package加入build path:Build Path -> Configure Build Path,这里加入core, examples, hdfs, mapred四个package。同时,将default output folder设置为build/classes (hadoop启动脚本默认将$HADOOP_HOME/build/classes加入classpath),如下图所示:
  4. 将lib目录下的所有jar文件加入Project Libraries,如下图所示:
  5. 接下来Eclipse将开始自动build,会发现很多编译错误。解决方法是下载一个jar文件,com.springsource.org.apache.tools.ant-1.8.1.jar,将其加入Project Library。

Execute

如果需要编写MapReduce程序,可以新建另一个Project,然后将Hadoop-1.0.4/build/classes目录加入Project Library。单元测试Mapper和Reducer可以使用MRUnit,测试代码如下所示:
    @Testpublic void testMap() {Text value = new Text("zhang jun");new MapDriver<Object, Text, Text, IntWritable>().withMapper(new JunzWordCount.TokenizerMapper()).withInputValue(value).withOutput(new Text("zhang"), ONE).withOutput(new Text("jun"), ONE).runTest();}@Testpublic void testReduce() {List<IntWritable> values = new ArrayList<IntWritable>();values.add(ONE);values.add(ONE);new ReduceDriver<Text,IntWritable,Text,IntWritable>().withReducer(new JunzWordCount.IntSumReducer()).withInput(new Text("zhang"), values).withOutput(new Text("zhang"), new IntWritable(2)).runTest();}

学习过程中可能需要修改源代码并测试执行,此时可以在Local Mode下运行Hadoop(Hadoop可以工作在三个模式,Local Mode,Pseudo-distributed, Distributed)。这里假定在JobClient.submitJobInternal()中增加一行LOG输出,这样在MapReduce Job提交的时候,就会输出该log:

  public RunningJob submitJobInternal(final JobConf job) throws FileNotFoundException, ClassNotFoundException,InterruptedException,IOException {/** configure the command line options correctly on the submitting dfs*/return ugi.doAs(new PrivilegedExceptionAction<RunningJob>() {public RunningJob run() throws FileNotFoundException, ClassNotFoundException,InterruptedException,IOException{//Add one logLOG.info("Hello Junz");

Eclipse build完之后,将项目目录复制到VMware虚拟机的共享目录,在Guest CentOS下运行,可以看到输出的信息。通过查看./bin/hadoop启动脚本,可以知道它设定的classpath,$HADOOP_HOME/build/classes在$HADOOP_HOME/hadoop-core-1.0.4.jar之前,也就是说本地修改和编译的class优先被加载,因而可以看到修改后的代码反映在运行之中。

【Hadoop】Build and Execute相关推荐

  1. 【Hadoop】Bad connect ack with firstBadLink as ×.×.×.×:50010

    1.背景 本地运行代码,先报错 [Flink]UnsatisfieldlinkError : org.apache.hadoop.util.NativeCrc32,然后解决后,报错这个. [Hadoo ...

  2. 【hadoop】hadoop 血缘解析

    1.概述 转载:[数据仓库]元数据血缘分析 现在数据仓库基本上采用Hadoop平台了,那么数据仓库里面元数据的血缘分析的思路有哪些呢 基本上有下面这两种思路: 1.解析hql脚本,通过正则表达式去匹配 ...

  3. 【Hadoop】the short-cricuit local reads feature cannnot be use because UNIX Domain sockets are not ava

    1.背景 报错 [Flink]UnsatisfieldlinkError : org.apache.hadoop.util.NativeCrc32 的时候,在上面还有一个warn. the short ...

  4. 【Hadoop】01_从官网下载Hadoop

    在[Linux]Ctentos下载我已经描述了如何去下载Centos 进入到Hadoop官网 http://hadoop.apache.org/ 点击"releases",跳转后, ...

  5. 【hadoop】一文讲透hdfs的delegation token

    1.概述 转载并且补充:一文讲透hdfs的delegation token 最近我也在研究这个,学习一下. 1.1 起因 我最近在做FLink kerberos认证.我在flink配置文件中配置正确的 ...

  6. 【hadoop】有参考价值的博客整理

    好文章的网址: hadoop shuffle机制中针对中间数据的排序过程详解(源代码级) Hadoop mapreduce原理学习 与 Hadoop 对比,如何看待 Spark 技术? 深入理解Had ...

  7. 【hadoop】hadoop 安装 kerberos

    1.概述 本次是视频:[大数据基础]快速掌握Hadoop集成Kerberos安全技术 笔记. 2.环境信息 2.1 版本信息 本次课程基于使用的软件环境如下: .CDH5.14.4 .hadoop2. ...

  8. 【hadoop】Yarn【label-based scheduling】实战总结

    1.概述 转载:Yarn[label-based scheduling]实战总结 2. Label-based scheduling介绍 故名思议,Label based scheduling是一种调 ...

  9. 【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript

    原文:http://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/ Build Your o ...

最新文章

  1. 加速电子化报销费控服务,易快报完成1500万美元B轮融资
  2. linux patches工具,patch工具入门
  3. 一个高并发请求的算法
  4. 机器人组团到城市打工,第一站果然是赛博朋克城
  5. Ehcache存储策略总结
  6. 地图漫游功能的具体体现_一卡通考勤门禁管线系统主要模块功能说明
  7. left join on and 与 left join on where的区别
  8. HibernateTemplate使用方法
  9. 董明珠:格力绝不裁员;腾讯缺席首批游戏版号;iPhone XS Max 口袋自燃 | 极客头条...
  10. python关键字参数顺序_位置参数和关键字参数的求值顺序
  11. 基于asp.net C#中小型超市库存管理系统
  12. 计算机网络(二)—— 物理层(1、2、3):物理层的基本概念、物理层的下面的传输媒体、传输方式
  13. ubuntu16.04快速安装zabbix
  14. 微信小程序云开发教程-小程序端调用云函数
  15. 膜蛋白巯基氧化还原修饰红细胞膜/红细胞膜包裹共载藤黄酸和吲哚菁绿白蛋白纳米粒相关研究
  16. 程序员为向师弟师妹炫技,黑了母校!结果不太妙……
  17. java毕业设计——基于java+Java Swing+jsp的企业快信系统设计与实现(毕业论文+程序源码)——企业快信系统
  18. Java可视化数据报表,你还不知道的Excel基本操作吗?
  19. 华为实验11-STP总结
  20. Rust语言教程(4) - 字符串

热门文章

  1. gc java ibm_gc分析工具(IBM Pattern Modeling and Analysis Tool for Java Garbage Collector)
  2. BAT小米奇虎美团迅雷携程等等各大企业校招,笔试面试题。
  3. 边下边看 七款P2P下载软件全能大比拼
  4. 幻影显示连接不到服务器,幻影纹章怎么进不去 无法连接服务器及解决方案
  5. net use 访问远程电脑
  6. 高内聚,低偶合指的是什么?
  7. ISO27001认证是信息安全管理体系认证
  8. [每日一题]152:仅仅反转字母
  9. 【博学谷学习记录】超强总结,用心分享丨前端开发:BootStrap框架基础用法
  10. 土地利用覆被变化的概念_土地利用/覆被变化(LUCC)研究现状与展望