mapreduce的优化方法

1、数据输入

(1)合并小文件:在执行mr任务前将小文件进行合并,大量的小文件会产生大量的map任务,增大map任务装载次数 ,而任务的装载比较耗时 ,从而导致 mr 运行较慢。
(2)采用ConbinFileInputFormat来作为输入 ,解决输入端大量小文件场景。

2、map阶段

(1)减少spill次数:通过调整io.sort.mb及sort.spill.percent参数值,增大触发spill的内存上限,减少spill次数, 从而减少磁盘 IO。
(2)减少merge次数:通过调整io.sort.factor参数 ,增大merge的文件数目 ,减少merge的次数 ,从而缩短 mr处理时间。
(3)在 map 之后先进行combine处理 ,减少 I/O。

3、reduce阶段

(1)合理设置map和reduce数:两个都不能设置太少 ,也不能设置太多。太少 ,会导致task等待 ,延长处理 时间;太多 ,会导致 map、reduce任务间竞争资源 ,造成处理超时等错误。
(2)设置map、reduce共存:调整slowstart.completedmaps参数 ,使map运行到一定程度后 ,reduce也开 始运行 ,减少reduce的等待时间
(3)规避使用reduce ,因为Reduce在用于连接数据集的时候将会产生大量的网络消耗。
(4)合理设置reduc端的buffer ,默认情况下 ,数据达到一个阈值的时候 ,buffer中的数据就会写入磁盘 ,然后 reduce会从磁盘中获得所有的数据。也就是说 ,buffer和reduce是没有直接关联的 ,中间多个一个写磁盘->读磁 盘的过程 ,既然有这个弊端 ,那么就可以通过参数来配置 ,使得buffer中的一部分数据可以直接输送到reduce ,从而减少IO开销 :mapred.job.reduce.input.buffer.percent ,默认为0.0。当值大于0的时候 ,会保留指定比例的内存 读buffer中的数据直接拿给reduce使用。这样一来 ,设置buffer需要内存 ,读取数据需要内存 ,reduce计算也要内 存 ,所以要根据作业的运行情况进行调整。

4、IO传输

(1)采用数据压缩的方式 ,减少网络IO的的时间。 安装Snappy和LZOP压缩编码器。
(2)使用SequenceFile二进制文件

5、数据倾斜问题

(1)数据倾斜现象
数据频率倾斜——某一个区域的数据量要远远大于其他区域。
数据大小倾斜——部分记录的大小远远大于平均值。
(2)如何收集倾斜数据
在reduce方法中加入记录map输出键的详细情况的功能

(3)减少数据倾斜的方法

方法1、抽样和范围分区
可以通过对原始数据进行抽样得到的结果集来预设分区边界值
方法2、自定义分区

另一个抽样和范围分区的替代方案是基于输出键的背景知识进行自定义分区。例如 ,如果map输出键的单词

来源于一本书。其中大部分必然是省略词(stopword)。那么就可以将自定义分区将这部分省略词发送给固定的一
部分reduce实例。而将其他的都发送给剩余的reduce实例。
方法3、Combine
使用Combine可以大量地减小数据频率倾斜和数据大小倾斜。在可能的情况下 ,combine的目的就是聚合并精简数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO数据集制作(四)|json文件转txt验证(多边形框)

以下教程用于验证转成YOLO使用的txt格式,适用场景:多边形框,配合json格式文件转成YOLO使用的txt格式脚本使用。 YOLO数据集制作(三)|Labelme标注的“多边形框”json文件转txt-CSDN博客 使用方式:将img_pa…

简单实现---基于STL的演讲比赛流程管理系统(C++实现)

前言 事先声明:本文章中编写的代码仅用于学习算法思想和编写基础形式使用,并未进行太多的代码优化,因此,若需要对代码进行优化以及异常处理的小伙伴们,可自行添加相关操作,谢谢! 一、题…

探索Linux中的cd和pwd命令:理解与应用

探索Linux中的cd和pwd命令:理解与应用 在Linux操作系统中,cd和pwd是两个非常基础但又非常重要的命令。它们分别用于改变当前工作目录和显示当前工作目录的路径。本文将深入探讨这两个命令的用法,并结合实例进行解释,帮助读者更好…

如何创建 Ansible Playbooks 来自动化 Ubuntu 系统配置

介绍 Ansible 是一个简单的配置管理系统,可用于自动化和组织大型计算机网络的系统配置任务。虽然其他一些配置管理系统需要在服务器和客户端系统上安装许多不同的软件包,但使用 Ansible 只需要安装一个服务器组件并且具有对客户端机器的 SSH 访问权限。 …

数据结构与算法学习笔记四---双向链表的表示和实现(C语言)

1.前言 这篇文章主要介绍双向链表的表示和实现。 2.双向链表 单链表中只有一个指示直接后继的指针域,由此,从某个结点出发只能顺指针向后寻查其他结点。若要寻查结点的直接前驱,则必须从表头指针出发。换句话说,在单链表中&#…

​​​【收录 Hello 算法】第 6 章 哈希表

目录 第 6 章 哈希表 本章内容 第 6 章 哈希表 Abstract 在计算机世界中,哈希表如同一位聪慧的图书管理员。 他知道如何计算索书号,从而可以快速找到目标图书。 本章内容 6.1 哈希表6.2 哈希冲突6.3 哈希算法6.4 小结

日志:打印技巧

一、概览 Unity日志打印技巧 常规日志打印彩色日志日志存储与上传日志开关日志双击溯源 二、常规日志打印 1、打印Hello World 调用堆栈可以很好的帮助我们定位问题,特别是报错的Error日志 Debug.Log("Hello World");Debug.Log("This is a log m…

【java】代理

什么是代理 假设有一个核心方法叫转账,为了安全性考虑,不能让用户直接访问接口。此时涉及到了代理,这使得用户只能访问代理类,增加了访问限制。 代理的定义:给目标对象提供一个代理对象,并且由代理对象控…

egg.socket.io后端开发

1. 安装egg-socket.io npm i egg-socket.io4.1.6 --save最好指定egg-socket.io的版本号,比如我后端使用"egg-socket.io": "^4.1.6", 因为跟前端的socket.io-client是一一关联,socket.io-client用高版本或低版本,都不兼容…

果蔬经营平台|基于SSM+vue的果蔬经营平台系统的设计与实现(源码+数据库+文档)

果蔬经营平台系统 目录 基于SSM+vue的果蔬经营平台系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介…

Python面试50题!面试巩固必看!

题目001: 在Python中如何实现单例模式。 点评:单例模式是指让一个类只能创建出唯一的实例,这个题目在面试中出现的频率极高,因为它考察的不仅仅是单例模式,更是对Python语言到底掌握到何种程度,建议大家用装饰器和元类…

【卫星影像三维重建-全流程代码实现】点云Mesh重构

点云—>Mesh模型 1.介绍1.1 背景1.2 效果示意 2 算法实现2.1 依赖库2.2 实验数据2.3 代码实现2.4 实验效果 3.总结 1.介绍 1.1 背景 (1)本文主要内容是将三维点云(离散的三维点)进行表面重建生成Mesh网格,之前有篇…

IP跳变是什么,有什么作用?

IP跳变,简单来说,就是用户在使用网络时,不固定使用一个IP地址,而是定期或根据需求切换到另一个IP地址。这种技术为用户在网络环境中提供了一定的灵活性和安全性。 首先,我们来看看IP跳变的具体实现方式。当用户需要切…

UML快速入门篇

目录 1. UML概述 2. 类的表示 2.1. 类的表示 2.2. 抽象类的表示 2.3. 接口的表示 3. 类的属性,方法,访问权限的表示 3.1. 类的属性 3.2. 类的方法 3.3. 类的权限 4. 类的关联 4.1. 单向关联 4.2. 双向关联 4.3. 自关联 4.4. 类的聚合 4.5.…

Lists.partition用法详解

文章目录 一、引入依赖二、用法三、输出 一、引入依赖 依赖于谷歌的guava 包 <!-- guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.1-jre</version></dependency&…

仿照el-upload 封装自己的上传控件(el-upload 移动端无法吊起相机)

input选择图片的那个选择在h5的时候在去年下半年突然无法无法出现唤醒相机的选项 不知道出现的原因 发现el-upload作为h5的时候无法吊起相机 又因为需要对服务端地址图片进行回显&#xff08;处于编辑功能的情况下 非新增 新增el-upload 可以实现回显&#xff09; 两个功…

如文所示:

影响 ConnectWise 的 ScreenConnect 远程桌面访问产品的严重漏洞已被广泛利用来传播勒索软件和其他类型的恶意软件。 ConnectWise 于 2 月 19 日通知客户&#xff0c;它已发布针对关键身份验证绕过缺陷和高严重性路径遍历问题的补丁。该安全漏洞当时没有 CVE 标识符。第二天&am…

绘唐3启动器怎么启动一键追爆款3正式版

绘唐3启动器怎么启动一键追爆款3正式版 工具入口 一.文案助手&#xff1a; 【注意&#xff01;&#xff01;】如果图片无显示&#xff0c;一般情况下被杀毒拦截&#xff0c;需关闭杀毒软件或者信任文件路径。 win10设置排除文件&#xff1a; 1.【新建工程】使用前先新建工程…

C语言循环队列

以下是一个使用 C 语言实现的简单循环队列示例&#xff1a; #include <stdio.h> #include <stdlib.h>#define MAX_SIZE 5// 定义循环队列结构体 typedef struct {int items[MAX_SIZE];int front, rear; } Queue;// 初始化队列 void initQueue(Queue *q) {q->fr…

维修贝加莱 MAHLO 5PP320.1043-K08 控制器 主板 工控电脑 触摸屏深圳捷达工控维修

贝加莱HMI面板5PP320.1043-39 扩展产品类型&#xff1a;HMI/触摸屏 产品编号&#xff1a;5PP320.1043-39 B&R 类型名称&#xff1a;HMI/触摸屏 描述 电源面板 PP320 BIOS&#xff1b; 10.4英寸VGA彩色TFT显示屏&#xff0c;带触摸屏&#xff08;电阻式&#xff09;&#xf…