Spark随笔(二):深入学习

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

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

  一层:一个类,具有三个属性值。为了查询这个类的所有实例,细粒度查询的程度为属性值,即依次查询每个实例化对象的属性值,查询三次;粗粒度按对象查询,直接查询该类的所有实例化对象,查询一次。查询结果是相同的,但是查询的方式却不同。这一类的实例有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去做。

  (未完,待续)

时间: 2024-12-29 06:42:58

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

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

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

设计模式(二)学习----动态代理

动态代理:动态代理是指在实现阶段不需要关心代理谁,而在运行阶段才指定代理哪一个对象.Spring AOP采用的核心思想就是动态代理设计模式.  下面看动态代理的UML类图: 下面思考问题:invocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的? 动态代理类: package com.lp.ecjtu.DynamicProxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect

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

<Linux内核设计与实现>第一.二章学习笔记 姓名:王玮怡  学号:20135116 第一章 Linux内核简介 一.关于Unix ——一个支持抢占式多任务.多线程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统 1.主要发展过程   1969年,贝尔实验室的程序员们设计了一个文件系统原型,最终发展演化成了Unix 1971年,Unix被移植到PDP-11型机中 1973年,整个Unix系统使用C语言进行重写,为后来Unix系统的广泛移植铺平了道路 Unix第六版(V6)被贝尔实

20135223何伟钦—信息安全系统设计基础第十二周学习总结

一.学习目标 1.掌握进程控制 2.掌握信号处理的方法 3.掌握管道和fifo进行进程间通信的方法 二.学习资源 编译.运行.阅读.理解process.tar.gz压缩包中的代码 三.编译.运行.阅读.理解代码 (1)exec1 execvp函数 表头文件: #include 定义函数: int execvp(const char file ,char const argv []); execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二

20145311 《信息安全系统设计基础》第十二周学习总结

20145311 <信息安全系统设计基础>第十二周学习总结 教材学习内容总结 20145311 <信息安全系统设计基础>第十一周学习总结 20145311 <信息安全系统设计基础>第十周学习总结 20145311 <信息安全系统设计基础>第九周学习总结 视频内容总结 指针数组:即用于存储指针的数组,也就是数组元素都是指针  int *a[10] 数组指针:即指向数组的指针,指针指向一个类型和元素个数都固定的数组 int (*a)[10] 指针函数:即返回值是

20145317《信息安全系统设计基础》第十二周学习总结1

20145317<信息安全系统设计基础>第十二周学习总结1 教材学习内容总结 第九周学习内容总结http://www.cnblogs.com/5317p/p/6052889.html 第十周学习内容总结http://www.cnblogs.com/5317p/p/6076074.html 第十一周学习内容总结http://www.cnblogs.com/5317p/p/6106708.html 视频学习内容总结 指针与声明 C语言中变量的声明包括两个部分: 类型 声明符 对于简单类型,声明并不

javaweb学习总结(三十二)——JDBC学习入门【转】

原文地址:javaweb学习总结(三十二)——JDBC学习入门 一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后 才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数 据库打交道,如下所示: 1.2.JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作

阿里知识储备之二——junit学习以及android单元测试

一,junit框架 http://blog.csdn.net/afeilxc/article/details/6218908 详细见这篇博客 juit目前已经可以和maven项目进行集成和测试,而且貌似不需要单独引入junit的组件就可以(maven自身已经引入?) 注意一下以下几个标记 @BeforeClass,@Before,@Test(timeout = 50),@After,@Before,@Test(expected = Exception.class),@After,@Before,

201671010117 2016-2017-2 《Java程序设计》Java第十二周学习心得

Java第十二周学习心得        在第十二周的理论课堂上,老师对1-4章的内容进行了测验,程序填空题和写程序题的分不是很高,程序题的重要部分都有遗漏,对于计算图书的总数那部分不会写,扣分较多,但是现在已经掌握了,接下来要在电脑上多多练习,周五老师对新内容第十章进行了讲解,这周到现在还没有遇到什么问题.

2017-2018-1 20155310 《信息安全系统设计基础》第十二周学习总结

2017-2018-1 20155310 <信息安全系统设计基础>第十二周学习总结 第一周 http://www.cnblogs.com/m20155310/p/7587317.html 第二周 http://www.cnblogs.com/m20155310/p/7618222.html 第三周 http://www.cnblogs.com/m20155310/p/7672424.html 第四周 http://www.cnblogs.com/m20155310/p/7672547.html