MapReduce分片阶段详解

2023-11-05

MapReduce作为第一代的大数据计算引擎,其经典地位至今仍然得到认可,MapReduce之后的Spark计算引擎,本质上来说,依然是借用了MapReduce的核心思想。今天的大数据技术分享,我们就主要来讲讲MapReduce计算前的准备阶段,也就是Split分片阶段。通常来说,MapReduce运行可以分为4个阶段,分别是Split阶段—Map阶段 —Shuffle阶段 —Reduce阶段。Split是正式计算前的重要准备阶段。

1、Split输入分片的概念

所谓输入分片,并不是真的把原来的一个大文件,比如说10MB的文件,切分成10个1MB的小文件,这里的分片不是物理分片,而是逻辑分片。所谓逻辑分片就是根据文件的字节索引进行分割,比如0~1MB位置定义为第一个分片,1MB~2MB定义为为第二个分片,依次类推……而原来的大文件还是原来的大文件,不会受到影响,因此,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组。

2、分片数量与Map Task数量的关系?

Map Task的个数等于split的个数。Mapreduce在处理大文件的时候,会根据一定的规则,把大文件划分成多个分片,这样能够提高map的并行度。划分出来的就是InputSplit,每个map处理一个InputSplit,因此,有多少个InputSplit,就有多少个map task。

3、由谁来划分分片?

主要是InputFormat类来负责划分Split。InputFormat类有2个重要的作用:1)将输入的数据切分为多个逻辑上的InputSplit,其中每一个InputSplit作为一个map的输入。2)提供一个RecordReader,用于将InputSplit的内容转换为可以作为map输入的k,v键值对。FileInputFormat是InputFormat的子类,是使用比较广泛的类,输入格式如果是hdfs上的文件,基本上用的都是FileInputFormat的子类,如TextInputFormat用来处理普通的文件,SequceFileInputFormat用来处理Sequce格式文件。FileInputFormat类中的getSplits(JobContext job)方法是划分split的主要逻辑。

4、分片的大小由谁来决定?

每个输入分片的大小是固定的,默认情况下,输入片(InputSplit)的大小与数据块(Block)的大小是相同的。Hadoop 2.x默认的block大小是128MB,Hadoop 1.x默认的block大小是64MB,可以在hdfs-site.xml中设置dfs.block.size,注意单位是byte。分片大小范围可以在mapred-site.xml中设置,最小分片大小:mapred.max.split.size,minSplitSize大小默认为1B,maxSplitSize大小默认为Long.MAX_VALUE = 9223372036854775807

5、默认分片大小与Block分块大小是相同的原因?

Hadoop在存储有输入数据(HDFS中的数据)的节点上运行map任务,可以获得高性能,这就是所谓的数据本地化。所以最佳分片的大小应该与HDFS上的块大小一样,因为如果分片跨越2个数据块,对于任何一个HDFS节点(Hadoop系统保证一个块存储在一个datanode上,基本不可能同时存储这2个数据块),分片中的另外一块数据就需要通过网络传输到map任务节点,与使用本地数据运行map任务相比,效率则更低。优点就是可以实现分块优化,减少网络传输数据,使用本地数据运行map任务。关于大数据技术,MapReduce分片阶段,以上就为大家做了详细的介绍了。MapReduce作为大数据计算的代表性框架,理解和掌握MapReduce实际的程序执行,也是非常有必要的。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MapReduce分片阶段详解 的相关文章

  • 公平调度器和容量调度器有什么区别?

    我是 Hadoop 世界的新手 想了解公平调度程序和容量调度程序之间的区别 另外我们什么时候应该使用每一个 请简单地回答一下 因为我在网上读了很多东西 但从中得到的不多 公平调度是一种为作业分配资源的方法 使得所有作业随着时间的推移平均获得
  • Mapreduce shuffle 阶段出现内存不足错误

    我在运行时遇到奇怪的错误类似字数统计映射缩减程序 我有一个包含 20 个从站的 hadoop 集群 每个从站都有 4 GB RAM 我将 Map 任务配置为 300MB 堆 Reduce 任务槽为 1GB 我每个节点有 2 个映射槽和 1
  • 无法在 Presto 中读取数据 - 在 Hive 中可以读取数据

    我有一个 Hive DB 我创建了一个与 Parquet 文件类型兼容的表 CREATE EXTERNAL TABLE default table date date udid string message token string PAR
  • 全部配对图表上的所有路径

    这可能是一个没有最佳解决方案的问题 假设我有一个有向图 不知道它是否有循环 循环检测将是这个问题的方面之一 给定一组顶点 可能是数百万个顶点 我需要计算给定图的所有唯一对之间的所有不同路径 没有重复顶点的路径 我该如何应对这种情况 让我们看
  • 使用 Java API 在 Hadoop 中移动文件?

    我想使用 Java API 在 HDFS 中移动文件 我想不出办法做到这一点 FileSystem 类似乎只想允许在本地文件系统之间移动 但我想将它们保留在 HDFS 中并将它们移动到那里 我错过了一些基本的东西吗 我能想到的唯一方法是从输
  • Impala:如何查询具有不同模式的多个镶木地板文件

    在 Spark 2 1 中我经常使用类似的东西 df spark read parquet path to my files parquet 即使具有不同的模式 也可以加载镶木地板文件的文件夹 然后我使用 SparkSQL 对数据帧执行一些
  • 如何在Hadoop中序列化List集合对象?

    有没有办法在 Hadoop 中序列化 java 集合 The Writable接口仅适用于 Java 原语 我有以下类属性 private String keywords private List
  • 以编程方式读取 Hadoop Mapreduce 程序的输出

    这可能是一个基本问题 但我在谷歌上找不到答案 我有一个映射缩减作业 它在其输出目录中创建多个输出文件 我的 Java 应用程序在远程 hadoop 集群上执行此作业 作业完成后 需要使用以下命令以编程方式读取输出org apache had
  • Hive 聚集在多个列上

    据我所知 当配置单元表聚集在一列上时 它会执行该分桶列的哈希函数 然后将该行数据放入其中一个桶中 每个桶都有一个文件 即如果有 32 个桶 那么 hdfs 中就有 32 个文件 将 clustered by 放在多个列上意味着什么 例如 假
  • 为什么在我的例子中 For 循环比 Map、Reduce 和 List 理解更快

    我编写了一个简单的脚本来测试速度 这就是我发现的结果 实际上 for 循环在我的例子中是最快的 这真的让我感到惊讶 请查看下面 正在计算平方和 这是因为它在内存中保存列表还是有意为之 谁能解释一下这一点 from functools imp
  • MapReduce 中的分区到底是如何工作的?

    我认为我总体上对 MapReduce 编程模型有一定的了解 但即使在阅读了原始论文和其他一些来源之后 我仍然不清楚许多细节 特别是关于中间结果的分区 我将快速总结到目前为止我对 MapReduce 的理解 我们有一个可能非常大的输入数据集
  • Mongodb 聚合数组中的子文档

    我正在使用 mongodb 作为后端实现一个小型应用程序 在此应用程序中 我有一个数据结构 其中文档将包含一个包含子文档数组的字段 我使用以下用例作为基础 http docs mongodb org manual use cases inv
  • 如何修复“任务尝试_201104251139_0295_r_000006_0 未能报告状态 600 秒”。

    我编写了一个 MapReduce 作业来从数据集中提取一些信息 该数据集是用户对电影的评分 用户数量约25万 电影数量约30万 地图的输出是
  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • Hadoop 减速器数量配置选项优先级

    以下3个设置reduce数量的选项的优先级是什么 换句话说 如果三者都设置了 会考虑哪一个呢 Option1 setNumReduceTasks 2 within the application code Option2 D mapredu
  • 如何从spark中的hbase表中获取所有数据

    我在 hbase 中有一个大表 名称为 UserAction 它具有三个列族 歌曲 专辑 歌手 我需要从 歌曲 列族中获取所有数据作为 JavaRDD 对象 我尝试了这段代码 但效率不高 有更好的解决方案来做到这一点吗 static Spa
  • Spark-submit,客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS];

    我使用 kerberos 设置了 hadoop 集群 但是当我运行 Spark Submit 时 它抛出异常 17 10 19 08 46 53 WARN scheduler TaskSetManager Lost task 0 0 in
  • HIVE - 使用WITH CLAUSE插入覆盖

    我有一个生成的查询以WITH子句开头 当我在控制台中运行它时 当我尝试使用INSERT OVERWRITE运行查询以将输出加载到单独的配置单元表中时 该查询工作正常 INSERT OVERWRITE TABLE proc db master
  • 关于 Hadoop 和压缩输入文件的非常基本的问题

    我已经开始研究 Hadoop 如果我的理解是正确的 我可以处理一个非常大的文件 它会被分割到不同的节点上 但是如果文件被压缩 那么文件就无法分割 并且需要由单个节点处理 有效地破坏了运行一个mapreduce 一个并行机器集群 我的问题是
  • 如何配置Hive仓库路径?

    我修改了这部分

随机推荐

  • Qt中的窗口类及其特点

    目录 常用的窗口类 窗口的显示内嵌窗口 QWidget内嵌窗口演示 QWidget不内嵌窗口演示 QDialog类型的窗口特点 QMainWindows窗口的特点 总结 常用的窗口类 常用的窗口类有 3 个 在创建 Qt 窗口的时候 需要让
  • 不出意外的话,2023年是AI大模型元年

    这两天听的最多的新闻莫过于 谁谁谁 AI 大模型 面向全社会开放使用 文心一言 WPSAI 讯飞星火 百川智能等等 2023年 AI大模型注定在历史上增添了浓妆淡抹的一幕 未来 AI 将与各个软件应用如影随形 如云计算一般成为基础能力 按照
  • dvwa靶场的简单练习

    此文章仅为记录自己打靶场的过程 一 dvwa靶场的搭建 1 phpstudy的下载安装以及配置 下载phpstudy 官网链接 小皮面板 phpstudy 让天下没有难配的服务器环境 xp cn 下载好后直接安装 选盘看个人喜好 安装后如图
  • spring 01 :基础(IoC控制反转、DI依赖注入)、整合Junit、整合web

    struts web层 比较简单 ValueStack值栈 拦截器 hibernate dao层 知识点杂 spring service层 重要 会多少用多少 gt 了解 spring day01 基础 IoC控制反转 DI依赖注入 整合J
  • 《数据安全法》今日实施,中国信通院联合百度等企业发起“数据安全推进计划”

    9月1日讯 数据安全法 今天正式实施 个人信息保护法 也将于11月1日实施 这标志着我国数据安全制度建设进入了新的阶段 发展数字经济 加快培育数据要素市场 必须把保障数据安全放在突出位置 为推动法律法规及监管要求的贯彻落实 促进数据安全技术
  • Raid0、Raid1、Raid5及Raid10的区别

    博主推荐谷歌搜索 看Youtube视频 国外学习网站 Github必备神器 SockBoom 或者网址 SockBoomhttps sockboom shop auth register affid 212828 一 概况 Raid Red
  • Python中 ''.JOIN()的用法

    Python join 方法 描述 将序列中的元素以指定的字符连接生成一个新的字符串 语法 语法 sep join seq 参数说明 sep 分隔符 可以为空 seq 要连接的元素序列 字符串 元组 字典 返回值 返回通过指定字符连接序列中
  • 机器自主学习创造新数据

    近年来 人工智能 AI 的发展带来了许多革命性的改变 其中 生成式AI Generative AI 也被称为AIGC Artificial IntelligenceGenerated Content 引起了人们的极大关注 生成式AI是一种使
  • 内存回收

    内存回收 内存状态分为 使用 未使用 可回收 这几点有啥区别 使用 标记状态已使用 未使用 使用地址到结束地址 可回收 标记状态为回收 怎么判断内存可回收 因为调用释放接口了 怎么回收性能高 批量回收 不要回收太频繁 避免磁盘碎片 磁盘内碎
  • QT基础:QPainte 绘制文本并设置动态设置字体演示

    QPainte 是QT里面的一个绘制控件 这里演示的是 用 QPainte 绘制一个文本 并通过 ui 上的 fontComboBox 控件 改变文本字体后触发 widget 槽函数 update 来刷新界面 演示过于简单 适合初学者食用
  • 揭开gRPC神秘面纱

    一 什么是RPC RPC Remote Procedure Call 远程过程调用 它是一种通过网络从远程计算机程序上请求服务 而不需要了解底层网络技术的思想 RPC 是一种技术思想而非一种规范或协议 常见 RPC 技术和框架有 应用级的服
  • el-submenu实现单个菜单折叠

    以上的效果就是 我打开 系统管理 折叠框 然后再打开 采集服务器 折叠框 这样一来的话就会让这个navMenu显得很高 严重的情况 就会撑破整个页面 怎么办呢 element代码实现如下
  • 进程和线程、协程的区别

    一 进程 进程是程序一次动态执行的过程 是程序运行的基本单位 每个进程都有自己的独立内存空间 不同进程通过进程间通信来通信 进程占据独立的内存 所以上下文进程间的切换开销 栈 寄存器 页表 文件句柄等 比较大 但相对比较稳定安全 协程切换和
  • ESP32C3对接阿里云生活物联网平台

    文章目录 1 装好ESP32 VSCode开发环境 2 git阿里云代码 3 先编译例程 看看能否编译成功 4 创建分区表 增加ota分区 5 查看分区空间 6 擦除整片Flash 7 未烧录四元组情况下 看看会报什么错 8 阿里云四元组
  • 使用EDU邮箱申请JetBrains学生包免费使用一年JetBrains全家桶

    写在最前 使用EDU邮箱申请JetBrains学生包可以免费使用一年JetBrains全家桶 欢迎光顾本人的博客 以后会经常记录生活点滴 学习工作所见 1 首先你需要一个EDU邮箱 JetBrains学生包的申请很简单 所以国内的EDU邮箱
  • java后台地址(省,市,区)、姓名、手机号算法智能识别

    最近项目中需要根据前台需要识别的信息去做后台处理 根据地址识别出来姓名 手机号 以及地址信息返回给前端 我借用了一套算法 这套算法是androi开发时候用的 我门java用的时候需要修改里面部分内容 用的时候项目中也必须要有封装好的省 市
  • BigDecimal转String类型

    从数据库取出一个NUMBER类型的值 在代码中要转成Integer类型的时候 代码如下 int a map get CONSTRICTION 报错 Cannot cast from Object to int Integer parseIn
  • OpenWrt UCI 学习笔记

    UCI Unified Configuration Interface 统一配置接口 是OpenWrt的集中配置管理工具 关于UCI的具体介绍可以查看官方文档 The UCI System 可以通过ubuntu安装UCI或使用openwrt
  • 当语音识别搭配AI之后,我的语音助手更懂我的心了

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云AI中心发表于云 社区专栏 我今天演讲主要分四个部分 第一个是分享语音识别概述 然后是深度神经网络的基础 接下来就是深度学习在语音识别声学模型上面的应用 最后要分享的是语
  • MapReduce分片阶段详解

    MapReduce作为第一代的大数据计算引擎 其经典地位至今仍然得到认可 MapReduce之后的Spark计算引擎 本质上来说 依然是借用了MapReduce的核心思想 今天的大数据技术分享 我们就主要来讲讲MapReduce计算前的准备