Hadoop 源代码组织结构
Hadoop 2.X 包括 编译好的可以直接部署的文件hadoop-{VERSION}.tar.gz; 还有源代码文件hadoop-{VERSION}-src.tar.gz , 需要 Maven 编译后才能进行部署安装. 我以 hadoop 2.7.3 为例.
1. 在Hadoop 的JAR 压缩包解压后的目录 hadoop-{VERSION} 中包含了 Hadoop全部的管理脚本和 JAR 包, ( 如hadoop-2.7.3.tar.gz, 解压后得到hadoop-2.7.3 ,如下图所示 )下面简单对这些文件或目录进行介绍:

(1) bin : Hadoop 最基本的管理脚本和使用脚本所在的目录, 这些脚本是 sbin 目录下管理脚本的基础实现, 用户可以直接使用这些脚本管理和使用Hadoop.
(2) etc : Hadoop 配置文件所在的目录, 包括core-site.xml, hdfs-site.xml, mapred-site.xml 等从 Hadoop 1.0 继承而来的配置文件和 yarn-site.xml 等 Hadoop 2.0 新增的配置文件.
(3) include : 对外提供的编译库头文件( 具体动态库和静态库在 lib 目录中 ), 这些头文件均是用 C++ 定义的, 通常用于 C++ 语言访问 HDFS 或者编写 MapReduce 程序.
(4) lib : 该目录包含了 Hadoop 对外提供的编程动态库和静态库, 与 include 目录中的头文件结合使用.
(5) libexec : 各个服务对应的 Shell 配置文件所在的目录, 可用于配置日志输出目录, 启动参数 ( 比如 JVM 参数 ) 等基本信息.
(6) sbin : Hadoop 管理脚本所在目录, 主要包含 HDFS 和 YARN 中各类服务的启动/关闭脚本.
(7) share : Hadoop 各个模块编译后的JAR包所在的目录.
2. 在 Hadoop 源代码压缩包解压后的目录 hadoop-{VERSION}-src 中,( 如hadoop-2.7.3-src.tar.gz, 解压后得到hadoop-2.7.3-src ),可看到如图2所示的目录结构, 其中, 比较重要的目录有: hadoop-common-project, hadoop-mapreduce-project, hadoop-hdfs-project 和 hadoop-yarn-project 等, 下面分别介绍这几个目录的作用.

(1) hadoop-common-project : Hadoop 基础库所在目录, 该目录中包含了其他所有模块可能会用到的基础库, 包括 RPC, Metrics, Counter 等.
(2) hadoop-mapreduce-project : MapReduce 框架的实现, 在MRv1 中, MapReduce 由编程模型( map/reduce ), 调度系统(JobTracker 和 TaskTracker ) 和数据处理引擎 ( MapTask 和 ReduceTask ) 等模块组成, 而此处的 MapReduce 则不同于 MRv1 中的实现, 它的资源调度功能由新增的 YARN 完成 ( 编程模型和数据处理引擎不变 ), 自身仅包含非常简单的任务分配功能.
(3) hadoop-hdfs-project : Hadoop 分布式文件系统实现, 不同于 Hadoop 1.0 中单 NameNode 实现, Hadoop 2.0 支持多 NameNode, 同时解决了 NameNode 单点故障问题.
(4) hadoop-yarn-project : Hadoop 资源管理系统 YARN 实现. 这是 Hadoop 2.0 新引入的分支, 该系统能够统一管理系统中的资源, 并按照一定的策略分配给各个应用程序.
Hadoop 源代码组织结构的更多相关文章
- hadoop源代码组织结构与阅读技巧
本文将介绍在 Eclipse 下阅读 Hadoop 源代码的一些技巧, 比如如何查看一个基类有哪些派生类. 一个方法被其他哪些方法调用等. 本文地址:http://www.cnblogs.com/ar ...
- 将hadoop源代码导入eclipse
1. 安装JDK,eclipse,下载hadoop源代码并解压到某一个目录. 2. 安装maven,将bin目录添加到PATH环境变量中. 3. 安装protobuf2.5.0,将protoc-2.5 ...
- eclipse下编译hadoop源代码(转)
hadoop是一个分布式存储和分布式计算的框架.在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译.打包. 下面将详细描述如何从sv ...
- Hadoop源代码分析
http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...
- hadoop源代码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置
点击browserFilesystem,和命令查看结果一样 当我们查看hadoop源代码时,我们看到hdfs下的hdfs-default.xml文件信息 我们查找${hadoop.tmp.dir}这是 ...
- Hadoop源代码导入Eclipse
须要进一步学习hadoop.须要看看内部源代码实现.因此须要将hadoop源代码导入都eclipse中,简单总结一下,详细过程例如以下: 首先确保已经安装了git.maven3.protobuf2.5 ...
- eclipse导入/编译hadoop源代码
1. 确保安装好JDK和eclipse 详细教程见: http://blog.csdn.net/kangdakangdaa/article/details/11364985 2. 安装 Subclip ...
- 两种配置大数据环境的方法Ambari以及hadoop源代码安装的步骤
1.Ambari安装 Ambari & HDP(Hortonworks Data Platform) ********************************************* ...
- RPC框架研究(二)Hadoop源代码-1
报名了阿里中间件性能大赛,我来说是一个全新的挑战.一切从空白学起,比赛的过程也是学习的过程 是的.想让自己学好.给自己报一个比赛吧~ 就像当初学围棋,也是报了围棋比赛,为了不至于输的太慘.一个星期里学 ...
随机推荐
- 工作总结 mvc外键 public virtual SysUser TransferUser { get; set; } 必须要加 virtual 否则 TransferUser 值为null 还要加[ForeignKey("TransferUser")] Bind 和 ScaffoldColumn(转)
[Table("T_SYS_TRANSFERUSER")] public class SysTransferUser : DbSetBase { [ForeignKey(" ...
- Laravel建站04--建立后台文章管理
路由配置 Route::group(['middleware' => 'auth', 'namespace' => 'Admin', 'prefix' => 'admin'], fu ...
- POJ 2480 Longge's problem 积性函数
题目来源:id=2480" style="color:rgb(106,57,6); text-decoration:none">POJ 2480 Longge's ...
- MongoDB 征途
到目前为止,对数据库这块仍然捉襟见肘,仅限于懂一些MySQL,就更谈不上什么优化了. 细想来,还是没有项目驱动造成的...既然跟关系型数据库缘分未到,干脆直接go to NoSQL - MongoDB ...
- poj1125--Floyd
题解: 有N个股票经济人能够互相传递消息.他们之间存在一些单向的通信路径.如今有一个消息要由某个人開始传递给其它全部人.问应该由哪一个人来传递,才干在最短时间内让全部人都接收到消息. 显然,用Floy ...
- SICP 习题 (1.38)解题总结
SICP 习题1.38 紧跟着习题1.37的方向,要求我们用习题1.37中定义的cont-frac过程计算数学家欧拉大师在论文De Fractionibus Continuis 中提到的e-2的连分式 ...
- 很好的 DHCP协议与dhcpcd分析【转】
本文转载自:http://blog.csdn.net/gjsisi/article/details/18052369 第一部分 DHCP工作过程 DHCP的工作过程主要分为以下六个阶段: 发现 ...
- PHP Json函数不能处理中文的解决办法
PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode 对中文的处理是有问题的: 不能处理GB编码,所有的GB编码都会替换成空字符: utf8编码的中文被编码成u ...
- RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library
1. [代码]jsi-rtree-library /** * */package com.mycompany.project; //package net.sourceforge.jsi.examp ...
- PHP生成一个不重复随机数组的封装方法
<?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...