(MapReduce学习笔记一)Job提交过程及数据切片机制简述_一个mapreduce任务在提交阶段是如何对输入数据进行分片划分的?-程序员宅基地

技术标签: 学习  mapreduce  hadoop  

首先,我们需要了解MapRedurce的基本框架


请添加图片描述

我们都知道MapReduce主要分为Map阶段和Reduce阶段,我们将Map阶段处理的任务称之为MapTask,Reduce阶段处理的任务称之为ReduceTask

而在处理Mapper之前,需要经历一个数据如何输入的问题,即InputFormat阶段。

一、数据切片及Maptask并行度决定机制

InputFormat:(中文翻译:输入格式):是org.apache.hadoop.mapreduce包下的一个抽象类。描述了 Map-Reduce 作业的输入规范。Map-Reduce 框架依赖作业的InputFormat来:验证作业的输入规范

1.1、问题引入

Map-Reduce框架通过FileInputFormat的子类 将输入文件拆分为逻辑InputSplit(数据切片),后将每个切片分配给单独的Mapper,进而形成一个个的MapTask。

默认使用的输入方式为:TextInputFormat

注意:MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度,

如何理解:例:1G的数据,启动8个MapTask,可以提高集群的并发处理能力。那么1K的数据,也启动8个MapTask,会提高集群性能吗?MapTask并行任务是否越多越好呢?哪些因素影响了MapTask并行度?

附:InputFormat层次图
请添加图片描述

1.2、Maptask并行度决定机制

首先,我们要区分数据切片和数据块的概念

数据块:Block,是HDFS物理上将文件分成一块一块进行存储,每一个Block都能在磁盘上找到,是真实存在的。数据块是HDFS存储数据的单位

数据切片:InputSplit,逻辑概念,只是在数据输入的时候逻辑上对数据进行切片处理,并不会在磁盘上将其进行分配分片存储。数据切片是MapReduce程序计算输入数据的单位

一个数据切片会对应启动一个MapTask,默认情况下,切片大小等于块大小(BlockSize)

由此可见:一个Job的Map阶段并行度由客户端在提交Job时的切片数决定

此外:当输入数据为多个文件时,此时的切片操作是不考虑数据集的整体的,是逐个针对每个文件单独切片。

二、Job提交流程简述

首先我们需要了解,用户的一个计算请求就是一个Job(例WordCount),而每一个Job都会被拆分为多个Task(MapTask、ReduceTask)进行处理。

注:在分布式环境下,多Task在多台主机下处理


每一个MapReduce程序中 都需要一个Driver类来执行提交,提交的是一个描述了各种必要信息的Job对象。

/**
	WordCount案例的Driver类
*/
//1.获取job
Configuration conf = new Configuration();
Job job = Job.getInstance(conf);

//2.设置jar包路径
job.setJarByClass(WordCountDriver.class);

//3.关联mapper、reducer
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);

//4.设置map输出的KV类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);

//5.设置最终输出的kv类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

//6.设置输入路径 输出路径
FileInputFormat.setInputPaths(job, new Path("E:\\hadooptest\\input"));
FileOutputFormat.setOutputPath(job, new Path("E:\\hadooptest\\output\\outputword"));

//7.提交job
boolean result = job.waitForCompletion(true);
System.exit(result ? 0 : 1);

其中,boolean result = job.waitForCompletion(true);代码的具体底层实现功能大致为:

  1. 建立连接:其中需要判断 是本地运行环境还是yarn集群运行环境
  2. 提交Job:
    1. 获取jobid,并创建job路径,该路径下要存放的是该job相关的一些文件,包括切片文件、job.xml,以及相关jar包等。
    2. 计算切片,生成切片规划文件

参考:Job提交流程源码和切片源码详解 - 有心有梦 - 博客园 (cnblogs.com)

三、切片机制概述

通用的是:FileInputFormat

  1. 按照文件的内容长度进行切片,且默认切片大小 = blocksize
  2. 每次切片时,都要判断剩下的部分是否大于块的1.1倍,不大于就将剩下的内容划分为一个切片
  3. 切片信息会被写到一个切片规划文件中,提交切片规划信息到Yarn后,Yarn上的MrAppMaster会根据切片规划文件计算开启MapTask的个数

3.1、TextInputFormant切片机制

TextInputFormant为FileInputFormat的子类,是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量, LongWritable类型。值是这行的内容,不包括任何行终止符(换行符和回车符),Text类型。

3.2、CombineTextInputFormat切片机制

框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其低下。

CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个MapTask处理。

CombineTextInputFormat切片过程分为两部分:虚拟存储过程和切片过程。具体切片机制参考:MapReduce-CombineTextInputFormat 切片机制 - 江湖小小白 - 博客园 (cnblogs.com)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43110389/article/details/123140076

智能推荐

TensorFlow2利用Fashion_mnist数据集实现神经网络图像分类任务_difussion model mnist-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏25次。1. 导入所需的库import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfor i in [tf, np]: print(i.__name__,": ",i.__version__,sep="")输出:tensorflow: 2.2.0numpy: 1.17.42. 导入Fashion_MNIST数据集fashion_mnist = tf.keras.datasets.fas_difussion model mnist

【板栗糖GIS】WPS—怎么压缩ppt文件使文件变小_wps ppt压缩-程序员宅基地

文章浏览阅读693次。点击ppt中的某一张图片,上边工具栏会出现压缩图片的选项。_wps ppt压缩

html中video自动循环,HTML5视频自动循环播放方法-程序员宅基地

文章浏览阅读9.4k次。如果需要在网页中添加视频,可以参考下面的代码,支持MP4视频自动循环播放。纯HTML5视频自动循环播放HTML>不过火狐浏览器貌似默认禁止自动播放音频视频,需要到选项 → 隐私与安全 → 自动播放,设置允许音频和视频。如果不设置就可以自动播放,可以使用代码二。配合JS自动循环播放html>HTML5视频自动循环播放window.onload=function(){varloca..._video html播放快结束的时候一直循环最后几秒

STM32F4开发板硬件简介_stm32f4探索者开发板介绍-程序员宅基地

文章浏览阅读8.2k次,点赞8次,收藏44次。摘自:STM32F4开发板硬件平台简介作者:SKY丶丿平才发布时间: 2021-03-20 10:44:41网址:https://blog.csdn.net/weixin_48264057/article/details/115023309_stm32f4探索者开发板介绍

IDG资本投资列表_idg 被投企业清单-程序员宅基地

文章浏览阅读8.1k次。2016.12.20 乐刻运动 体育运动 B轮 亿元及以上人民币2016.12.14 SenseTime商汤科技 企业服务 B轮 1.2亿美元2016.12.13 OL里昂 体育运动 战略投资 1亿欧元2016.12.13 High Fidelity _idg 被投企业清单

VR全景云端看车,让你享受不一样的购车体验_vr看车-程序员宅基地

文章浏览阅读127次。此外,VR全景看车还可以提供个性化选车服务,根据消费者的喜好和需求来匹配合适的车型,消费者自定义汽车的外观和配置,以此来挑选更符合心意的车辆。消费者通过VR全景技术,身临其境云端看车,720度多角度缩放查看,同传统的图文视频的看车模式相比,VR看车展现的更加详细,3D可视化说明书、热点标注、一键更换外观等,帮助消费者解决了不少的看车难题。除此之外,在VR虚拟车展中,我们还可以适当的添加一些营销活动,例如签到有礼、分享转发、砸金蛋等趣味化游戏,让消费者得到一些购车优惠,这样能更有效提升意向客户的购买率。_vr看车

随便推点

团队项目需求分析-程序员宅基地

文章浏览阅读58次。一、前言课程名称:软件工程实践作业要求:团队项目需求分析团队名称:葫芦娃战队本次作业目标:完成项目需求说明书软件规格需求说明书:https://files.cnblogs.com/files/beifengtuanzi/%E8%91%AB%E8%8A%A6%E5%A8%83%E9%9C%80%E6%B1%82%E8%AF%B4%E6%98%8E%E4%B9%A6.zip需求报告PPT...

Linux命令之man命令数字含义_man 3 printf与man 1 printf有何区别?这里的数字的意义是什么-程序员宅基地

文章浏览阅读1.4k次。Linux man命令数字含义 1 User Commands 2 System Calls 3 C Library Functions 4 Devices and Special Files 5 File Formats andConventions _man 3 printf与man 1 printf有何区别?这里的数字的意义是什么

单片机遥控车c语言程序,2.4G无线遥控车制作 STC15单片机源程序-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏5次。#include "stc15f2k60s2.h"#include "nrf.h"#include "oled.h"#include "usart.h"#include "motor.h"#define L_UPPER_LIMIT 240 ..._遥控车程序c代码

TLS_server_method() / TLS_client_method()-程序员宅基地

文章浏览阅读5k次。https://github.com/guanzhi/GmSSL/blob/master/include/openssl/ssl.h#L1673-L1720#define SSLv23_method TLS_method#define SSLv23_server_method TLS_server_method#defi..._tls_server_method

EduSoho开源版 播放几分钟就 您的浏览器不能播放此视频_edusoho 视频加载遇到问题-程序员宅基地

文章浏览阅读666次。EduSoho开源版 播放几分钟就 您的浏览器不能播放此视频,快进也会出现相同的问题。本地视频出现当前浏览器不能播放的原因:1、服务器 php 是否安装 fileinfo组件。2、视频格式编码不是MP4,H264编码,如果不清楚格式编码,用格式工厂重新转码输出MP4,H264编码;3、视频太大或者网络太慢,本地视频没有切片播放功能,加载完全时才能播放,如果在固定时间内没有加载完全,就会出现不能播放提示。处理建议:可以对接第三方云视频,例如阿里云点播、腾讯云点播、七牛云点播、保利威视点播等等._edusoho 视频加载遇到问题

AS入门第三课:AS基本语法-程序员宅基地

文章浏览阅读74次。在第一课中我们己经介绍过,ActionScript是一部语言,即然是语言它就有它自己的语法[color="#993300"][1b]一、ActionScript语句是区分大小写的:[/1b][/color]在ActionScript中英语字母的大小写具有不同的意义的.我们来看一个例子:打开时间轴第一帧的动作面板,输入: Name="Sanbos"; name="假博士"; ..._前端as语法