- 浏览: 596133 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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)
最新评论
在Spark里每一个操作生成一个RDD,RDD之间连一条边,最后这些RDD和他们之间的边组成一个有向无环图,这个就是DAG。
在spark的应用
Spark内核会在需要计算发生的时刻绘制一张关于计算路径的有向无环图,也就是DAG。
有了计算的DAG图,Spark内核下一步的任务就是根据DAG图将计算划分成任务集,也就是Stage,这样可以将任务提交到计算节点进行真正的计算。Spark计算的中间结果默认是保存在内存中的,Spark在划分Stage的时候会充分考虑在分布式计算中可流水线计算(pipeline)的部分来提高计算的效率,而在这个过程中,主要的根据就是RDD的依赖类型。根据不同的transformation操作,RDD的依赖可以分为窄依赖(Narrow Dependency)和宽依赖(Wide Dependency,在代码中为ShuffleDependency)两种类型。
窄依赖指的是生成的RDD中每个partition只依赖于父RDD(s) 固定的partition。
宽依赖指的是生成的RDD的每一个partition都依赖于父 RDD(s) 所有partition。
窄依赖典型的操作有map, filter, union等
宽依赖典型的操作有groupByKey, sortByKey等。
可以看到,宽依赖往往意味着shuffle操作,这也是Spark划分stage的主要边界。对于窄依赖,Spark会将其尽量划分在同一个stage中,因为它们可以进行流水线计算。
至于以上一些shuffer过程建议大家多看看spark官网会比较好点
转自:http://blog.csdn.net/sinat_31726559/article/details/51738155
在spark的应用
Spark内核会在需要计算发生的时刻绘制一张关于计算路径的有向无环图,也就是DAG。
有了计算的DAG图,Spark内核下一步的任务就是根据DAG图将计算划分成任务集,也就是Stage,这样可以将任务提交到计算节点进行真正的计算。Spark计算的中间结果默认是保存在内存中的,Spark在划分Stage的时候会充分考虑在分布式计算中可流水线计算(pipeline)的部分来提高计算的效率,而在这个过程中,主要的根据就是RDD的依赖类型。根据不同的transformation操作,RDD的依赖可以分为窄依赖(Narrow Dependency)和宽依赖(Wide Dependency,在代码中为ShuffleDependency)两种类型。
窄依赖指的是生成的RDD中每个partition只依赖于父RDD(s) 固定的partition。
宽依赖指的是生成的RDD的每一个partition都依赖于父 RDD(s) 所有partition。
窄依赖典型的操作有map, filter, union等
宽依赖典型的操作有groupByKey, sortByKey等。
可以看到,宽依赖往往意味着shuffle操作,这也是Spark划分stage的主要边界。对于窄依赖,Spark会将其尽量划分在同一个stage中,因为它们可以进行流水线计算。
至于以上一些shuffer过程建议大家多看看spark官网会比较好点
转自:http://blog.csdn.net/sinat_31726559/article/details/51738155
发表评论
文章已被作者锁定,不允许评论。
-
Spark 会把数据都载入到内存吗
2017-06-01 10:14 814前言 很多初学者其实对Spark的编程模式还是RDD这个概念理 ... -
Spark Driver和Executor资源调度学习
2017-05-31 16:14 976一、引子 在Worker Actor中,每次LaunchE ... -
Spark 实现TopN的问题(groupBy)
2017-05-31 14:11 1400t2.txt ab 11 ab 23 ab 13 a ... -
Spark block和partition的区别
2017-05-31 13:48 973hdfs中的block是分布式存储的最小单元,类似于盛放文件的 ... -
Spark 为什么比Hadoop快
2017-05-25 16:12 1335Spark 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 572Background 在MapReduce框架中,shuffl ... -
Spark collect和take函数学习(RDD-->Array)
2017-04-27 15:44 2106将RDD转成Scala数组,并返回。 函数原型 def ... -
Spark MLlib平台的协同过滤算法---电影推荐系统学习
2017-04-27 15:33 626import org.apache.log4j.{Level, ... -
Spark parallelize函数和makeRDD函数的区别(Array-->RDD)
2017-04-27 14:56 824我们知道,在Spark中创建RDD的创建方式大概可以分为三种: ... -
Spark Streaming实时计算学习
2017-04-27 10:31 942随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处 ... -
Spark 集群的搭建学习(1.6.3)
2017-04-25 14:30 784Spark是一个快速、通用的计算集群框架,它的内核使用Scal ... -
Spark SQL简单示例学习
2017-04-25 14:17 758Spark SQL 作为Apache Spark大数据框架的一 ... -
Spark RDD基于内存的集群计算容错抽象(核心概念)
2017-04-11 20:09 671摘要 本文提出了分布 ... -
Spark 入门知识学习
2017-04-08 11:46 400什么是Spark Apache Spark是 ...
相关推荐
RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。 窄依赖: 窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用 总结:窄依赖我们...
DAGScheduler 是有向无环图调度器,负责将作业拆分成不同阶段的具有依赖关系的多批任务。在 SparkContext 初始化的过程中被实例化,一个 SparkContext 对应创建一个 DAGScheduler。DAGScheduler 完成以下工作:划分 ...
在Spark中,DAG(有向无环图)用于描述任务的执行流程。transformations产生的新RDD并不会立即计算,而是等到遇到actions时才会启动计算。依赖关系分为窄依赖和宽依赖,窄依赖保证了更好的并行性,而宽依赖可能需要...
在图论中,环与块是两个基本概念,尤其在有向无环图(DAG,Directed Acyclic Graph)的分析中,它们扮演着关键角色。 **环与图论** 环在图论中指的是一个起点和终点相同的路径,它构成了一个闭合序列。在无向图中,...
此外,Spark采用了有向无环图(DAG)的任务调度机制,优化了执行计划,使得任务执行更加高效。 Spark是伯利克分析栈(BDAS)的一部分,与Hadoop生态系统中的MapReduce、HDFS、HBase、Hive等组件相辅相成。BDAS还...
转换操作构建了一个有向无环图 (DAG),该图表示了计算任务的执行顺序。Spark 使用这个 DAG 来计划和调度工作。 5. **计算函数与优先位置** 用户自定义的函数可以应用于 RDD 上,这些函数在执行时会考虑数据的...
DAG(有向无环图)与 Stage: DAG 是 Spark 作业的逻辑表示,由一系列操作(Stage)组成。Stage 是 Spark 任务的物理执行单位,划分的依据是宽依赖和窄依赖。宽依赖涉及到数据的 shuffle,导致跨节点的数据传输;窄...
当用户提交一个Spark程序时,Spark Driver会解析这个程序,将一系列的RDD操作转化为DAG(有向无环图),每个DAG就代表一个Job。Job会被进一步分解为Stage,Stage是任务调度的基本单位,通常一个Stage包含一组相互...
- DAG(有向无环图):Spark作业的执行计划表示,任务会被分解为一系列DAG阶段。 2. Spark的主要组件: - Spark Core:Spark的基础模块,提供并行计算的基本功能,包括调度、内存管理、故障恢复等。 - Spark SQL...
依赖分为窄依赖和宽依赖:窄依赖是指一个RDD的分区只依赖于另一个RDD的少数分区,这允许任务并行化;宽依赖则是指一个RDD的分区依赖于所有或大量其他RDD的分区,这通常会导致数据shuffle,是计算的瓶颈。 Spark的...
API、配置文件、日志输出控制、有向无环图、计算逻辑、Spark 应用程序配置、Spark 集群节点配置、RDD 算子类型、广播变量、累加器、全局共享变量、宽依赖和窄依赖、DataFrames 数据处理等。 1. Spark 的四大组件:...
Spark基于DAG(有向无环图)执行模型,它将计算任务分解为一系列可重用的任务单元,这些任务单元可以在集群中的多台机器上并行执行。它的主要组件包括:Spark Core、Spark SQL、Spark Streaming、MLlib(机器学习库...
我们将深入理解RDD的创建、转换和行动操作,以及优化策略如宽依赖和窄依赖。 5. **Spark Streaming**:讲解如何使用Spark Streaming构建实时数据处理系统,理解微批处理的概念,以及如何与其他流处理框架如Kafka...
- Driver Program:是应用程序的主要控制进程,它负责构建DAG(有向无环图),并调度任务到集群上的Executor。 - ClusterManager:是资源管理器,例如YARN或Mesos,负责分配集群资源给Driver和Executor。 - ...
DAG(Directed Acycle graph)是一个有向无环图,反应 RDD 之间的依赖关系。DAG 其实就是一个 JOB(会根据依赖关系被划分成多个 Stage)。注意:一个 Spark 程序会有 1~n 个 DAG,调用一次 Action 就会形成一个 DAG...
- **DAG(有向无环图)**:Spark的任务调度基于DAG,它表示了任务间的依赖关系。 - **Job、Stage、Task**:Job是用户提交的完整操作,被分解为多个Stage(基于Shuffle划分),每个Stage又包含多个并行执行的Task。...
Driver是应用程序的主进程,负责编译和优化任务执行计划,生成DAG(有向无环图)并将其分发给Executor。Executor是运行在工作节点上的进程,负责执行实际的任务计算,它们之间通过内存通信,减少了磁盘I/O,提高了...
其次,Spark的计算模型基于DAG(有向无环图)作业。用户编写的应用程序被分解为一系列的RDD转换和动作,这些转换和动作构成一个DAG,Spark的JobScheduler会将这个DAG拆分成多个Stage。Stage是基于数据依赖关系划分的...
8. **优化的DAG调度**:Spark的调度器会构建DAG(有向无环图),通过优化任务调度,减少shuffle操作,提升性能。 9. **交互式编程**:Spark提供了Scala、Java、Python和R等多种API,支持交互式Shell,方便开发者...
9. **DAG (有向无环图)**:DAG表示RDD之间的依赖关系,是Spark作业的逻辑表示。DAGScheduler根据DAG划分Stage。 10. **DAGScheduler**:DAGScheduler是Spark的高级调度器,它分析DAG来确定任务的执行顺序,将作业...