MapReduce执行及输入和输出过程

Hadoop 键值对的mapreduce过程剖析 Hadoop的Mapreduce是一个分布并行处理大数据的程序框架,一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。             MapReduce程序是通过键值对来操作数据的,其 阅读详情

执行过程

(1)MapReduce框架使用InputFormat模块做Map前的预处理,然后将输入文件切分为多个InputSplit。
(2)通过RecordReader根据InputAplit中的信息来处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的健值对,输入给Map任务。
(3)Map任务会根据用户自定义的映射规则,输出一系列的<key,value>为中间结果。
(4)Shuffle过程(以前文章中有详细介绍)
(5)Reduce接收输入,输出结果给OutputFormat模块、
(6)OutputFormat模块验证输出目录是否已存(不存在情况报错在上一篇文章,有解决办法)在以及结果是否符合配置文件,满足就输出到分布式文件系统。

数据的输入格式

MapReduce的输入格式 默认的是 TextInputFormat,即按行将文件中的文本数据读取出来形成<Key, Value>键值对形式。其中的 Key 是行在文件中的偏移量,类型为 LongWritable,Value 就是一行数据,类型为 Text。所以如果 MapReduce输入格式为默认格式,Mapper 接口中的<LongWritable, Text, Text, IntWritable>中前两项是不能改的。要想更改 Mapper 接口输入的键值对数据类型,就需要改变数据的输入格式, 即自定义数据输入格式。

必须实现的方法

  1. getSplits
    (1)确定 分片大小splitSize:通过computeSplitSize(blockSize, minSize, maxSize)方法计算。
    (2)判断文件大小(length)以及是否可分。不可分将整个数据块返回;可分且不为0,按照规定分片,剩余的作为一个分片返回,为0,返回空列表。
    (3)getSplites 方法返回的只是对需要处理的文件
    的一个分片方案,并未对文件进行物理上的划分。
  2. createRecordReader
    返回一个记录读取器 RecordReader,必须要继承并实现抽象类RecordReader 的抽象方法 initialize()、nextKeyValue()、 getCurrentKey()、getCurrentValue()、getProgress()和 close(),其中 nextKeyValue()方法实现了从分片中读取数据并返回<Key, Value>的工作。

自定义输入格式
当我们自定义输入格式类型时,需要继承自 InputFormat抽象类,实现 getSplits()和createRecordReader()方法。去实现 createRecordReader()操作时,就需要通过自定义一个 RecordReader 类,并且这个类需要继承自 RecordReader 抽象类,实 现 RecordReader 抽 象 类 所 规 定 的 包 括 initialize() 、 nextKeyValue() 、getCurrentKey()、getCurrentValue()和 close()五个抽象接口。

数据的输出格式

所谓输出,就是指把Readuce的结果输出到HDFS中如下图在这里插入图片描述
(1)输出格式类型必须继承 OutputFormat 抽象类,其中的三个抽象方法: getRecordWriter()、checkOutputSpecs()和 getOutputCommitter()。其中 getRecordWriter()方法是返回一个写记录的 writer 对 象,checkOutputSpecs()是在提交任务之后用来检查输出的相关设置是否合法。getOutputCommitter()方法将返回一个的 OutputCommitter 对象。
(2)TextOutputFormat 主要是提供了getRecordWriter()操作的实现,而该操作返回一个 LineRecordWriter 类实例。

自定义输出格式

除了默认的的 TextOutputFormat 输出格式类型外,Hadoop 还提供SequenceFileOutputformat 和 NullOutputFormat 等 输 出 格 式 类 型 。当需要自定义输出格式时,需要注意:自定义的输出格式类型需要实现抽象类 OutputFormat,包括上面提到的三个抽象方法。

Hadoop 之Mapreduce wordcount词频统计案例 首先我们来看一张描述MapReduce运行过程的图。 首先input就是输入文件。 spliting:把文件按行经行拆分。 Mapping:把每行的word进行计数。 Shuffing:混洗。将相同的word分发到相同的节点。 Reduceing:对每个节点的word进行统计。 以上就是简单的Mapreduce作业过程。下面看下官网的介绍: A MapReduce job ... 阅读详情

相关推荐

MapReduce的详细过程

MapReduce作为hadoop的编程框架,是工程师最常接触的部分,也是除去了网络环境和集群配 置之外对整个Job执行效率影响很大的部分,所以很有必要深入了解整个过程。本文写作的目的在于使得读者对整个MapReduce过程有比较细致的了解,当自己需要定制MapReduce行为时,知道该重写 哪些类和方法。在写作时,我贴了部分认为重要的源码和接口,并跟着自己的理解,对于某些内容,结 合了自己在工作中遇到的问题,给出了实践参考。

ebay的专栏 7996

MapReduce 框架原理

MapReduce 框架原理 1、InputFormat 数据输入 1.1 切片与MapTask并行度决定机制 1)问题引出 MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度。 思考:1G的数据,启动8个MapTask,可以提高集群的并发处理能力。那么1K的数据,也启动8个MapTask,会提高集群性能吗?MapTask并行任务是否越多越好呢?哪些因素影响了MapTask并行度? 2)MapTask并行度决定机制 数据块: Block是HDFS物理上把数据分成一块一块。

liudachu的博客 3317

大数据Hadoop(十八):MapReduce程序运行模式和深入解析

全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。 目录 本系列历史文章 前言 MapReduce程序运行模式和深入解析 程序运行模式 1、本地运行模式 2、集群运行模式 深入MapReduce 1、MapReduce的输入和输出 2、MapReduce的处理流程解析 ​​​​​​​3、Mapper任务执行过程详解 ​​​​​​​4、Reducer任务执行过程详解 本系列历史文章 2021年大数据Hadoop(十.

Lansonli(蓝深李)的博客 2591

MapReduce流程简单解析

以最经典的WordCount单词计数为例来介绍Map/Reduce阶段具体的处理步骤。

yuzhuzhong的博客 1万+

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

什么是Merkle树?用“文件柜”类比理解区块链的核心技术

Merkle树是一种用于区块链的数据结构,像一个高效的“文件柜”,用于存储和验证大量交易数据。比特币通过Merkle树将交易哈希组织成树状结构,层层汇总,最终生成一个唯一的根哈希,存储在区块头中。这种设计大幅减少数据存储和验证成本,支持快速校验交易的完整性和存在性。Merkle树通过密码学保证数据不可篡改,广泛应用于比特币、区块链及其他分布式系统。它的优势在于高效、轻量和安全,尤其适合轻节点验证和数据同步。理解Merkle树就像掌握区块链的“索引秘籍”,是Web3世界的关键技术。

在路上的专栏 1192

MapReduce工作原理图详解

MapReducer工作原理图详解 一个刚开始学习大数据的小白,愿意和大家分享所学所得。 下面这幅图是我一笔一画制作的,每一步都有标记,详细介绍了MapReducer工作原理。 具体的Shuffle流程如下: 1)MapTask收集我们的map()方法输出的kv对,放到内存缓冲区中 2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件 3)多个溢出文件会被合并成大的溢出文件 4)在溢出过程及...

无_忧的博客 1102

从零开始掌握RDMA拥塞控制:原理、算法与实战解析

本文深入解析了RDMA拥塞控制的核心原理与实战配置。RDMA依赖无损网络保障高性能,其关键在于PFC与ECN两大技术协同防止丢包。文章重点剖析了主流算法DCQCN的工作机制与参数调优,并简要介绍了HPCC与TIMELY等前沿算法。最后提供了在Linux上配置RoCEv2与DCQCN的详细步骤及性能调试方法,帮助读者从零构建稳定的RDMA网络环境。

weixin_28452161的博客 136

MapReduce的自定义输入输出(超级详细)

MapReduce 是一种分布式计算框架,用于处理大规模数据集。它将一个大的输入数据集分割成多个小的数据块,并在多台计算机上并行处理这些小的数据块。而自定义输入输出是指开发者可以根据自己的需求,使用自定义的输入和输出格式来处理数据。在 MapReduce 中,默认的输入和输出格式是文本文件(TextInputFormat 和 TextOutputFormat)。但是,在一些特定的场景中,文本格式可能无法满足需求,因此我们需要使用自定义的输入输出格式。

互联网知识分享 1284

Hopf振荡器在机器人步态控制里到底怎么用?一个CPG仿生案例说清楚

本文深入解析了Hopf振荡器在机器人步态控制中的实际应用,通过CPG仿生案例详细展示了从数学方程到关节指令的完整流程。重点探讨了Hopf振荡器的极限环稳定性、参数调节技巧及自适应控制策略,为机器人运动控制提供了高效解决方案。

weixin_29284657的博客 200

手把手教你用YOLOv5和OpenCV实现DNF全自动刷图(含自动拾取与Boss战逻辑)

本文详细介绍了如何使用YOLOv5和OpenCV构建DNF全自动刷图系统,包括环境配置、游戏画面采集、目标检测、场景导航及操作控制等核心模块。通过实战案例,帮助开发者掌握游戏自动化技术,实现自动拾取与Boss战逻辑,提升游戏效率。

weixin_42628941的博客 448

MapReduce的输入输出和处理流程

MapReduce的输入和输出 MapReduce框架运转在<key,value>键值对上,也就是说,框架把作业的输入看成是一组<key,value>键值对,同样也产生一组<key,value>键值对作为作业的输出,这两组键值对可能是不同的。 一个MapReduce作业的输入和输出类型如下图所示:可以看出在整个标准的流程中,会有三组<key,value...

东城庞太师 6304

Jenkins+docker 微服务实现自动化部署安装和部署过程

本文详细介绍了如何使用Docker部署Jenkins自动化服务器。主要内容包括:1)拉取Jenkins官方或BlueOcean镜像;2)创建容器并配置端口映射、数据卷挂载;3)设置防火墙规则;4)配置清华大学镜像加速;5)安装必要插件;6)SSH密钥配置;7)构建触发器设置;8)编写自动化构建脚本。通过Docker部署Jenkins可以简化安装流程,确保环境一致性,并利用容器特性实现快速启动和管理。文章提供了完整的配置步骤和注意事项,帮助用户快速搭建CI/CD环境。

qq_33665793的博客 1687

MapReduce执行流程

MapReduce的处理流程解析 Mapper任务执行过程详解 l第一阶段是把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认情况下,Split size = Block size。每一个切片由一个MapTask处理。(getSplits) l第二阶段是对切片中的数据按照一定的规则解析成<key,value>对。默认规则是把每一行文本内容解析成...

dingqiu6346的博客 127

echarts 饼图(加载进度条动画效果)

1、外侧动画细线效果运动“custom”自定义系列中“renderItem”属性来实现,动态修改起始角度和终止角度。2、圆环使用" pie "类型添加两个data值来画百分比圆环,动态修改data中的值。

God's asylum的博客 1630

六、数据资产平台功能架构

该架构图展示了一个功能完善的数据资产平台,它涵盖了数据资产管理的各个方面,从数据采集、模型设计、编目到使用和分析。通过该平台,企业可以更好地管理数据资产,提高数据利用效率,并为业务决策提供有力支持。

moton2017的博客 1627

MapReduce详解

Mapreduce的主要思想:分而治之主要分为两个步骤:map和Reducemap(映射):对所有数据分割后的每一个单独模块分别进行处理reduce:对map处理后的结果进行合并。一个基本的MapReduce程序:input -&gt; map -&gt; reduce -&gt; output===其它的并行编程中的种种复杂问题,如分布式存储、工作调度、负载平衡等都由yarn实现。并行编程模型的...

weixin_37886463的博客 580

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MapReduce 基础之:图文讲解 MapReduce 工作原理

图文详解mapreduce

weixin_43542605的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【MapReduce】9.MapReduce过程详解

文章目录0.0 定义0.1 定义0.2 功能0.3 优缺点1.0 MapReduce架构1.1 架构图1.1 架构的细节1.2 一些问题1.2.1 MapReduce工作流程1.2.2 InputFormat数据输入1.2.2.1 切片与MapTask并行度决定机制1.2.2.2 FileInputFormat切片1.2.2.3 CombineTextInputFormat切片机制1.2.3 MapTask工作机制1.2.4 shuffle工作机制1.2.5 ReduceTask工作机制1.2.6 结

YJ语 290

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MapReduce实现SQL的原理

MapReduce实现SQL的原理 对于常见的一条SQL分析语句,MapReduce如何编程实现? SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age; 这是一条非常常见的SQL统计分析语句,统计不同年龄的用户访问不同网页的兴趣偏好,对于产品运营和设计很有价值。具体数据输入和执行结果请看下面的图示。 左边是要分析的数据...

qiulinsama的博客 1430

mapreduce执行过程流程图_Hadoop学习之Mapreduce执行过程详解

一、MapReduce执行过程MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示:整个流程图具体来说:每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出,整个Mapper任务的处理过程又可以分...

weixin_35349247的博客 1271

MapReduce相关问题

1.在高阶数据处理中,往往无法把整个流程写在单个MapReduce作业中,下列关于链接MapReduce作业的说法,不正确的是?()答案:A A. ChainReducer.addMapper()方法中,一般对键/值对发送设置成值传递,性能好且安全性高 B.使用ChainReducer时,每个mapper和reducer对象都有一个本地JobConf对象 C.ChainMapper和ChainReducer类可以用来简化数据预处理和后处理的构成 D.Job和JobControl类可以管理非..

飞少fly的博客 7514

MapReduce过程

原文链接:https://blog.youkuaiyun.com/yangshaojun1992/article/details/85003668 一、分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDF...

优快云_bird的博客 278

MapReduce的MapTask执行机制

Map阶段流程:input File通过split被逻辑切分为多个split文件,通过Record按行读取内容给map(用户自己实现的)进行处理,数据被map处理结束之后交给OutputCollector收集器,对其结果key进行分区(默认使用hash分区),然后写入buffer,每个map task都有一个内存缓冲区,存储着map的输出结果,当缓冲区快满的时候需要将缓冲区的数据以一个临...

dingqiu6346的博客 219

Hadoop(三)MapReduce

一,概述 Hadoop MapReduce是一个可以轻松编写应用程序的软件框架,可靠,容错,在大型集群(数千节点)的商用硬件上并行处理大量数据(多TB级别的数据)。 MapReduce是Hadoop的计算核心。 MapReduce通常将输入数据集拆分为独立的块,这些块由Map任务以完全并行的方式处理。框架对Map的输出进行排序,然后输入到reduce任务。通常,作业的输入和输出都存储在文件系...

weihao_的博客 484

MapReduce运行模式和作业处理

MR将作业的输入看成一对键值对,同样产生一组键作为作业的输出。

jx的博客 644
上一篇: Eclipse中MapReduce配置、应用以及Haoop的数据类型
下一篇: 电脑换硬盘后出现error:no boot disk has been detected or the disk has failed怎么办
lqcStar
博客等级 码龄7年 10粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lqcStar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值