文档章节

大数据(hadoop-Mapreduce原理架构)

这很耳东先生
 这很耳东先生
发布于 04/30 18:41
字数 1525
阅读 31
收藏 0

课程目标:

1:MapReduce的应用场景

2:MapReduce编程模型

3:MapReduce的架构

4:常见MapReduce应用场景

5:总结

MapReduce的定义

源自于Google的MapReduce论文
  发表于2004年12月
  Hadoop MapReduce是Google MapReduce克隆版
     
MapReduce特点
  易于编程
  良好的扩展性
  高容错性
  适合PB级以上海量数据的离线处理

MapReduce的特色—不擅长的方面

实时计算
    像MySQL一样,在毫秒级或者秒级内返回结果
流式计算
    MapReduce的输入数据集是静态的,不能动态变化
    MapReduce自身的设计特点决定了数据源必须是静态的
DAG计算
    多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出

MapReduce的实例一Wordcount

场景:有大量文件,里面存储了单词,且一个单词占一行

任务:如何统计每个单词出现的次数   

类似应用场景
    搜索引擎中,统计最流行的K个搜索词
    统计搜索词频率,帮助优化搜索词提示

     Case1:整个文件可以加载到内存中

     Case2:文件太大不能加载到内存中,但<word, count>可以存放到内存中;

     Case3:文件太大无法加载到内存中,且<word, count>也不行

     将问题范化为:有一批文件(规模为TB级或者PB级),如何统计这些文件中所有单词出现的次数

     方案:首先,分别统计每个文件中单词出现次数,然后累加不同文件中同一个单词出现次数

     典型的MapReduce过程
 

Input:一系列key/value对

用户提供两个函数实现:
    map(k,v)list(k1,v1)
    reduce(k1, list(v1))v2

(k1,v1) 是中间key/value结果对
Output:一系列(k2,v2)对

map(key,value):
//key : document name; value: text of document
for each word w in value :
             emit(w,1)

reduce (key,value): 
//key : a word; value : an iterator over counts
             result = 0
             for each count v in values :
             result += v
             emit(key,result)

MapReduce编程模型

MapReduce将作业的整个运行过程分为两个阶段:Map阶段和Reduce阶段

Map阶段由一定数量的Map Task组成
    输入数据格式解析:InputFormat
    输入数据处理:Mapper
    数据分组:Partitioner
Reduce阶段由一定数量的Reduce Task组成
    数据远程拷贝
    数据按照key排序
    数据处理:Reducer
    数据输出格式:OutputFormat
 

MapReduce编程模型一内部逻辑

 

MapReduce编程模型一外部物理结构

 

MapReduce编程模型一InputFormat

文件分片
将分片数据解析成key/value对
    默认实现是TextInputFormat

TextInputFormat
    key是行在文件中的偏移量,value是行内容
 

MapReduce编程模型一Split与Block

Block
    HDFS中最小的数据存储单位
    默认是64MB或128M

Split
    MapReduce中最小的计算单元
    默认与Block一一对应

Block与Split
    Split与Block是对应关系是任意的,可由用户控制

 

MapReduce编程模型一InputFormat

 

MapReduce编程模型一Combiner

Combiner可做看local Reducer
    合并相同的key对应的value(Wordcount例子)
    通常与Reducer逻辑一样
好处
    减少Map Task输出数据量(磁盘IO)
    减少Reduce-Map网络传输数据量(网络IO)
如何正确使用
    结果可叠加
    SUM
 

MapReduce编程模型

Map阶段
    InputFormat(默认TextInputFormat)
    Mapper
    Combiner(local Reducer)
    Partitioner
Reduce阶段
    Reducer
    OutputFormat(默认TextOutputFormat)

MapReduce1.0架构


MapReduce(分布式计算框架)

 

MapReduce2.0架构

Client
    与MapReduce 1.0的Client类似,用户通过Client与YARN 交互,提交MapReduce作业,查询作业运行状态,管理作 业等。

MRAppMaster
    功能类似于 1.0中的JobTracker,但不负责资源管理;
    功能包括:任务划分、资源申请并将之二次分配个Map Task和Reduce Task、任务状态监控和容错。

MapReduce2.0运行流程

MapReduce2.0容错性

MRAppMaster容错性
    一旦运行失败,由YARN的ResourceManager负责重新启动,最多重启次数可由用户设置,默认是2次。一旦超过最高重启次数,则作业运行失败。
Map Task/Reduce Task
    Task周期性向MRAppMaster汇报心跳;
    一旦Task挂掉,则MRAppMaster将为之重新申请资源, 并运行之。最多重新运行次数可由用户设置,默认4次。

MapReduce计算框架一数据本地性

什么是数据本地性( data locality)
    如果任务运行在它将处理的数据所在的节点,则称该任务 具有“数据本地性”
    本地性可避免跨节点或机架数据传输,提高运行效率
数据本地性分类
    同节点(node-local)
    同机架(rack-local)
    其他(off-switch)

 

MapReduce计算框架一推测执行机制

作业完成时间取决于最慢的任务完成时间
    一个作业由若干个Map任务和Reduce任务构成
    因硬件老化、软件Bug等,某些任务可能运行非常慢

推测执行机制 就是为了解决上面的情形
    发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度
    为拖后腿任务启动一个备份任务,同时进行
    谁先运行完,则采用谁的结果

不能启用推测执行机制
    任务间存在严重的负载倾斜,如一个任务处理的数据远大于其他
    特殊任务,比如任务向数据库中写数据
 

常见MapReduce应用场景

简单的数据统计,比如网站pv、uv统计

搜索引擎建索引

海量数据查找,在海量数据中并行查找符合某个特征的数据

复杂数据分析算法实现,mahout基于MR实现的数据挖掘库
    聚类算法
    分类算法
    推荐算法
    图算法
 

总结

MapReduce基本原理

MapReduce编程模型

MapReduce架构

MapReduce任务调度器

MapReduce应用场景

 

 

 

 

 

© 著作权归作者所有

这很耳东先生
粉丝 9
博文 110
码字总数 288043
作品 0
广州
私信 提问
大数据经典学习路线(及供参考)之 一

1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此...

柯西带你学编程
2018/05/22
0
0
大数据教程(8.1)mapreduce核心思想

上一章介绍了hadoop的HDFS文件系统的原理及API使用。本章博主将继续对hadoop的mapreduce编程框架进行分享。 mapreduce原理篇 mapreduce是一个分布式运算程序的编程框架,是用户开发“基于had...

em_aaron
2018/11/19
68
0
什么是hadoop大数据?我又为什么要写这篇文章?

点击链接 https://my.oschina.net/ijj/blog 关注我的博客。学习更多hadoop知识。 这些天,有很多人咨询我大数据相关的一些信息,觉得大数据再未来会是一个朝阳行业,希望能尽早学会、入行,借...

隐姓埋名啊
2017/03/16
539
1
一文详解大规模数据计算处理原理及操作重点

作者介绍 李智慧,《大型网站技术架构:核心原理与案例分析》作者。曾供职于阿里巴巴与英特尔亚太研发中心,从事大型网站与大数据方面的研发工作,目前在做企业级区块链方面的开发工作。 大数...

DBAplus社群
2018/08/07
0
0
Hadoop的辉煌还能延续多久?

Hadoop技术已经无处不在。不管是好是坏,Hadoop已经成为大数据的代名词。短短几年间,Hadoop从一种边缘技术成为事实上的标准。看来,不仅现在Hadoop是企业大数据的标准,而且在未来,它的地位...

一枚Sir
2014/08/05
243
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
5
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
10
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
8
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部