Hadoop源代码组织结构
文章转自: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源代码组织结构相关推荐
- hadoop源代码组织结构与阅读技巧
本文将介绍在 Eclipse 下阅读 Hadoop 源代码的一些技巧, 比如如何查看一个基类有哪些派生类. 一个方法被其他哪些方法调用等. 本文地址:http://www.cnblogs.com/ar ...
- Hadoop源代码分析 - MapReduce(转载)
1. Hadoop源代码分析(MapReduce概论) http://caibinbupt.javaeye.com/blog/336467
- eclipse下编译hadoop源代码(转)
hadoop是一个分布式存储和分布式计算的框架.在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译.打包. 下面将详细描述如何从sv ...
- 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 ...
- 如何高效的阅读Hadoop源代码?Hadoop的源代码写的怎么样?
个人谈谈阅读hadoop源代码的经验. 首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真 ...
- 将hadoop源代码导入eclipse
1. 安装JDK,eclipse,下载hadoop源代码并解压到某一个目录. 2. 安装maven,将bin目录添加到PATH环境变量中. 3. 安装protobuf2.5.0,将protoc-2.5 ...
- Hadoop源代码分析
http://wenku.baidu.com/link?url=R-QoZXhc918qoO0BX6eXI9_uPU75whF62vFFUBIR-7c5XAYUVxDRX5Rs6QZR9hrBnUdM ...
- Hadoop源代码分析(完整图文版) part 1
在网上看到了很多此文章的装载,但是都是纯文字,这篇文章在没有图片的情况下阅读起来意义不大了.花了点时间上传了100多张图片,希望对大家学习hadoop有帮助. Hadoop源代码分析(一) 关键字: ...
- 膜拜,华为内部都在强推的783页大数据处理系统:Hadoop源代码pdf
前言 都说程序员工资高.待遇好, 2022 金九银十到了,你的小目标是 30K.40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer ...
最新文章
- ios打包报错:User interaction is not allowed
- 实验九——基本数据类型存储及应用总结
- C++继承详解三 ----菱形继承、虚继承
- Linux 设备驱动模型中的class(类)
- SSM:web目录下有的jsp和图片不能显示,有的可以显示的解决方法
- Oracle sqlldr
- 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...
- StyleGAN_LatentEditor-master(Image2StyleGAN):如何将图像嵌入到 StyleGAN 潜在空间中?代码运行过程
- web重启tomcat_使用docker构建jdk镜像和web服务镜像
- 两表查询很慢mysql_影响mysql性能的方面
- Java简单ztree树
- Cesium笔记之加载GIF图
- 揭秘收入中常见的避税方法
- 修改战网昵称服务器错误,暴雪又改了游戏平台名字 暴雪战网回来了
- Foxmail管理多个电子邮箱
- ElasticSearch.net NEST批量创建修改删除索引完整示例
- html5绘制渐变图形-线性渐变
- 应用签名不一致,该应用可能被篡改的问题
- ZJYYOJ 活字印刷(dfs)[C,C++]
- 【mac 环境】邮箱密码修改后,foxmail无法正常接收邮件
热门文章
- vivo android system,Android集成vivo推送
- 《韭菜的自我修养》读书笔记
- (算法练习)蓝桥杯——饮料换购
- 排序二叉树节点的删除
- win10/win11自带的截图和剪贴板快捷键,摆脱第三方截图工具的烦恼
- php缓存输出压缩,PHP_控制PHP的输出:缓存并压缩动态页面,mod_gzip是一个Apache模块,其功 - phpStudy...
- 计算机基础知识教案 技能高考,湖北技能高考计算机专业集训教学大纲
- Java遍历Json数据
- 2009年行业盘点:制造业曲线救国
- 盘点算法优化在物流行业的典型应用案例