MapReduce计算框架高级特性程序运行并发度

2019/2/19 星期二

MapReduce计算框架高级特性程序运行并发度

所谓的并发度,就是在MapReduce执行程序的过程中有多少个map task进程和reduce task进程,来一起完成程序的处理。

MapReduce就是把业务处理逻辑变成分布式来处理。

reduce task 数量的决定机制 //全局的聚合操作 由业务场景决定
1、业务逻辑需要
2、数据量大小
设置方法:
job.setNumReduceTasks(5)

//reduce task的数量不能够任意的指定,比如:我们在一大堆的英文文件中,我们要去统计有多少个单词,这个时候reduce task在全局 程序执行的过程中只能有1个,为什么呢?因为:需要让所有的map task 把所有的结果给到一个reduce task 这样reduce task 就会把所有的结果统计出来。在这种情况下reduce task就没办法用多个。
比如:在wordcount中,我们统计每一个单词出现的总次数,在这种情况下,reduce task就 可以由任意多个。因为,maptask处理的结果经过shuffle阶段之后,相同的单词只会出现在同一个reduce task中。我们可能会得到5个文件,但这5个文件中统计的单词数量是全局唯一的。

map task 数量的决定机制:
由于map task 之间没有协作关系,每一个map task 都是各自为政,在map task 的处理中没法做“全局”性的聚合操作,所以map task 的数量完全取决于所处理的数据量的大小

决定机制:
对待处理数据进行“切片”
每一个切片分配一个map task 来处理

Mapreduce 框架中默认的切片机制:
TextInputFormat.getSplits()继承自FileInputFormat.getSplits()

数据切片的思考
1:定义一个切片大小:可以通过参数来调节,默认情况下等于“hdfs 中设置的blocksize”,通常是128M //一定程度上会减少网络传输数据,但并不是绝对的。
2:获取输入数据目录下所有待处理文件List
3:遍历文件List,逐个逐个文件进行切片
for(file:List)
对file 从0 偏移量开始切,每到128M 就构成一个切片,比如a.txt(200M),就会被切成两个切片: a.txt: 0-128M, a.txt :128M-256M 再比如b.txt(80M),就会切成一个切片, b.txt :0-80M

如果要处理的数据是大量的小文件,使用上述这种默认切片机制,就会导致大量的切片,从而maptask 进程数特别多,但是每一个切片又非常小,每个maptask 的处理数据量就很小,从而,整体的效率会很低。通用解决方案:就是将多个小文件划分成一个切片;实现办法就是自定义一个Inputformat 子类重写里面的getSplits 方法;
Mapreduce 框架中自带了一个用于此场景的Inputformat 实现类:CombineFileInputformat

原文地址:http://blog.51cto.com/12445535/2351751

时间: 2024-12-11 19:59:18

MapReduce计算框架高级特性程序运行并发度的相关文章

MapReduce计算框架

MapReduce计算框架 一.MapReduce实现原理 图展示了MapReduce实现中的全部流程,处理步骤如下: 1.用户程序中的MapReduce函数库首先把输入文件分成M块(每块大小默认64M),在集群上执行处理程序,见序号1 2.主控程序master分配Map任务和Reduce任务给工作执行机器worker.见序号2 3.一个分配了Map任务的worker读取并处理输入数据块.从数据片段中解析出key/value键值对,然后把其传递给Map函数,由Map函数生成并输出中间key/va

hadoop之魂--mapreduce计算框架,让收集的数据产生价值 (第4篇)

  通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. Mapreduce计算框架 如果将Hadoop比做一头大象,那么MapReduce就是那头大象的电脑.MapReduce是Hadoop核心编程模型.在Hadoop中,数据处理核心就是MapReduce程序设计模型. 本章内容: 1) MapReduce编程模型 2) MapReduce执行流程 3) MapReduce数据本地化

Hadoop MapReduce计算框架

1.MapReduce理论 1.1.MapReduce是什么? MapReduce用于处理海量数据的分布式计算框架,是Hadoop生态中的核心之一(MapReduce用于计算海量数据,HDFS用于存储海量数据):MapReduce是谷歌公司在研究如何处理海量数据所提出的一种面向大规模数据处理的并行计算模型和方法. 1.2.MapReduce概述 MapReduce是一个计算框架,用于对大数据进行处理,它的主要思想就是"分而治之":整个MapReduce计算过程可以分为Map(映射)阶段

iOS开发——高级特性&Runtime运行时特性详解

Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars) Objective-C Associated Objects Method Swizzling 总结 引言 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量

Big Data(七)MapReduce计算框架(PPT截图)

一.为什么叫MapReduce? Map是以一条记录为单位映射 Reduce是分组计算 原文地址:https://www.cnblogs.com/littlepage/p/11156617.html

Hadoop中MapReduce计算框架以及HDFS可以干点啥

我准备学习用hadoop来实现下面的过程: 词频统计 存储海量的视频数据 倒排索引 数据去重 数据排序 聚类分析 ============= 先写这么多

MapReduce编程实战之“高级特性”

本篇介绍MapReduce的一些高级特性,如计数器.数据集的排序和连接.计数器是一种收集作业统计信息的有效手段,排序是MapReduce的核心技术,MapReduce也能够执行大型数据集间的""连接(join)操作. 计数器 计数器是一种收集作业统计信息的有效手段,用于质量控制或应用级统计.计数器还可用于辅助诊断系统故障.对于大型分布式系统来说,获取计数器比分析日志文件容易的多. 示例一:气温缺失及不规则数据计数器 import java.io.IOException; import

开源图计算框架GraphLab介绍

GraphLab介绍 GraphLab 是由CMU(卡内基梅隆大学)的Select 实验室在2010 年提出的一个基于图像处理模型的开源图计算框架,框架使用C++语言开发实现.该框架是面向机器学习(ML)的流处理并行计算框架,可以运行在多处理机的单机系统.集群或是亚马逊的EC2 等多种环境下.框架的设计目标是,像MapReduce一样高度抽象,可以高效执行与机器学习相关的.具有稀疏的计算依赖特性的迭代性算法,并且保证计算过程中数据的高度一致性和高效的并行计算性能.该框架最初是为处理大规模机器学习

Update:Spark原理_运行过程_高级特性

如何判断宽窄依赖: =================================== 6. Spark 底层逻辑 导读 从部署图了解 Spark 部署了什么, 有什么组件运行在集群中 通过对 WordCount 案例的解剖, 来理解执行逻辑计划的生成 通过对逻辑执行计划的细化, 理解如何生成物理计划   如无特殊说明, 以下部分均针对于 Spark Standalone 进行介绍 部署情况 在 Spark 部分的底层执行逻辑开始之前, 还是要先认识一下 Spark 的部署情况, 根据部署情