- 浏览: 599604 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
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中的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 会把数据都载入到内存吗
2017-06-01 10:14 819前言 很多初学者其实对Spark的编程模式还是RDD这个概念理 ... -
Spark Driver和Executor资源调度学习
2017-05-31 16:14 979一、引子 在Worker Actor中,每次LaunchE ... -
Spark 实现TopN的问题(groupBy)
2017-05-31 14:11 1404t2.txt ab 11 ab 23 ab 13 a ... -
Spark 什么是DAG(有向无环图)(窄依赖和宽依赖)
2017-05-26 16:46 2155在Spark里每一个操作生成一个RDD,RDD之间连一条边,最 ... -
Spark 为什么比Hadoop快
2017-05-25 16:12 1338Spark SQL比Hadoop Hive快, ... -
Spark 集群的搭建(1.6.3)
2017-05-24 10:41 8参考内容:http://www.cnblogs.com/one ... -
Spark shuffle实现详细探究学习
2017-04-28 15:08 573Background 在MapReduce框架中,shuffl ... -
Spark collect和take函数学习(RDD-->Array)
2017-04-27 15:44 2110将RDD转成Scala数组,并返回。 函数原型 def ... -
Spark MLlib平台的协同过滤算法---电影推荐系统学习
2017-04-27 15:33 627import org.apache.log4j.{Level, ... -
Spark parallelize函数和makeRDD函数的区别(Array-->RDD)
2017-04-27 14:56 834我们知道,在Spark中创建RDD的创建方式大概可以分为三种: ... -
Spark Streaming实时计算学习
2017-04-27 10:31 943随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处 ... -
Spark 集群的搭建学习(1.6.3)
2017-04-25 14:30 788Spark是一个快速、通用的计算集群框架,它的内核使用Scal ... -
Spark SQL简单示例学习
2017-04-25 14:17 763Spark SQL 作为Apache Spark大数据框架的一 ... -
Spark RDD基于内存的集群计算容错抽象(核心概念)
2017-04-11 20:09 675摘要 本文提出了分布 ... -
Spark 入门知识学习
2017-04-08 11:46 406什么是Spark Apache Spark是 ...
相关推荐
Spark中的BlockManager是核心组件之一,它在大数据处理框架中起着至关重要的作用,负责管理分布式内存和磁盘资源,确保数据在计算过程中得以高效、可靠地存储和传输。以下是对BlockManager及其相关知识点的详细解析...
- **分区机制**:类似于HDFS的block机制,Spark也采用了分区(partition)的概念来优化数据处理。 - **RDD**:弹性分布式数据集,是Spark的核心抽象之一,它提供了一种高效、容错的方式来处理大量数据。 - **数据...
16. **Partition和Block关联**: - Partition是逻辑概念,决定数据如何分布在Executor上。 - Block是物理存储单位,可能包含多个Partition。 17. **Spark应用程序执行流程**: - 用户代码创建DAG。 - ...
ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。... BlockManager:负责存储管理、创建和查找块。 MetricsSystem:监控运行时性能指标信息。 SparkConf:负责存储配置信息。
每个 Partition 对象都包含一个 index 成员,通过 RDD 编号 + index 就能从唯一确定分区的 Block 编号,持久化的 RDD 就能通过这个 Block 编号从存储介质中获得对应的分区数据。 Transformation 算子包括 map、...
在源码中,`org.apache.spark.rdd.RDD`类定义了RDD的基本操作,如`map`、`filter`等,而`Partition`接口则定义了数据的存储和访问方式。理解RDD的生命周期和转换机制,有助于优化数据处理流程。 再者,Spark的内存...
- 分区(Partition)与数据块(Block)在存储层面是等价的概念,只是视角不同。数据块是最小的存取单元。 #### 数据块管理 - **数据块类型**: - **RDD数据块**: 用于缓存RDD数据。 - **Shuffle数据块**: 保存...
在介绍Spark源码时,了解其内部实现机制和相关数据操作是十分重要的。 首先,让我们从Spark的RDD谈起。RDD是Spark的基石,具备以下五大特性: 1. 分片列表(A list of partitions):RDD将数据切分为多个分片...
随着Spark的发展,ShuffleManager的优化还在继续,例如引入了BlockManager和OpenHashMap等数据结构,以减少内存碎片和提高内存利用率。同时,还有基于RDMA技术的Remote Shuffle Service,旨在进一步减少网络延迟,...
- **RDD概述**:RDD是由Hadoop中的BlockManager管理的一组分片(Partition),这些分片分布在不同的工作节点上。RDD的主要特点包括它的只读性、分区、依赖和缓存能力。 2. **RDD的属性** - **什么是RDD**:RDD是...
2. **Block大小调整**:根据具体环境和数据分布,适当调整`spark.parquet.block.size`可以优化网络传输和数据处理。 3. **并行度优化**:根据节点资源和任务需求,合理设置executor数量和核心大小,以充分利用硬件...
4. worker 执行阶段:接收 task 任务,通过 spark 的 block 管理器 blockManager 从集群节点上获取对应的 block 上的数据,启动 executor 完成计算 Spark 任务提交流程: 1. spark-submit 命令提交程序后,driver ...
1. 输入:数据从外部数据空间输入Spark,数据进入Spark运行时数据空间,转化为Spark中的数据块,通过BlockManager进行管理。 2. 运行:在Spark数据输入形成RDD后便可以通过变换算子,如filter等,对数据进行操作并将...
4. worker 执行阶段:接收 task 任务,通过 spark 的 block 管理器 blockManager 从集群节点上获取对应的 block 上的数据,启动 executor 完成计算。 Spark 任务提交流程 1. spark-submit 命令提交程序:driver 和...
5. **Spark SQL与Hive的关系**:Spark SQL可以与Hive集成,利用Spark SQL执行Hive查询,同时Spark SQL也可独立于Hive运行,或者与Spark Core和MapReduce协同工作。 6. **FusionInsight与Spark**:FusionInsight是...
Spark组件主要包括Spark Core、Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。 spark工作机制: Spark基于内存计算,提供了RDD作为核心概念,并通过DAG来实现高效的任务调度和执行。 Spark主备切换...
10. Spark Stage的数量由Partition决定,每个Stage通常对应一次shuffle操作,Partition的划分会影响任务的并行度和Stage的划分。 七、填空题 未给出具体答案,但相关知识点包括: 1. Spark的部署模式:本地模式、...
Spark支持批处理、流处理、机器学习和图计算。 #### Flink - Flink是一个开源的流处理框架,用于处理和分析实时数据流。它支持高吞吐、低延迟的数据处理,能够对流数据进行复杂的时间和状态管理。 #### Hive - ...
【Spark2运算效率】【Spark2运算效率】第五节 影响生产集群运算效率的原因之小文件前言问题概述案例结语跳转 前言 关于小文件的治理方案颇多,可以回归到hdfs底层的block层面看待治理问题。,首先可以通过查询命令...
### 大数据面试经典题解析 #### 一、Kafka的Message结构 ...通过以上内容,我们可以了解到Kafka、Hadoop和Spark等大数据技术的核心知识点及其在实际应用中的细节。这对于准备大数据面试的求职者来说是非常宝贵的资料。