Cross-Platform Resource Scheduling for Spark and MapReduce on YARN论文理解

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01 编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有 阅读详情

Cross-Platform Resource Scheduling for Spark and MapReduce on YARN论文理解

摘要

  1. MapReduce不能有效的处理大数据的非批处理过程(例:交互式作业,实时查询和流计算);新兴的Apache Spark则可以处理这一过程,Spark可以在已建立的Hadoop集群上运行并利用现有的HDFS。
  2. 在YARN上部署Spark的三个主要挑战
    1)基于预留的资源管理不灵活
    2)任务间依赖性盲调度
    3)Spark和MapReduce应用程序之间的局部干扰
    这三个挑战导致资源利用效率低下和性能显着下降。
  3. 本文提出并开发了一个跨平台资源调度中间件iKayak,旨在提高多租户Spark-on-YARN集群的资源利用率和应用程序性能。
  4. iKayak依赖于三个关键机制(分别对应以上三个主要挑战)
    1)预留感知执行器放置以避免长时间等待资源预留
    2)依赖性感知资源调整以利用reduce任务占用的未充分利用资源
    3)跨平台位置感知任务分配以协调位置之间的竞争Spark和MapReduce应用程序
  5. 实验结果部分
    本文在YARN实施iKayak。测试平台上的实验结果表明,与两种流行的Spark-on-YARN部署模型(即YARN客户端模型和YARN集群模型)相比,iKayak可以使Spark应用程序的性能提高50%,MapReduce应用程序的性能提高19%。

关键字:

Spark-on-YARN,资源调度,跨平台,应用程序性能,预留感知执行器放置,依赖性感知资源调整,位置感知任务分配

引言

  1. MapReduce由于其one-pass 计算模型,使得它不合适低延迟应用程序(low-latency applications)和迭代计算(iterative computations);Spark可解决这些。。。问题?
  2. Spark使应用程序可以将数据可靠地存储在内存中。 每个Spark应用程序都有多个进程,称为执行程序,在集群上运行,即使在没有运行任何作业时也代表它在内存中加载相关数据。 它允许应用程序避免昂贵的磁盘访问,这是Spark高性能的关键。(所以:一般通过集成Spark进行交互式和流式计算。)
  3. 具有动态资源分配的单个集群管理器可以提高资源利用率。企业更愿意在现有的Hadoop集群上部署新兴的Spark应用程序,以便利用已建立的集群,访问现有的HDFS数据集,并利用Hadoop的安全环境。(例如,eBay和Yahoo! 使用MapReduce生成报告并回答历史查询,同时部署Spark以实时计算关键指标。)
  4. Hadoop YARN 是一个新兴的跨平台集群管理器。它允许多个计算平台在单个集群上共存和共享资源,并从其细粒度的资源管理方案中受益。然而,我们发现YARN的基于预留的资源调度策略Spar应用程序的动态需求之间存在语义差距,导致资源利用效率低下和应用程序性能低下。具体而言,Spark-on-YARN引发了三个关键挑战。(即摘要中的三个主要挑战)(再一次描述如下)
    1) YARN基于预留的资源调度策略使得资源需求高的任务很难及时获得所需的资源。
    2)YARN中的现有调度程序无法识别map和reduce任务之间依赖关系的影响。
    3)MapReduce和Spark应用程序都尝试将任务或执行程序与其相关的HDFS块一起放置以进行位置感知,同时他们需要与YARN协商进行资源调度。
  5. Spark是基于多线程编程模型。 此特征可能导致Spark的单个执行程序一次占用大量资源的情况。 因此,具有高资源需求的执行器可能必须等待很长时间才能进行资源预留,导致资源利用率低和性能差。 更糟糕的是,当要保留所需资源但在很长一段时间内不能满足时,对于具有非常大的资源需求(例如,Spark流)的一些作业可能发生饥饿。
  6. 跨平台资源调度中间件iKayak的提出和开发,具体设计:首先设计和开发一个预留感知执行器放置机制,为Spark执行器选择有效的托管节点,以实现更短的预留时间。(目的:及时满足执行者的高资源需求);然后,设计和开发依赖性感知资源调整机制,以自适应地控制由reduce任务未充分利用的资源。(目的:允许map任务从reduce任务中抢占资源);最后,进一步设计和开发了一个跨平台的任务分配机制,以协调MapReduce任务分配和Spark执行器放置之间的位置感知。(目的:增加共同托管Spark和MapReduce应用程序的节点上的本地数据访问机会)。
  7. 实验部分,不写了= =

动机

YARN的资源预留机制

YARN中基于预约的调度。 与第一代Hadoop相比,YARN采用细粒度资源管理,这意味着应用程序可以在提交作业时为各个任务配置所需的资源,如CPU和内存。 如果群集中没有足够的可用资源,ResourceManager将开始在所选节点上为该任务预留资源。 完成此节点上的其他任务后,可以为即将执行的任务分配更多可用资源。 在满足预留之前,此节点上释放的资源将不允许分配给其他应用程序。 在预留过程中,新发布的资源被累积但不允许使用,这提供了良好的资源隔离能力,但导致资源利用率不高。

spark简介

使用Spark进行内存计算。 Spark是一种崭露头角的大数据分析解决方案,通过使用高效的内存计算开发。它允许应用程序在内存中显式缓存数据集,以便应用程序可以从内存而不是磁盘访问数据,这可以显着提高性能。与MapReduce相比,Spark利用多个线程而不是多个进程来实现单个节点上的并行性,避免了几个JVM的内存开销,但导致单个执行器一次占用大量资源。当作业提交到集群时,应由用户配置特定Spark应用程序的资源需求(即,执行程序的数量和每个执行程序的资源请求)。 Spark可以在两种流行的模式下运行:Spark-on-Mesos和Spark-on-YARN。 Spark-on-Mesos采用“全有或全无”资源管理策略(例如,一次分配足够的资源或拒绝请求),这可能会导致出现故障,特别是在集群繁忙时。但是,YARN将保留(预留)资源而不是拒绝申请以避免这种饥饿。

Spark-on-YARN

在Spark-on-YARN部署模式中,Spark应用程序类似于MapReduce的作业。 如图1所示,MapReduce在自己的进程中运行每个任务。 任务完成后,该过程就会消失。 在Spark中,许多任务可以在单个进程(即执行程序)中并发运行,并且即使没有正在运行的作业,此进程也会在Spark应用程序的生命周期内保持不变。 因此,MapReduce不会受到基于预留的调度策略的影响,因为大多数map / reduce任务的预留时段由于其极小的资源需求而非常短。 但是,在YARN的当前资源调度策略下,具有单个容器的巨大资源需求的Spark应用程序可能遭受太长的资源预留期。
图一

挑战
  1. Ineffective Resource Utilization(资源利用率低下)
  2. Underutilized Reduce Tasks(未充分利用Reduce任务)
  3. Locality-Missing Assignment(局部缺失管理?缺乏局部性感知)

对应的三条解决方法:

  1. 应将Spark执行器放置在合适的节点上,以及时满足其资源预留,避免等待时间过长,资源利用率低。
  2. 分配用于Reduce任务的资源应根据其随时间变化的需求进行重新平衡,以避免在将任何Spark应用程序提交到群集时浪费资源。
  3. 应优化Spark和MapReduce应用程序的任务分配,以减少局部性感知竞争,同时考虑Spark和MapReduce应用程序的位置感知。(感觉讲来讲去也就这三个。。。)
HDFS

HDFS通常在集群中有三个数据副本,这可以改善数据的位置。Spark和MapReduce都应用延迟调度来基于位置偏好来调度任务,即,他们尝试将任务调度到具有本地数据的节点上。 因此,即使群集中存在多个副本,Spark和MapReduce之间的这种位置感知竞争也会使它们都缺乏局部性感知。

iKayak设计

iKayak是一个跨平台的资源调度中间件,旨在优化Spark-on-YARN集群中的资源管理。 它利用了Spark和MapReduce应用程序的不同资源需求特性,并在考虑两个应用程序的数据局部性的同时动态优化资源调度。 图2显示了iKayak的架构。 它有三个主要组件:预留感知执行器放置,依赖性感知资源调整和位置感知任务分配协调。

图2
三个组件细化:

  1. 保留感知执行器放置自适应地将Spark执行器放置在有效的托管节点上,以便及时满足各个执行器的高资源需求。
  2. 依赖性感知资源调整动态地利用分配的资源来减少任务,以缓解由于资源过度配置而导致的低资源利用率,尤其是当reduce任务空闲并等待来自map任务的中间数据时。
  3. 位置感知任务分配协调可提高Spark和MapReduce应用程序的数据位置感知,以便它们可以共享多租户群集节点上的有限本地数据访问机会。
Reservation-Aware Executor Placement(预订意识执行者安置)

…部分翻译:
Spark提供了两个默认执行程序放置调度程序,即SpreadOut和Non-SpreadOut,用于将执行程序放置在集群中的多个节点上。它们都无法以资源预留感知方式放置执行程序。在YARN上运行Spark时,每个Spark执行程序都在YARN容器中运行。 Spark ApplicationMaster负责与YARN协商资源请求,并找到一组有效的主机来放置和运行执行程序。但是,YARN无法识别Spark应用程序的高效工作节点,因为它最初是为MapReduce计算而设计的。 MapReduce为每个任务调度容器并启动JVM,而Spark在同一容器内托管多个任务以进行多线程。相应地,Spark的单个容器的资源需求远远大于MapReduce的单个任务的资源需求。因此,MapReduce作业的默认“基于拉”的任务调度方法不适合Spark应用程序的执行程序放置。

Resource Reservation Analysis 资源预留分析
本文提出基于群集中每个可能的目标节点的资源预留感知开发有效的执行器放置算法。 该算法旨在使执行程序在放置在选定的工作节点上后尽快运行。 如算法1所示,它首先选择具有足够空闲资源的高效工作节点,以满足各个执行者的需求。 如果节点上没有足够的可用资源,iKayak会选择承载足够运行映射任务的高效工作节点来放置执行程序。 如果仍然没有足够的资源,iKayak最终会选择一个托管减少任务接近完成的节点。
算法1
Estimating Reduce Remaining Time 估计Reduce剩余时间
后面不想看了= =


本文spark-on-YARN指:Spark(Spark+MapReduce)-on-YARN
hosting a Spark application----托管Spark应用

从仿真到流片:手把手教你优化65nm CMOS电荷泵的电流匹配与稳定性 本文详细介绍了在65nm CMOS工艺下优化电荷泵电流匹配与稳定性的工程实践指南。通过蒙特卡洛仿真、运放反馈结构版图技巧和全差分结构设计,实现优于1%的电流匹配精度和±2%以内的电流稳定性,特别针对current mismatch问题提供了有效的解决方案。 阅读详情

相关推荐

VL53L1X vs VL53L0X:激光测距传感器选型指南与性能对比

本文深入对比了VL53L1X与VL53L0X两款激光测距传感器的核心差异。VL53L1X采用区域ToF原理,在抗环境光干扰、最大测距及多目标识别方面优势显著,尤其适合复杂光线与动态场景。文章结合机器人避障、无人机定高等实战场景,提供了清晰的选型决策树,帮助工程师根据测距需求、环境复杂度与系统成本做出最优选择。

weixin_29197699的博客 394

网络流量领域公开数据集及工具库

流量分类领域数据集 本博客持续更新,收集平常读论文时提高的公开数据集和工具库。 数据集详情 http://traces.cs.umass.edu/index.php/Network/Network 系列: 这个网站提供了该学院很多数据集,这些数据集是他们发表论文时提取的,然后公开出来。 WebIdent 2 Traces 数据集描述: A collection of traces of web reque...

jmhIcoding 6万+

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3357

【论文阅读】-《ET-BERT: A Contextualized Datagram Representation with Pre-training Transformers for Encryp》

加密流量分类需要从内容不可见且不平衡的流量数据中捕获判别性强且鲁棒性好的流量表示,以实现准确的分类,这具有挑战性但对于实现网络安全和网络管理不可或缺。现有解决方案的主要局限在于它们高度依赖深层特征,而这些特征过度依赖于数据量且难以在未见数据上泛化。如何利用开放域的无标签流量数据来学习具有强泛化能力的表示仍然是一个关键挑战。在本文中,我们提出了一种新的流量表示模型,称为基于Transformer的加密流量双向编码器表示(ET-BERT),它从大规模无标签数据中预训练深度上下文数据报级表示。

spinage的博客 1679

Unity类银河战士恶魔城学习总结(P162 Improve skeleton提升敌人的效果)

为敌人添加了快慢刀

suzh1qian的博客 572

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(中)

介绍了三相电机控制中的SVPWM算法实现及保护机制设计。SVPWM部分详细解析了电压矢量扇区判断、占空比计算和过调制保护,通过限制占空比范围(0-100%)防止电机失控,并提供了完整的代码实现。保护模块则重点分析了过流、过压/欠压、过温三种保护机制,采用分级处理策略(硬保护停机/软保护降功率)确保系统安全。此外,文章还介绍了参数管理模块在STM32 Flash中的存储方案,包括参数定义、数据结构和读写操作,为电机控制系统提供了完整的解决方案。

bother3000的博客 1389

加密流量专栏总览

wu

一个努力生活的人的博客 2787

英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集

记录下英飞凌IGBT驱动芯片限流电阻阻值设计

nizhenyuchina的博客 5996

啦啦啦啦啦_开放组织读书俱乐部:啦啦队长如何设定方向

啦啦啦啦啦 我们终于进入了为期7周的开放式组织虚拟图书俱乐部的第7章, 催化方向 。 在前几周,我们讨论了开放组织的原因和方式 。 与启动上周的包容性决策的讨论 ,我们一头扎进了“自下而上”的组织模式是什么成分。 现在是时候集中精力为基于任务的组织设置方向了。 讨论(第7章:催化方向) 本周在读书俱乐部,我们将讨论“第7章:催化方向”。 “传统上,方向是在顶部建立的。大多数公司的典型...

cumj63710的博客 1万+

秋叶ComfyUI整合包:一键部署AI绘画工作流,解决环境配置难题

在AI绘画和生成式AI领域,Stable Diffusion作为开源的扩散模型,为图像生成提供了强大的技术基础。其核心原理是通过学习数据分布,对随机噪声进行逐步去噪,最终生成高质量的图像。这项技术的价值在于极大地降低了专业图像创作的门槛,并推动了AIGC(人工智能生成内容)在艺术设计、游戏开发、广告营销等场景的广泛应用。然而,其典型工作流实现工具ComfyUI,在实际部署中常因Python环境、PyTorch版本与CUDA驱动之间的复杂依赖关系而受阻,尤其是面对NVIDIA 30系、40系及未来50系等不同

优快云头条 668

基于深度学习的心律失常的自动分类

基于深度学习的心律失常的自动分类 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 心律失常的危害与检测的重要性 心律失常是一种常见的心血管疾病,严重威胁着人们的健康和生命。据统计,全球每年有数百万人因心律失

AI架构师小马 1143

从开启网络线程到发出一个完整的http请求

每次网络请求时都需要开辟单独的线程进行,譬如如果URL解析到http协议,就会新建一个网络线程去处理资源下载因此浏览器会根据解析出得协议,开辟一个网络线程,前往请求资源步骤:开启网络线程到发出一个完整的http请求这一部分主要内容包括:dns查询,tcp/ip请求构建,五层因特网协议栈等等DNS查询得到IP1.域名组成: 这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号co...

sh435367384的博客 1万+

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

操作系统的作业管理

一、进程调度 调度即决策哪个进程可以获得CPU的使用权 1.调度机制 ①【就绪队列的排队机制】将就绪进程排成队列 ②【选择运行进程的委派机制】按一定的策略选择就绪进程 ③【新老进程的上下文切换机制】保存前进程的上下文信息,装入被委派进程的上下文 2.调度方法 ①【非抢占式调度】让被分配的进程执行完毕 ②【抢占式调度】允许以一定策略暂停当前进程 3.调度算法 ①【先来先服务算法】利用就绪队列,先来先...

啦啦啦小骑士的博客 1160

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

spark-yarn模式的最大资源利用

最优计算介绍 http://blog.youkuaiyun.com/fansy1990/article/details/54314249 http://blog.youkuaiyun.com/wisgood/article/details/51436546 堆外内存介绍 http://blog.youkuaiyun.com/bitcarmanlee/article/details/78793823

qq_27393737的博客 1365

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringMVC框架(2)之(2.5 Restful支持&配置静态资源过滤)

Restful支持

Karen博客 1008

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

零基础免费通过hexo+github快速搭建个人博客(超详细图解+B站视频讲解资源)

hexo+github博客搭建(超详细图解) B站教学视频链接 不过视频是基于mac的,这篇文章是基于window,结合起来! 遇到视频没有出现的bug,然后已经解决了 只要一步步跟着我的文章来,就可以搭建成功,我重新搭建了一遍然后顺便截图下来。避免重复造轮子。 具体流程 注册github取昵称是注意,这个昵称关乎你的网站的地址 下载node.js和git,node很好下载,但是git要注意...

furfur-jiang的博客 1535

简易web server之python实现

网络编程一项基本功是socket编程,包括TCP socket,UDP socket的客户端、服务器端编程。 应用层的各路协议如http,smtp,telnet,ftp等都依赖于传输层的TCP或者UDP,具体讲就是这两种socket为应用层提供传输功能。 利用tcp socket能编写web server,它处理client端发起的http请求,然后发送响应。 TCP是面向连接的协议,也就是发送数...

weixin_34417183的博客 325

网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别

先说一下网络的层级:由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层 1、TCP和UDP TCP:是面向连接的一种传输控制协议。属于传输层协议。TCP连接之后,客户端和服务器可以互相发送和接收消息,在客户端或者服务器没有主动断开之前,连接一直存在属于长连接。 优点:安全、传输数据无大小限制、准确可靠,先发先至 缺点:效率低,不能做离线任务、连接有耗时...

weixin_30741653的博客 449

python相关资源

生成PDF: reportlab 生成dwg: pythonCAD 生成excel:

yavobo的专栏 914

看完让你彻底搞懂Websocket原理

偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多资料都不及这一篇回帖让我对websocket的认识深刻有木有。所以转到我博客里,分享一下。比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗,纯粹为分享。废话这么多了,最后再赞一个~ 一、websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久

hsany330的专栏 1万+

MapReduce论文解读

MapReduce论文解读

老顽固也可爱 1055

【Java】死锁

死锁指多个线程在执行过程中,因争夺资源造成的一种相互等待的僵局。进程死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。线程死锁是指由于两个或者两个以上的线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。

qq_44544908的博客 1634

Ajax加强

xhr的基本使用 1.定义:浏览器提供的javascript对象,通过它,可以请求服务器上的数据资源。 2.使用xnr发起GET请求 步骤: (1)创建xhr对象 (2)调用xhr.open(‘请求方式’,‘URL地址’)函数 (3)调用xhr.send()函数来发起Ajax请求 (4)监听xhr.obreadystatechange事件,并指定处理函数【在这里面我们可以拿到服务器响应回来的数据】 这里面要监听xhr对象的请求状态readyState与服务器的响应状态status var xhr=new

weixin_43164078的博客 257

与字节数组相关的IO操作

总结一下与字节数组相关的IO操作。 关于 把十六进制的位串转化为byte数组,请参阅 http://hw1287789687.iteye.com/blog/1882644   (1)从InputStream 读取字节数组 方式一: /*** * Has been tested * * @param in * @return * @throws IOExc...

hw1287789687的专栏 3191

Spark 堆外内存

1.堆外内存有哪些前面提到spark中的堆内存溢出,除了堆内存,还有堆外内存。该部分内存主要用于程序的共享库、Perm Space、 线程Stack和一些Memory mapping等, 或者类C方式allocate object.堆外内存在Spark中可以从逻辑上分成两种: 一种是DirectMemory, 一种是JVM Overhead(下面统称为off heap), 这两者在Spark中的大小

bitcarmanlee的博客 1万+
上一篇: 一些小细节的注解&&拦截器
下一篇: char[]与byte[]相互转换
Lana啦啦啦
博客等级 码龄9年 5粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值