转自:http://blog.csdn.net/Androidlushangderen/article/details/41051027

继前段时间分析Redis源码一段时间之后,我即将开始接下来的一段技术学习的征程,研究的技术就是当前非常火热的Hadoop,但是一个Hadoop生态圈是非常庞大的,所以首先我的打算是挑选其中的一部分模块,去学习,研究,我就选中了MapReduce。MapReduce最早是由Google公司在04年发布的论文中提出的一种思想,后来被人实现出来,才有了后面的Hadoop的诞生。学习MapReduce的打算一定不会如Redis源码学习一样,我只会挑出其中一些用的比较多的过程分析,希望能理解的更深吧。跟上次一样,学习一门技术,首先要了解整体,所以我对Hadoop的MapReduce也做了结构分类。首先是一个图形化的标示形式,用关系类图做出的一张图:

内容会比较多,下面给出我花了个把小时整理出的文字功能描述分类,结合图片和文字,理解效果会更好:

MapReduce源码分析(主要四大模块,others表示父目录下的.java文件的总称):
1.org.apache.hadoop.mapred(旧版MapReduceAPI):
(1).jobcontrol(job作业直接控制类)
(2).join:(job作业中用于模仿数据连接处理操作工具)
(3).lib(MapReduce所依赖的工具方法)
|----(1).aggregate(用于数据聚合处理的文件)
|----(2).db(数据库操作相关文件)
|----(3).others
(4).pipes(Hadoop MapReduce的C++接口代称)
(5).tools(就包含了一个MRAdmin文件,用于连接connect操作,新版本中已无此文件)
(6).others
2.org.apache.hadoop.mapreduce(新版MapReduceAPI):
(1).example(存放运行Hadoop作业的例子)
(2).lib(新版MapReduce所依赖的工具方法):
|----(1).aggregate(用于数据聚合处理的文件)
|----(2).db(数据库操作相关文件)
|----(3).others
(3).security(Hadoop1.0版本中新添加的关于安全方面的代码)
|----(1).token(用于安全检测的token验证)
|        |----(1).delegation(token目录下的代理,委派token)
|        |----(2).others
|----(2).others
(4).server(Hadoop服务端的功能,主要包括jobTracker,taskTracker)
|----(1).jobtracker(任务调度Tracker)
|----(2).tasktracker(任务执行Tracker)
        |----(1).userlogs(任务执行的用户日志记录模块)
        |----(2).others
(5).split(用于作业job的分割处理类)
(6).others
3.org.apache.hadoop.filecache(文件缓存,用于文件分发):
(1).DistributedCache.java(将job指定的文件,在job执行前,先行分发到task执行的机器上)
(2).TaskDistributedCacheManager.java(即Job ID、Job Conf即配置参数、Job配置文件路径、该Job包含的任务集合(当前TaskTracker内的)以及一些用户权限等信息)
(3).TrackerDistributedCacheManager.java(,用来管理该机器上所有task的cache文件)
4.org.apache.hadoop---mapreduce-default.xml:
主目录下的MapReduce的默认文件,包括地址端口号等的配置。

上述的所有内容都是我经过总结所得,难免会有所错误,希望大家能从整体上首先掌握MapReduce的架构体系,好逐一击破,有问题可以直接评论指出,后续我分析过的代码会定时同步到我的github上,地址: https://github.com/linyiqun

MapReduce总体架构分析的更多相关文章

  1. MapReduce整体架构分析

    继前段时间分析Redis源代码一段时间之后.我即将開始接下来的一段技术学习的征程.研究的技术就是当前很火热的Hadoop,可是一个Hadoop生态圈是很庞大的.所以首先我的打算是挑选当中的一部分模块, ...

  2. leveldb 源码--总体架构分析

    一 本文目的 对leveldb的总体设计框架分析(关于leveldb基本原理,此文不做阐述,读者可以自行检索文章阅读即可),对leveldb中底层数据存储数据格式,内存数据模型,compact,版本管 ...

  3. jQuery源码分析-01总体架构

    1. 总体架构 1.1自调用匿名函数 self-invoking anonymous function 打开jQuery源码,首先你会看到这样的代码结构: (function( window, und ...

  4. Openvswitch原理与代码分析(1):总体架构

      一.Opevswitch总体架构   Openvswitch的架构网上有如下的图表示:       每个模块都有不同的功能 ovs-vswitchd 为主要模块,实现交换机的守护进程daemon ...

  5. [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构

    [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 目录 [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构 0x00 摘要 0x01使用 1.1 配置 ...

  6. jQuery总体架构

    第一章  总体架构 1.设计理念 jQuery的理念就是“写更少的代码,做更多的事”,而且做到代码的高度兼容性. 2.总体架构 大致可以分为三个部分:构造模块,底层支持模块和功能模块. 3.使用自调用 ...

  7. Apache Mesos总体架构

    http://developer.51cto.com/art/201401/426507.htm 1. 前言 同其他大部分分布式系统一样,Apache Mesos为了简化设计,也是采用了master/ ...

  8. Qualcomm Android display架构分析

    Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...

  9. 分布式MySQL数据库TDSQL架构分析

    摘要:腾讯计费平台部为了解决基于内存的NoSQL解决方式HOLD平台在应对多种业务接入时的不足.结合团队在MySQL领域多年应用和优化经验,终于在MySQL存储引擎基础上,打造一套分布式SQL系统TD ...

随机推荐

  1. swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练

    近期准备将项目转化为OC与swift混合开发.试着写一个swift音乐播放器的demo,体会到了swift相对OC的优势所在.废话不多说.先上效果图: watermark/2/text/aHR0cDo ...

  2. weblogic 内存 及 内存溢出

    . 区分JVM虚拟机选项:Xms Xmx PermSize MaxPermSize JVM限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制 ...

  3. IOS手机使用Fiddler抓获HTTPS报文方法

    Configure Fiddler Click Tools > Fiddler Options > Connections. Click the checkbox by Allow rem ...

  4. 清除tomcat的缓存

    删除tomcat目录下的work目录中的Catalina目录就好了!

  5. java接口的高级应用

    直接上菜 /*接口类*/ public interface MsgListener{ public void afterMsgRecived(String msgData); } /*工具类*/ pu ...

  6. DBCP( 二) DataBase Connection Pool 的使用

    使用DBCP必须用的三个包: commons-dbcp-1.2.1.jar, commons-pool-1.2.jar, commons-collections-3.1.jar. 配置参数. Java ...

  7. ubuntu系统——增加磁盘空间

    1.df查看磁盘使用情况 2.将windows下的磁盘空间分出与部分给ubuntu 3.格式化磁盘    在终端输入:mkfs -t ext3 /dev/sdb1    用ext3格式对/dev/sd ...

  8. LDAP 中 CN,OU,DC 的含意

    CN, OU, DC 都是 LDAP 连接服务器的端字符串中的区别名称(DN, Distinguished Name) LDAP连接服务器的连接字串格式为:ldap://servername/DN   ...

  9. C#指南,重温基础,展望远方!(11)C#委托

    委托类型表示对具有特定参数列表和返回类型的方法的引用. 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体. 委托类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还 ...

  10. 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)

    非变动性算法代码分析与示例: 一.for_each  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14   // TEMPLATE FUNCTION for_eac ...