文章转自:http://book.51cto.com/art/201312/422113.htm

1.4 Hadoop源代码组织结构

直接解压Hadoop压缩包后,可看到图1-11所示的目录结构,其中,比较重要的目录有src、conf、lib、bin等。下面分别介绍这几个目录的作用:

src:Hadoop源代码所在的目录。最核心的代码所在子目录分别是core、hdfs和mapred,它们分别实现了Hadoop最重要的三个模块,即基础公共库、HDFS实现和MapReduce实现。

conf:配置文件所在目录。Hadoop的配置文件比较多,其设计原则可概括为如下两点。

尽可能模块化,即每个重要模块拥有自己的配置文件,这样使得维护以及管理变得简单。

动静分离,即将可动态加载的配置选项剥离出来,组成独立配置文件。比如,Hadoop 1.0.0版本之前,作业队列权限管理相关的配置选项被放在配置文件mapred-site.xml中,而该文件是不可以动态加载的,每次修改后必须重启MapReduce。但从1.0.0版本开始,这些配置选项被剥离放到独立配置文件mapred-queue-acls.xml中,该文件可以通过Hadoop命令行动态加载。conf目录下最重要的配置文件有core-site.xml、hdfs-site.xml和mapred-site.xml,分别设置了基础公共库core、分布式文件系统HDFS和分布式计算框架MapReduce的配置选项。

lib:Hadoop运行时依赖的三方库,包括编译好的jar包以及其他语言生成的动态库。Hadoop启动或者用户提交作业时,会自动加载这些库。

bin:运行以及管理Hadoop集群相关的脚本。这里介绍几个常用的脚本。

hadoop:最基本且功能最完备的管理脚本,其他大部分脚本都会调用该脚本。

start-all.sh/stop-all.sh:启动/停止所有节点上的HDFS和MapReduce相关服务。

start-mapred.sh/stop-mapred.sh:单独启动/停止MapReduce相关服务。

start-dfs.sh/stop-dfs.sh:单独启动/停止HDFS相关服务。

本书重点介绍MapReduce的实现原理,下面就Hadoop MapReduce源代码组织结构进行介绍。Hadoop MapReduce源代码组织结构如图1-12所示。

总体上看,Hadoop MapReduce分为两部分:一部分是org.apache.hadoop.mapred.*,这里面主要包含旧的对外编程接口以及MapReduce各个服务(JobTracker以及TaskTracker)的实现;另一部分是org.apache.hadoop.mapreduce.*,主要内容涉及新版本的对外编程接口以及一些新特性(比如MapReduce安全)。

1. MapReduce编程模型相关

org.apache.hadoop.mapred.lib.*:这一系列Java包提供了各种可直接在应用程序中使用的InputFormat、Mapper、Partitioner、Reducer和OuputFormat,以减少用户编写MapReduce程序的工作量。

org.apache.hadoop.mapred.jobcontrol:该Java包允许用户管理具有相互依赖关系的作业(DAG作业)。

org.apache.hadoop.mapred.join:该Java包实现了map-side join算法。该算法要求数据已经按照key排好序,且分好片,这样可以只使用Map Task实现join算法,避免re-partition、sort、shuffling等开销。

org.apache.hadoop.mapred.pipes:该Java包允许用户用C/C++编写MapReduce作业。

org.apache.hadoop.mapreduce:该Java包定义了一套新版本的编程接口,这套接口比旧版接口封装性更好。

org.apache.hadoop.mapreduce.*:这一系列Java包根据新版接口实现了各种InputFormat、Mapper、Partitioner、Reducer和OuputFormat。

2. MapReduce计算框架相关

org.apache.hadoop.mapred:Hadoop MapReduce最核心的实现代码,包括各个服务的具体实现。

org.apache.hadoop.mapred.filecache:Hadoop DistributedCache实现。DistributedCache是Hadoop提供的数据分发工具,可将用户应用程序中需要的文件分发到各个节点上。

org.apache.hadoop.mapred.tools:管理控制Hadoop MapReduce,当前功能仅包括允许用户动态更新服务级别的授权策略和ACL(访问权限控制)属性。

org.apache.hadoop.mapreduce.split:该Java包的主要功能是根据作业的InputFormat生成相应的输入split。

org.apache.hadoop.mapreduce.server.jobtracker:该Java包维护了JobTracker可看到的TaskTracker状态信息和资源使用情况。

org.apache.hadoop.mapreduce.server.tasktracker.*:TaskTracker的一些辅助类。

3. MapReduce安全机制相关

这里只涉及org.apache.hadoop.mapreduce.security.*。这一系列Java包实现了MapReduce安全机制。

Hadoop源代码组织结构相关推荐

  1. hadoop源代码组织结构与阅读技巧

    本文将介绍在 Eclipse 下阅读 Hadoop 源代码的一些技巧, 比如如何查看一个基类有哪些派生类. 一个方法被其他哪些方法调用等. 本文地址:http://www.cnblogs.com/ar ...

  2. Hadoop源代码分析 - MapReduce(转载)

    1. Hadoop源代码分析(MapReduce概论) http://caibinbupt.javaeye.com/blog/336467

  3. eclipse下编译hadoop源代码(转)

    hadoop是一个分布式存储和分布式计算的框架.在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译.打包. 下面将详细描述如何从sv ...

  4. Hadoop源代码eclipse编译指南

    目录 1. 下载Hadoop源代码 1 2. 准备编译环境 2 2.1. Hadoop代码版本 2 2.2. 联网 2 2.3. java 2 2.4. Ant和Cygwin 3 2.5. Eclip ...

  5. 如何高效的阅读Hadoop源代码?Hadoop的源代码写的怎么样?

    个人谈谈阅读hadoop源代码的经验. 首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真 ...

  6. 将hadoop源代码导入eclipse

    1. 安装JDK,eclipse,下载hadoop源代码并解压到某一个目录. 2. 安装maven,将bin目录添加到PATH环境变量中. 3. 安装protobuf2.5.0,将protoc-2.5 ...

  7. Hadoop源代码分析

    http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...

  8. Hadoop源代码分析(完整图文版) part 1

    在网上看到了很多此文章的装载,但是都是纯文字,这篇文章在没有图片的情况下阅读起来意义不大了.花了点时间上传了100多张图片,希望对大家学习hadoop有帮助. Hadoop源代码分析(一) 关键字:  ...

  9. 膜拜,华为内部都在强推的783页大数据处理系统:Hadoop源代码pdf

    前言 都说程序员工资高.待遇好, 2022 金九银十到了,你的小目标是 30K.40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer ...

最新文章

  1. ios打包报错:User interaction is not allowed
  2. 实验九——基本数据类型存储及应用总结
  3. C++继承详解三 ----菱形继承、虚继承
  4. Linux 设备驱动模型中的class(类)
  5. SSM:web目录下有的jsp和图片不能显示,有的可以显示的解决方法
  6. Oracle sqlldr
  7. 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...
  8. StyleGAN_LatentEditor-master(Image2StyleGAN):如何将图像嵌入到 StyleGAN 潜在空间中?代码运行过程
  9. web重启tomcat_使用docker构建jdk镜像和web服务镜像
  10. 两表查询很慢mysql_影响mysql性能的方面
  11. Java简单ztree树
  12. Cesium笔记之加载GIF图
  13. 揭秘收入中常见的避税方法
  14. 修改战网昵称服务器错误,暴雪又改了游戏平台名字 暴雪战网回来了
  15. Foxmail管理多个电子邮箱
  16. ElasticSearch.net NEST批量创建修改删除索引完整示例
  17. html5绘制渐变图形-线性渐变
  18. 应用签名不一致,该应用可能被篡改的问题
  19. ZJYYOJ 活字印刷(dfs)[C,C++]
  20. 【mac 环境】邮箱密码修改后,foxmail无法正常接收邮件

热门文章

  1. vivo android system,Android集成vivo推送
  2. 《韭菜的自我修养》读书笔记
  3. (算法练习)蓝桥杯——饮料换购
  4. 排序二叉树节点的删除
  5. win10/win11自带的截图和剪贴板快捷键,摆脱第三方截图工具的烦恼
  6. php缓存输出压缩,PHP_控制PHP的输出:缓存并压缩动态页面,mod_gzip是一个Apache模块,其功 - phpStudy...
  7. 计算机基础知识教案 技能高考,湖北技能高考计算机专业集训教学大纲
  8. Java遍历Json数据
  9. 2009年行业盘点:制造业曲线救国
  10. 盘点算法优化在物流行业的典型应用案例