首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAG是如何在RDD的掩护下工作的?

DAG是如何在RDD的掩护下工作的?
EN

Stack Overflow用户
提问于 2014-09-14 17:59:36
回答 2查看 49.7K关注 0票数 67

火花研究论文已经在经典的Hadoop MapReduce上提出了一个新的分布式编程模型,在许多情况下,特别是在机器学习方面,它的简化和巨大的性能提升。然而,本文缺乏利用internal mechanicsResilient Distributed Datasets上实现Directed Acyclic Graph的材料。

应该通过调查源代码来更好地学习吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-06 16:50:23

就连我也一直在网上寻找火花如何从RDD中计算DAG并随后执行任务。

在高级别上,当在RDD上调用任何操作时,Spark将创建DAG并将其提交给DAG调度程序。

  • DAG调度程序将操作符划分为任务的各个阶段。阶段由基于输入数据分区的任务组成。DAG调度程序将操作管道连接在一起。例如,许多地图运算符可以在一个阶段调度。DAG调度程序的最终结果是一组阶段。
  • 这些阶段被传递给任务Scheduler.The任务调度器,通过集群管理器( Standalone/Yarn/Mesos)启动任务。任务调度程序不知道各个阶段的依赖关系。
  • 工作人员执行奴隶上的任务。

让我们来看看星火如何构建DAG。

在高层次上,有两个转换可以应用到RDDs上,即窄转换和宽转换。广泛的转换基本上导致了舞台边界的形成。

窄带转换--不需要在分区之间对数据进行洗牌。例如,地图,过滤器等。

wide transformation --要求对数据进行洗牌,例如,reduceByKey等。

让我们以一个例子来计算在每个严重级别上显示了多少日志消息,

下面是以严重级别开始的日志文件,

代码语言:javascript
复制
INFO I'm Info message
WARN I'm a Warn message
INFO I'm another Info message

并创建以下scala代码来提取相同的

代码语言:javascript
复制
val input = sc.textFile("log.txt")
val splitedLines = input.map(line => line.split(" "))
                        .map(words => (words(0), 1))
                        .reduceByKey{(a,b) => a + b}

此命令序列隐式定义了RDD对象(RDD沿袭)的DAG,在调用操作时将使用该DAG。每个RDD都维护一个指向一个或多个父级的指针,以及关于它与父级的关系类型的元数据。例如,当我们在RDD上调用val b = a.map()时,RDD b保留对其父a的引用,这是一个沿袭。

为了显示RDD的谱系,Spark提供了一个调试方法toDebugString()。例如,在toDebugString() RDD上执行splitedLines,将输出以下内容:

代码语言:javascript
复制
(2) ShuffledRDD[6] at reduceByKey at <console>:25 []
    +-(2) MapPartitionsRDD[5] at map at <console>:24 []
    |  MapPartitionsRDD[4] at map at <console>:23 []
    |  log.txt MapPartitionsRDD[1] at textFile at <console>:21 []
    |  log.txt HadoopRDD[0] at textFile at <console>:21 []

第一行(从底部)显示输入的RDD。我们通过调用sc.textFile()创建了这个RDD。下面是从给定的RDD创建的DAG图的更多的图表视图。

一旦DAG生成,星火调度程序就会创建一个物理执行计划。如前所述,DAG调度程序将图分成多个阶段,阶段是基于转换创建的。狭窄的转换将被分组(管道内衬)为一个单一的阶段。因此,对于我们的示例,Spark将创建两个阶段执行,如下所示:

然后,DAG调度程序将将各个阶段提交到任务调度程序中。提交的任务数量取决于textFile中存在的分区数。Fox示例考虑本例中有4个分区,如果有足够多的从/核,则将创建4组任务并并行提交。下图更详细地说明了这一点:

要获得更详细的信息,我建议您查看以下youtube视频,其中火花创建者详细介绍了DAG、执行计划和生命周期。

  1. 高级Apache火花- Sameer Farooqui (数据库)
  2. 更深入地理解火花内部-亚伦戴维森(数据库)
  3. AmpLab火花塞内部构件简介
票数 164
EN

Stack Overflow用户

发布于 2016-07-03 16:20:19

从数据的Spark 1.4可视化开始,通过以下三个组件添加了数据可视化,其中还提供了一个清晰的DAG图形表示。

  • 星火事件的时间线视图
  • 执行DAG
  • 火花流统计的可视化

有关更多信息,请参考链接

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25836316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档