hadoop2包结构及包功能大致介绍
2013-02-28 11:05
260 查看
转自: http://blog.csdn.net/bxyz1203/article/details/8089318
一、概述
hadoop2的设计细想比hadoop1进步了很多,毕竟hadoop1是几年前的东西了。软件设计的理论在这几年中发展很快,出现了很多的软件设计理论 如:领域驱动模型、事件驱动模型、状生命周期管理等,也出现了很多的开源的解决方案,当然开源的方案很多都是起源apache社区。在hadoop2中,采取了maven的工程管理结构,把以前的单一工程换成了多工程结构模式,现在估计有45个(pom.xml文件的个数)project,以后会不会更多或者合并一些,这个就要持续关注hadoop开源社区的发展了。当然project也不是越多越好,我见过的最多的包工程有几百个,eclipse刷新的时候就需要几个小时,这个对于开发效能是一个极大的挑战。一般的项目的project个数大约在10个左右。hadoop大约有45个,我感觉有点多,当然hadoop2把project合理的分层了,这个确实是非常清晰的。
关于多个project的好处,我认为主要是:其一project之间的依赖的关系是单向的,包之间的功能是隔离的,这个不同于package,package是可以互相依赖的,对于隔离主要看设计者;其二就是管理方便,开发方便。
二、hadoop2工程分析
我们接下来对release-2.0.0-alpha分析,源码来自:http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.0.0-alpha,其他的一些版本包会有一些变化。
分析的工具是:structure101,可以google看下。
第一层:hadoop主要有四部分:hadoop-common-project、hadoop-hdfs-project、hadoop-mapreduce、hadoop-tools。他们之间的依赖关系如下图1所示:
![](http://img.my.csdn.net/uploads/201210/19/1350624592_2576.jpg)
图1
每部分的功能从名称就看得出来,这样的依赖关系很清晰。我们将从低往上去看下依赖关系。
第二层:图2展示了第二层的结构。
![](http://img.my.csdn.net/uploads/201210/19/1350625699_9665.jpg)
图2
我们可以看出四个包的下属工程,其中hadoop-mapreduce的工程hadoop-yarn有一个向上依赖hadoop-mapreduce-client 依赖是pom.xml的scope为test的依赖。我认为这个也是不对的,应该是去掉。 tools工程下面的子工程互相之间是独立的,因为他们都是工程包。
第三层:我们再看下其中hadoop-yarn与hadoop-mapreduce-client,如图3所示:
![](http://img.my.csdn.net/uploads/201210/19/1350627525_1506.jpg)
图3
我们看到hadoop-yarn还是很清楚的。对于hadoop-mapreduce-client有6个project不过还是比较清楚。
第四层:看下 hadoop-yarn-server下属的包,建图4
![](http://img.my.csdn.net/uploads/201210/19/1350627746_9596.jpg)
图4
在此图中,我们看到了 hadoop-yarn-server-namemanger及hadoop-yarn-server-resourcemanager,在计算中,也就是这两大守护进程了。
一、概述
hadoop2的设计细想比hadoop1进步了很多,毕竟hadoop1是几年前的东西了。软件设计的理论在这几年中发展很快,出现了很多的软件设计理论 如:领域驱动模型、事件驱动模型、状生命周期管理等,也出现了很多的开源的解决方案,当然开源的方案很多都是起源apache社区。在hadoop2中,采取了maven的工程管理结构,把以前的单一工程换成了多工程结构模式,现在估计有45个(pom.xml文件的个数)project,以后会不会更多或者合并一些,这个就要持续关注hadoop开源社区的发展了。当然project也不是越多越好,我见过的最多的包工程有几百个,eclipse刷新的时候就需要几个小时,这个对于开发效能是一个极大的挑战。一般的项目的project个数大约在10个左右。hadoop大约有45个,我感觉有点多,当然hadoop2把project合理的分层了,这个确实是非常清晰的。
关于多个project的好处,我认为主要是:其一project之间的依赖的关系是单向的,包之间的功能是隔离的,这个不同于package,package是可以互相依赖的,对于隔离主要看设计者;其二就是管理方便,开发方便。
二、hadoop2工程分析
我们接下来对release-2.0.0-alpha分析,源码来自:http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.0.0-alpha,其他的一些版本包会有一些变化。
分析的工具是:structure101,可以google看下。
第一层:hadoop主要有四部分:hadoop-common-project、hadoop-hdfs-project、hadoop-mapreduce、hadoop-tools。他们之间的依赖关系如下图1所示:
![](http://img.my.csdn.net/uploads/201210/19/1350624592_2576.jpg)
图1
每部分的功能从名称就看得出来,这样的依赖关系很清晰。我们将从低往上去看下依赖关系。
第二层:图2展示了第二层的结构。
![](http://img.my.csdn.net/uploads/201210/19/1350625699_9665.jpg)
图2
我们可以看出四个包的下属工程,其中hadoop-mapreduce的工程hadoop-yarn有一个向上依赖hadoop-mapreduce-client 依赖是pom.xml的scope为test的依赖。我认为这个也是不对的,应该是去掉。 tools工程下面的子工程互相之间是独立的,因为他们都是工程包。
第三层:我们再看下其中hadoop-yarn与hadoop-mapreduce-client,如图3所示:
![](http://img.my.csdn.net/uploads/201210/19/1350627525_1506.jpg)
图3
我们看到hadoop-yarn还是很清楚的。对于hadoop-mapreduce-client有6个project不过还是比较清楚。
第四层:看下 hadoop-yarn-server下属的包,建图4
![](http://img.my.csdn.net/uploads/201210/19/1350627746_9596.jpg)
图4
在此图中,我们看到了 hadoop-yarn-server-namemanger及hadoop-yarn-server-resourcemanager,在计算中,也就是这两大守护进程了。
相关文章推荐
- hadoop2包结构及包功能大致介绍
- hadoop 2 包结构及包功能大致介绍
- ECShop 2.5.1 的结构图及各文件相应功能介绍
- ECSHOP 2.7.2 文件结构及各文件相应功能介绍
- Android Studio - 目录结构 和 常用功能介绍 浅析
- 科技优家 2016-12-21 00:47 ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用
- 天龙客户端大致的结构划分和功能描述
- JBoss目录结构说明和功能介绍
- cocos2d-x 提升篇 (15) demo大致描述的功能介绍
- 430单片机之定时器A功能的大致介绍
- hadoop框架结构简单介绍
- JBoss目录结构说明和功能介绍
- hadoop2.2.0 分布式存储hdfs完全分布式搭建及功能测试记录(一)----架构及原理介绍
- ECSHOP 2.7.2 文件结构及各文件相应功能介绍
- Quick-Cocos2d-X 核心framework 目录结构与功能介绍
- ECShop的结构图及各文件相应功能介绍
- view\controller\service\DAO层的功能介绍以及联系,分层结构
- 天龙客户端大致的结构划分和功能描述
- hadoop 相关功能源码介绍