一、如何选择粗粒度和细粒度

  从底层往上引申来理解粗粒度与细粒度。

  一层:一个类,具有三个属性值。为了查询这个类的所有实例,细粒度查询的程度为属性值,即依次查询每个实例化对象的属性值,查询三次;粗粒度按对象查询,直接查询该类的所有实例化对象,查询一次。查询结果是相同的,但是查询的方式却不同。这一类的实例有Database中的查询操作,整表查询和逐步查询。

  二层:一个数据集,包含有多个对象。当对数据集进行操作时,细粒度的处理方式会获取数据集中的每个对象,然后执行相应的操作,执行的次数为对象的个数;粗粒度直接对整个数据集进行操作,将数据集中的对象按序执行操作,并不在乎其中的对象的特点。数据集应用粗粒度的实例即Spark的RDDs。

  三层:一个分布式应用,会让集群中的一些节点循环执行它所提供的计算。对节点分配资源时,细粒度的分配方式会检查应用执行所需要的每个节点,然后为这些节点分配资源;粗粒度的分配方式则以应用为单位,直接将应用所需的资源分配给应用,由应用来进行处理。分布式系统应用细粒度的实例即Mesos。

  因此,粗粒度会忽略对象整体的内部细节,或者说是将内部细节在计算的过程中进行同化,达到以块为执行单位的效果;细粒度则注重对象的任何一个属性及执行步骤,或者说注意底层计算的重用部分,达到以点为执行单位的效果。

  RDDs的操作中narrow dependencies是将一个RDD转换为新的RDD,操作的对象是RDD数据集,对RDD内部的<K,V>直接执行相应的map操作。因而,在进行写操作时一般是以整个RDD为单位进行写操作,采用粗粒度的方式更佳;而在进行读操作时,需要读取RDD时采用粗粒度寻址方式,而需要读取RDD中的内容进行action操作时,可以采用细粒度的寻址方式。

  Mesos采用细粒度的共享方式,这样做的一个好处是,尽管有些任务并不是同时执行细粒度的task,但是长任务和短任务仍然能够共享空间。框架决定需要哪些资源时是根据任务的长短来决定的,长任务一般需要更多的资源。而后Mesos为框架分配资源(这个策略是可以由用户指定的),但是却由框架来决定接收哪些资源,接受的资源可以用来执行任务(长任务或者短任务),不接受的资源由Mesos回收分配给其他的框架,这样既避免了长任务得不到资源的尴尬,也避免了长任务占据太多资源而导致短任务得不到执行。这种方法对待长任务和短任务的方法是否可以推广到其他方面?当Spark中的进程被判断为straggler后,它和正常进程的关系类似于长任务和短任务,至少它们的资源需求应该类似,对straggler推测执行固然能够解决一些问题,但是如果在它们申请资源时进行两次资源的判定,保证starggler的执行过程不影响正常进程的执行,会不会提高系统的性能?

二、系统中功能的分配

  Mesos的中心思想:定义一个能够保证资源共享利用率的尽可能小的接口,其他的工作都推给frameworks去做。

  (未完,待续)

Spark随笔(二):深入学习的更多相关文章

  1. 201871010136-赵艳强《面向对象程序设计(java)》第十二周学习总结

    201871010136-赵艳强<面向对象程序设计(java)>第十二周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...

  2. 毕业设计 之 二 PHP学习笔记(一)

    毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...

  3. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  4. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  5. 201521123072《java程序设计》第十二周学习总结

    201521123072<java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象 ...

  6. 201521123038 《Java程序设计》 第十二周学习总结

    201521123038 <Java程序设计> 第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student ...

  7. 201771010134杨其菊《面向对象程序设计java》第十二周学习总结

    第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分 ...

  8. VBA二次学习笔记(1)——文件操作

    说明(2018-9-1 11:20:46): 1. 上班三个月了,累的一逼,真的是钱少事多离家远,每天早上六点起,晚上八点回.哎,少壮不努力啊! 2. 三个月没写博客了,上一篇已经是5.29的了,真的 ...

  9. 《Linux内核设计与实现》 第一二章学习笔记

    <Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...

  10. 《Linux内核设计与实现》第一、二章学习笔记

    <Linux内核设计与实现>第一.二章学习笔记 姓名:王玮怡  学号:20135116 第一章 Linux内核简介 一.关于Unix ——一个支持抢占式多任务.多线程.虚拟内存.换页.动态 ...

随机推荐

  1. java中快速排序的理解以及实例

    所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换 ...

  2. zigbee学习之路(七):定时器3(中断方式)

    一.前言 上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出. 二.原理与分析 要使用定时器3,我们必须先要配置的是T3CTL,来把定时器 ...

  3. linux 用户态 内核态

    http://blog.chinaunix.net/uid-1829236-id-3182279.html 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在 ...

  4. POSTGRESQL 数据库导入导出

    导入整个数据库 psql -U postgres(用户名)  数据库名(缺省时同用户名) < /data/dum.sql   导出整个数据库 pg_dump -h localhost -U po ...

  5. PHP 小方法之 计算两个时间戳之间相差的日时分秒

    if(! function_exists ('timediff') ) { function timediff($begin_time,$end_time){ if($begin_time < ...

  6. angular directive scope

    angular directive scope 1.当directive 中不指定scope属性,则该directive 直接使用 app 的scope: 2.当directive 中指定scope属 ...

  7. 0512 Scrum 项目3.0

    SCRUM 流程的步骤2: Spring 计划 1. 确保product backlog井然有序.(参考示例图1) 2. Sprint周期,一个冲刺周期,长度定为两周,本学期还有三个冲刺周期. 3. ...

  8. ASCII十进制字符集

    <script> for(var i=33;i<=6000;i++){ document.write("&nbsp"+i+"&nbsp ...

  9. How do I install Adobe Flash on Debian Wheezy?

    aptitude install flashplugin-nonfreeif fail Check your settings in /etc/apt/sources.list. If this is ...

  10. python中列表的常用方法

    s=[1,2,3] s[3]=12#列表长度小于3时无法给列表赋值 len(s)#列表长 s+s s*5#l列表重复5次 5 in s#判断元素是否在列表中,返回true or false max(s ...