【更新】Hadoop代码结构及载入Ecplise方法

一、项目结构

在Hadoop代码结构中,按照功能的不同将项目划分到不同目录当中。

整个项目可以用maven进行构建,因此根目录下有pom.xml文件。

每个子目录也可作为独立的maven项目进行编译,因此每个子目录下也都有pom.xml。

Mapreduce、HDFS是Hadoop最主要的两个功能模块,这两个部分就分别放到了hadoop-mapreduce-project、hadoop-hdfs-project这两个目录当中。由于各子项目之间会使用些共同的基础功能,这部分基础功能的代码实现,在hadoop-common-project下。

主要子目录中的功能如下:

  • hadoop-common-project:Hadoop基本功能实现,包括安全认证、日志管理、配置管理、监控等。
  • hadoop-hdfs-project:HDFS功能实现。
  • hadoop-mapreduce-project:Mapreduce功能实现。
  • hadoop-yarn-project:Hadoop 2.x之后引入,集群资源管理框架Yarn的主要功能实现代码。
  • hadoop-client:Hadoop客户端(用于作业提交、文件上传下载等)功能实现。
  • hadoop-tool:第三方提供的一些工具,比如访问aliyun OSS的接口、访问aws的接口等等。

二、代码获取方法

如果只为研究目的,不考虑特殊版本需求的话,直接从apache的Hadoop官网https://hadoop.apache.org/releases.html下载一份最新的源代码。

或者,可以从github上获取:

三、Eclipse项目生成及代码修改

maven的Eclipse插件可以用于生成eclipse项目文件(.classpath、.project),使得对应项目可以直接在Eclipse中打开。

在项目根目录下,可以执行:

如上所述,Hadoop有多个子项目组成,在根目录中执行该项目之后,每个子目录都会生成单独的子项目。在Eclipse中打开就会同时载入所有子项目。

由于Hadoop项目比较大,一般会根据需要到某个子项目中执行Eclipse项目生成操作,比如:

执行完成之后,可以在Eclipse中导入项目:

选择子项目所在的目录,并打开:

之后,便可以像平常查看普通Java项目那样,进行查找文件、跳转到定义处等操作了:

四、编译中可能遇到的问题

Hadoop的编译过程看似只需要mvn的命令启动一下即可,但过程中会对某些工具及项目有所依赖。

1、主要依赖的工具

  • ant
  • ant-trax
  • rpmdevtools
  • cmake
  • lzo-devel
  • openssl-devel
  • snappy-devel
  • forrest

如果是连上网络的一台Linux机器,装这些并不困难,在CentOS中使用yum install,在Ubuntu中使用apt-get install。

2、依赖的项目

Hadoop依赖于Google的Protobuf,需要下载、编译并安装Protobuf之后才能保证Hadoop的正确编译。

下载的链接:https://developers.google.com/protocol-buffers/docs/downloads。

需要根据需求下载正确的版本(比如Hadoop2.6.x、2.7.x需要Protobuf v2.5.0)。

解压之后,在Protobuf项目目录执行如下命令完成安装:

点击阅读原文跳转github链接

原文发布于微信公众号 - 顶级程序员(TopCoding)

原文发表时间:2016-10-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

Hadoop(二)搭建伪分布式集群

前言   前面只是大概介绍了一下Hadoop,现在就开始搭建集群了。我们下尝试一下搭建一个最简单的集群。之后为什么要这样搭建会慢慢的分享,先要看一下效果吧! 一...

42670
来自专栏Hadoop实操

如何在CDSW上创建Git工程并提交代码

15130
来自专栏大数据和云计算技术

hadoop运行环境搭建

森哥/洋哥hadoop系列,非常适合初学者: Hive 元数据表结构详解 HDFS学习:HDFS机架感知与副本放置策略 Yarn【label-based sch...

401110
来自专栏专注研发

HDFS基础配置

执行步骤:(1)配置集群(2)启动、测试集群增、删、查(3)执行wordcount案例

19230
来自专栏xingoo, 一个梦想做发明家的程序员

Spark Client启动原理探索

经过几天闲暇时间的学习,终于又理解的深入了一些,关于Spark Client如何提交作业也更清晰了点。 在整体的流程图上是这样的: ? 大体的思路就是...

362100
来自专栏about云

Cloudera Manager Server5及Cloudera Manager Agents5命令整理(about云)

问题导读 1.使用什么命令可以开启、停止、重启Cloudera Manager Server 2.如何强制重启Agents 3.什么情况下适合强制重启Agen...

35270
来自专栏闵开慧

hadoop配置文件

(1)配置$HADOOP_HOME/conf/hadoop-env.sh 切换到Hadoop的安装路径找到hadoop-0.20.2下的conf...

29760
来自专栏闵开慧

hadoop各配置文件中各配置项详细说明

3.1. 环境变量 hadoop-env.sh name value 含义 JAVA_HOME /usr/java/jdk1....

383110
来自专栏挖掘大数据

Hadoop基础教程——Hadoop单机版搭建

最近闲来无事,和朋友一起想学习Hadoop,最晚弄机器的弄到两点多,今天一起动手安装Hadoop的环境,刚开始也是一头雾水,Hadoop官网的教程我也是醉了,说...

41690
来自专栏十月梦想

Express框架实现GET和POST请求

GET请求在原生node中我们使用了path.query等查询方式,在express框架提供了极其简单的方式(req.query)就简单获取到了传递的内容;

8530

扫码关注云+社区

领取腾讯云代金券