Spark block和partition的区别
hdfs中的block是分布式存储的最小单元,类似于盛放文件的盒子,一个文件可能要占多个盒子,但一个盒子里的内容只可能来自同一份文件。假设block设置为128M,文件是250M,那么这份文件占3个block(128+128+2)。这样的设计虽然会有一部分磁盘空间的浪费,但是整齐的block大小,便于快速找到、读取对应的内容。(p.s. 考虑到hdfs冗余设计,默认三份拷贝,实际上3*3=9个block的物理空间。)
[color=red][b]Spark中的partion是弹性分布式数据集RDD的最小单元,RDD是由分布在各个节点上的partion组成的。[/b][/color]partion是指的spark在计算过程中,生成的数据在计算空间内最小单元,同一份数据(RDD)的partion大小不一,数量不定,是根据application里的算子和最初读入的数据分块数量决定的,这也是为什么叫“弹性分布式”数据集的原因之一。
[size=large][b]总结:[/b][/size]
block位于存储空间、partion位于计算空间,
block的大小是固定的、partion大小是不固定的,
block是有冗余的、不会轻易丢失,partion(RDD)没有冗余设计、丢失之后重新计算得到
[b]另外补充几点:[/b]
1.partition也可以有冗余,通过storagelevel来配置;
2.local或者yarn模式和partition,block概念上没有半毛钱关系,local模式也能操作hdfs,yarn模式也能操作本地文件;
3.存储上为什么要将空间抽象成块前面的兄台已经叙述了,而且之所以设计成这么大的理由还牵扯到大存储空间中的各种管理、容错等等。那么与之对应的,在并行计算里我们希望降低网络带宽的负荷,所以会对计算做一层计算本地性优化,那么怎样做到这点呢?最简单的逻辑,把计算代码发到数据所在的节点上执行就可以了。那么这样一来,怎样做到并行优化?很简单啦,把一个超大的文件切切切分成一个一个不大不小的块(比如hdfs默认的64M,或者配得再大一点),然后把这些块打散在集群的不同节点上,最后把应用代码跟着数据块走,就能在不同节点上并行计算了。与之相对应的,[b]spark为了利用起内存,对一些中间数据尽可能的用内存访问速度进行读写,所以把这部分管理工作纳入到自己这里(对比一下,经典的Hadoop mapreduce就直接交给hdfs进行管理),可是就算存到内存里,那也得沿着这个思路来啊,不然计算本地化,并行之类的就很混乱了,那好吧,我也引入个概念,就叫partition好了,目的和前面一样。[/b]然后突然发现,哎呀我靠,这不得了,不仅能做到这些,既然我把一个超大份的数据都分成一块一块的了,那每一块是不是就能独立分隔开来了?
[color=blue][b]那一个超大份文件,内存完全放不下,完全可以把其中一些块放到内存里,另外一些暂时放到硬盘里嘛,好歹也比纯放到hdfs来得快嘛[/b][/color]……于是生活就变得美好了起来。但是要注意的是,计算本地性优化并不是说绝对地把任务只发到数据所在地进行执行,还要考虑到均衡和并发能力的取舍。
转自:[url]http://blog.csdn.net/sinat_31726559/article/details/51763439[/url]
Spark block和partition的区别相关推荐
- Ruby 之 Block, Proc, Lambda 联系--区别,转载
Ruby 之 Block, Proc, Lambda Block Block 不是对象,是Ruby的语言特性,近似于闭包(Closure). 范例: def meth res= yield ...
- display:inline、block、inline-block的区别
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- display:inline、block、inline-block的区别以及该死的ie6兼容问题
2019独角兽企业重金招聘Python工程师标准>>> display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...
- Spark精华问答 | Spark和Hadoop的架构区别解读
总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...
- Spark的Cache和Checkpoint区别和联系拾遗
点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 作为区别于 Hadoop 的一个重要 feature,cache 机制保证了需要访问重复数据的应用 ...
- hadoop组件---spark----全面了解spark以及与hadoop的区别
Spark是什么 Spark (全称 Apache Spark™) 是一个专门处理大数据量分析任务的通用数据分析引擎. spark官网 Spark核心代码是用scala语言开发的,不过支持使用多种语言 ...
- 认清Hadoop和Spark的这几点区别,学习时才能事半功倍
很多初学Hadoop开发的同学分不清Hadoop和Spark究竟有什么联系? 搞不清Hadoop和Spark是两个独立的框架,还是必须相互依存才能完成工作? 今天就给大家分析一下Hadoop和Spar ...
- display:inline-block,block,inline的区别与用法
一.首先要了解什么是块级元素与行级元素 块级元素 会占领页面的一行,其后多个block元素自动换行. 可以设置width,height,设置了width后同样也占领一行.同样也可以设置 margi ...
- spark原理和spark与mapreduce的最大区别
参考文档:https://files.cnblogs.com/files/han-guang-xue/spark1.pdf 参考网址:https://www.cnblogs.com/wangrd/p/ ...
最新文章
- MyBatis 一对多、多对一的处理~
- 获取 视频 音频 及其他文件的真实信息(不靠文件后缀判断) (getID3())
- python编程入门书籍-编程小白的第一本 Python 入门书
- Kafka安装之一 Zookeeper
- 线性代数-MIT 18.06-汇总
- 常见笔顺错误的字_[转载]常见笔画笔顺易错字大全
- 体育新闻html模板,HTML5响应式体育新闻资讯类门户网站模板源码+自适应移动端...
- EBS开发_创建销售人员API
- 通过v$bgprocess查看后台进程
- BPM平台在企业业务系统中使用的价值讨论
- AspNet Core 2.2 SendGrid邮件发送(可群发)
- 如何防止表单重复提交问题
- VM(虚拟机)Ubuntu打不开
- SQL 中 TRIM()函数用法
- Linux ps aux什么含义,Linux下psaux解释
- 【ROS】rosbag使用
- 测试未来老公的样子软件,你的未来老公是哪一型?
- CentOS安装Webmin/WebAdmin管理工具
- 荔枝微课如何引流?荔枝微课如何操作?荔枝微课怎么增加人气?
- Linux系统自带日志管理工具rsyslog简单介绍