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去做。
(未完,待续)
Spark随笔(二):深入学习的更多相关文章
- 201871010136-赵艳强《面向对象程序设计(java)》第十二周学习总结
201871010136-赵艳强<面向对象程序设计(java)>第十二周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...
- 毕业设计 之 二 PHP学习笔记(一)
毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...
- Java基础知识二次学习-- 第一章 java基础
基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...
- 201521123061 《Java程序设计》第十二周学习总结
201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...
- 201521123072《java程序设计》第十二周学习总结
201521123072<java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象 ...
- 201521123038 《Java程序设计》 第十二周学习总结
201521123038 <Java程序设计> 第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student ...
- 201771010134杨其菊《面向对象程序设计java》第十二周学习总结
第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分 ...
- VBA二次学习笔记(1)——文件操作
说明(2018-9-1 11:20:46): 1. 上班三个月了,累的一逼,真的是钱少事多离家远,每天早上六点起,晚上八点回.哎,少壮不努力啊! 2. 三个月没写博客了,上一篇已经是5.29的了,真的 ...
- 《Linux内核设计与实现》 第一二章学习笔记
<Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...
- 《Linux内核设计与实现》第一、二章学习笔记
<Linux内核设计与实现>第一.二章学习笔记 姓名:王玮怡 学号:20135116 第一章 Linux内核简介 一.关于Unix ——一个支持抢占式多任务.多线程.虚拟内存.换页.动态 ...
随机推荐
- Python之logging模块
一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...
- 【转】DQL、DML、DDL、DCL的概念与区别
转自 http://blog.csdn.net/tomatofly/article/details/5949070 SQL(Structure Query Language)语言是数据库的核心语言. ...
- 1. Swift基本变量|运算符|控制流
Swift基于cocoa Touch框架,苹果官方为了保证Swift的可靠性,结合多种语言的特性,同时独立了一套属于自己的单独语言,结合了C,C++,OC,Java等语言. 基本变量: 1 . swi ...
- Linux 休眠,挂起(待机),关机等几个命令的区别及如何实现;如何启用Ubuntu的休眠模式
这里对linux 的几个命令整理下,有:休眠,挂起,待机,关机等几个命令的区别及如何实现. 休眠是一种更加省电的模式,它将内存中的数据保存于硬盘中,所有设备都停止工作.当再次使用时需按开关机键,机器将 ...
- C/C++与Matlab混合编程
Matlab 拥有丰富的功能,编程简单.不过,有些情况下,Matlab程序的执行速度比较慢.C/C++编译执行的程序速度比较快,编程难度上比Matlab要高一些.因此存在一种方案,就是使用Matlab ...
- filter 过滤缓存
package fifter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.Filter ...
- Linux 系统使用之 VMware Tools安装
Red Hat Enterprise Linux 4系统中安装VMware Tools 1. 必须以ROOT身份进入Linux 2. 进入linux系统,然后按下 CTRL+ALT组合键,进入主操作系 ...
- PHP 小方法之 二维数组排序
if (! function_exists ( 'multi_array_sort' )) { function multi_array_sort($arr, $keys, $type = 'desc ...
- aws ftp
amazon ec2 运行后,可以用key pair ssh到终端, 不得不承认key pair是很安全的一种方式, 但是安全意味着麻烦,要登陆ssh必须随身带着key pair, 不过个人见意还是不 ...
- Evolutionary Computing: 4. Review
Resource:<Introduction to Evolutionary Computing> 1. What is an evolutionary algorithm? There ...