`

Spark block和partition的区别

 
阅读更多
hdfs中的block是分布式存储的最小单元,类似于盛放文件的盒子,一个文件可能要占多个盒子,但一个盒子里的内容只可能来自同一份文件。假设block设置为128M,文件是250M,那么这份文件占3个block(128+128+2)。这样的设计虽然会有一部分磁盘空间的浪费,但是整齐的block大小,便于快速找到、读取对应的内容。(p.s. 考虑到hdfs冗余设计,默认三份拷贝,实际上3*3=9个block的物理空间。)
Spark中的partion是弹性分布式数据集RDD的最小单元,RDD是由分布在各个节点上的partion组成的。partion是指的spark在计算过程中,生成的数据在计算空间内最小单元,同一份数据(RDD)的partion大小不一,数量不定,是根据application里的算子和最初读入的数据分块数量决定的,这也是为什么叫“弹性分布式”数据集的原因之一。

总结:
block位于存储空间、partion位于计算空间,
block的大小是固定的、partion大小是不固定的,
block是有冗余的、不会轻易丢失,partion(RDD)没有冗余设计、丢失之后重新计算得到

另外补充几点:
1.partition也可以有冗余,通过storagelevel来配置;
2.local或者yarn模式和partition,block概念上没有半毛钱关系,local模式也能操作hdfs,yarn模式也能操作本地文件;
3.存储上为什么要将空间抽象成块前面的兄台已经叙述了,而且之所以设计成这么大的理由还牵扯到大存储空间中的各种管理、容错等等。那么与之对应的,在并行计算里我们希望降低网络带宽的负荷,所以会对计算做一层计算本地性优化,那么怎样做到这点呢?最简单的逻辑,把计算代码发到数据所在的节点上执行就可以了。那么这样一来,怎样做到并行优化?很简单啦,把一个超大的文件切切切分成一个一个不大不小的块(比如hdfs默认的64M,或者配得再大一点),然后把这些块打散在集群的不同节点上,最后把应用代码跟着数据块走,就能在不同节点上并行计算了。与之相对应的,spark为了利用起内存,对一些中间数据尽可能的用内存访问速度进行读写,所以把这部分管理工作纳入到自己这里(对比一下,经典的Hadoop mapreduce就直接交给hdfs进行管理),可是就算存到内存里,那也得沿着这个思路来啊,不然计算本地化,并行之类的就很混乱了,那好吧,我也引入个概念,就叫partition好了,目的和前面一样。然后突然发现,哎呀我靠,这不得了,不仅能做到这些,既然我把一个超大份的数据都分成一块一块的了,那每一块是不是就能独立分隔开来了?
那一个超大份文件,内存完全放不下,完全可以把其中一些块放到内存里,另外一些暂时放到硬盘里嘛,好歹也比纯放到hdfs来得快嘛……于是生活就变得美好了起来。但是要注意的是,计算本地性优化并不是说绝对地把任务只发到数据所在地进行执行,还要考虑到均衡和并发能力的取舍。

转自:http://blog.csdn.net/sinat_31726559/article/details/51763439
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    spark-blockmanager基础及源码彻底解析

    Spark中的BlockManager是核心组件之一,它在大数据处理框架中起着至关重要的作用,负责管理分布式内存和磁盘资源,确保数据在计算过程中得以高效、可靠地存储和传输。以下是对BlockManager及其相关知识点的详细解析...

    Spark从入门到精通

    - **分区机制**:类似于HDFS的block机制,Spark也采用了分区(partition)的概念来优化数据处理。 - **RDD**:弹性分布式数据集,是Spark的核心抽象之一,它提供了一种高效、容错的方式来处理大量数据。 - **数据...

    大数据Spark面试题汇总

    16. **Partition和Block关联**: - Partition是逻辑概念,决定数据如何分布在Executor上。 - Block是物理存储单位,可能包含多个Partition。 17. **Spark应用程序执行流程**: - 用户代码创建DAG。 - ...

    spark-2.2.2安装流程

    ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。... BlockManager:负责存储管理、创建和查找块。 MetricsSystem:监控运行时性能指标信息。 SparkConf:负责存储配置信息。

    Spark算子的详细使用方法

    每个 Partition 对象都包含一个 index 成员,通过 RDD 编号 + index 就能从唯一确定分区的 Block 编号,持久化的 RDD 就能通过这个 Block 编号从存储介质中获得对应的分区数据。 Transformation 算子包括 map、...

    Spark源码倒腾

    在源码中,`org.apache.spark.rdd.RDD`类定义了RDD的基本操作,如`map`、`filter`等,而`Partition`接口则定义了数据的存储和访问方式。理解RDD的生命周期和转换机制,有助于优化数据处理流程。 再者,Spark的内存...

    Spark-存储机制.pdf

    - 分区(Partition)与数据块(Block)在存储层面是等价的概念,只是视角不同。数据块是最小的存取单元。 #### 数据块管理 - **数据块类型**: - **RDD数据块**: 用于缓存RDD数据。 - **Shuffle数据块**: 保存...

    Spark源码解读迷你书

    在介绍Spark源码时,了解其内部实现机制和相关数据操作是十分重要的。 首先,让我们从Spark的RDD谈起。RDD是Spark的基石,具备以下五大特性: 1. 分片列表(A list of partitions):RDD将数据切分为多个分片...

    spark shuffle原理

    随着Spark的发展,ShuffleManager的优化还在继续,例如引入了BlockManager和OpenHashMap等数据结构,以减少内存碎片和提高内存利用率。同时,还有基于RDMA技术的Remote Shuffle Service,旨在进一步减少网络延迟,...

    Spark Core 应用解析

    - **RDD概述**:RDD是由Hadoop中的BlockManager管理的一组分片(Partition),这些分片分布在不同的工作节点上。RDD的主要特点包括它的只读性、分区、依赖和缓存能力。 2. **RDD的属性** - **什么是RDD**:RDD是...

    以图搜图没有加比对的时候1

    2. **Block大小调整**:根据具体环境和数据分布,适当调整`spark.parquet.block.size`可以优化网络传输和数据处理。 3. **并行度优化**:根据节点资源和任务需求,合理设置executor数量和核心大小,以充分利用硬件...

    大叔的大数据面试题.pdf

    4. worker 执行阶段:接收 task 任务,通过 spark 的 block 管理器 blockManager 从集群节点上获取对应的 block 上的数据,启动 executor 完成计算 Spark 任务提交流程: 1. spark-submit 命令提交程序后,driver ...

    Spark调度架构原理详解

    1. 输入:数据从外部数据空间输入Spark,数据进入Spark运行时数据空间,转化为Spark中的数据块,通过BlockManager进行管理。 2. 运行:在Spark数据输入形成RDD后便可以通过变换算子,如filter等,对数据进行操作并将...

    大叔的大数据面试题.docx

    4. worker 执行阶段:接收 task 任务,通过 spark 的 block 管理器 blockManager 从集群节点上获取对应的 block 上的数据,启动 executor 完成计算。 Spark 任务提交流程 1. spark-submit 命令提交程序:driver 和...

    华为HCIA-大数据认证练试题与答案-202010.docx

    5. **Spark SQL与Hive的关系**:Spark SQL可以与Hive集成,利用Spark SQL执行Hive查询,同时Spark SQL也可独立于Hive运行,或者与Spark Core和MapReduce协同工作。 6. **FusionInsight与Spark**:FusionInsight是...

    大数据面试100题.pdf

    Spark组件主要包括Spark Core、Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。 spark工作机制: Spark基于内存计算,提供了RDD作为核心概念,并通过DAG来实现高效的任务调度和执行。 Spark主备切换...

    4399大数据笔试题.pdf

    10. Spark Stage的数量由Partition决定,每个Stage通常对应一次shuffle操作,Partition的划分会影响任务的并行度和Stage的划分。 七、填空题 未给出具体答案,但相关知识点包括: 1. Spark的部署模式:本地模式、...

    大数据私房菜面试题.pdf

    Spark支持批处理、流处理、机器学习和图计算。 #### Flink - Flink是一个开源的流处理框架,用于处理和分析实时数据流。它支持高吞吐、低延迟的数据处理,能够对流数据进行复杂的时间和状态管理。 #### Hive - ...

    【Spark2运算效率】第五节 影响生产集群运算效率的原因之小文件

    【Spark2运算效率】【Spark2运算效率】第五节 影响生产集群运算效率的原因之小文件前言问题概述案例结语跳转 前言 关于小文件的治理方案颇多,可以回归到hdfs底层的block层面看待治理问题。,首先可以通过查询命令...

    大数据面试经典题

    ### 大数据面试经典题解析 #### 一、Kafka的Message结构 ...通过以上内容,我们可以了解到Kafka、Hadoop和Spark等大数据技术的核心知识点及其在实际应用中的细节。这对于准备大数据面试的求职者来说是非常宝贵的资料。

Global site tag (gtag.js) - Google Analytics