转自: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. UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出

    TCP输出 下图展示了应用进程写数据到TCP套接口的过程. 每一个TCP套接口有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小. 当应用进程调用write时,内核从应用进 ...

  2. 格式化文本数据抽取工具awk

    在管理和维护Linux系统过程中,有时可能需要从一个具有一定格式的文本(格式化文本)中抽取数据,这时可以使用awk编辑器来完成这项任务.发明这个工具的作者是Aho.Weinberg和Kernighan ...

  3. log4cplus的安装与使用初步

    1. 简单介绍 log4cplus是C++编写的开源的日志系统,The purpose of this project is to port the excellentLog for Java (lo ...

  4. SVN 快速入门!

    输入账户密码即可!

  5. Python list添加新元素

    append()和insert() 添加新元素现在,班里有3名同学:>>> L = ['Adam', 'Lisa', 'Bart']今天,班里转来一名新同学 Paul,如何把新同学添 ...

  6. websocket 协议 使用

    1.websocket简介 websocket最主要特点是:服务器可以主动给浏览器发送消息,而不是被动接收浏览器请求. websock协议可以参考:http://www.ruanyifeng.com/ ...

  7. VmProtect v2.12.3 安装注冊

    执行vmprotect.exe開始安装: 1.选择语言.默觉得"English": 2.欢迎页,点"Next"到下一步: 3.授权信息,选"I acc ...

  8. spring mvc 返回json的配置

    转载自:http://my.oschina.net/haopeng/blog/324934 springMVC-servlet.xml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  9. javascript通用函数库

    /* -------------- 函数检索 -------------- trim函数:                         trim() lTrim() rTrim() 校验字符串是否 ...

  10. Ubuntu 14.10 -- 异次元软件世界

    Ubuntu 14.10 中文桌面版/服务器正式版下载 - 华丽免费易于入门的 Linux 操作系统 [ 系统工具 - Linux // 2014-10-25 ]     一说到 Linux,就不得不 ...