当前课程知识点:大数据系统基础 >  5.内存计算 >  授课视频 >  5.16复杂的DAG示例

返回《大数据系统基础》慕课在线视频课程列表

5.16复杂的DAG示例在线视频

5.16复杂的DAG示例

下一节:5.17RDD性能的提高

返回《大数据系统基础》慕课在线视频列表

5.16复杂的DAG示例课程教案、知识点、字幕

我们刚才谈到到这个例子

相对来说比较简单

也就是它那几个操作

实际上是一个线性变换的

也就是说从一个RDD

然后转换成一个RDD

再转换成另一个RDD就完了

那么实际上

在我们用Spark写的这个

程序里面

我们最后做成的这个

operator graph可以相当的复杂

那么就是我们这一页

实际上就显示了这样的

一个相对来说比较复杂的

这样的一个部分

那么我们可以看

它可以分为这样的

比如说我们在这个程序里面

首先有一些数据的都取

产生一些RDD A

那么A可以通过groupBy

生成这个RDD B

那么同时我们还可以有

另外的一些数据RDD C生成

然后它通过Map

转移到这个RDD D

然后D又通过filter

产生RDD E

然后B和E之间又去做了

这个join的操作

那么生成了RDD F

那么大家可以看一下

这样的一个图

它相当的复杂里面有各种各样的

opert的操作

但是我们在用Spark

写这个程序的时候

我们最后转成了

这样的一个图有一个要求

就是这个叫做这个DAG

DAG的意思叫做

D是directed有向的

A是ackeltey无环的

G是graph图

也就是说我们这个图

不管有多复杂中间有多少步

我们都希望它是一个

有向无环的这样的一个图

如果产生了环我们后面的调度

就有很多的事情

做起来会非常的困难

所以这儿实际上

就是给大家一个直观的

有向无环图的这样一个展示

也就是一个Spark的程序

我们在Spark

它在真正去执行的时候

它会把RDD之间

建立起这样的有向无环图的

这样的一个关系

并且它的调度执行

也是基于这样的有向无环图的

那么我们再介绍一个

Spark里面的性能优化技术

就是数据划分技术

这是一个pagerank的一个算法

那么它里面有两个

首先我们有两个RDD

一个叫links一个叫ranks

links它的内容就是url

和它的neighbors

url我们就可以认为是个网页

enighbors就是它相邻的网页

就是和它之间有相互连接的

ranks这个url也是个网页

rank是一个值是一个数字

也就是说你的pagerank

到底是多少

那么下面这个循环

实际上就是一个迭代的

在这个links和ranks这两个

通过它们这个集合不断地变换

来实现pagerank算法的

这样的一个过程

pagerank算法大家应该

在学习Map Reduce的时候

也相对来说比较熟悉

我在这儿就不做过多的介绍

我们这里面主要来介绍

在数据划分方面

Spark如何优化它们的数据划分

那么刚才的这样一个程序

实际上我们如果

用operator graph来表示

我们可以把它表示成

links还有ranks

但是因为有迭代

所以我们用这个一些版本

比如0 1 2来表示这个

中间的这样一些版本的不同

那么首先这个links和ranks

它发生了一个join的操作

生成了一个中间的这个结果

然后又通过reduce

得到了一个新的rank

那么新的rank又和links

产生了这个join

又产生了这个一个中间的结果

再进行reduce

那么从这个图上我们可以看到

rank这样的一个RDD

它会和links

它要做多次的join

join很多次

我们知道ranks和links

这两个东西它们都是

分布在不同机器内存里面的

它是RDD

它可能分布在不同的

机器的内存里面

那也就是说如果我们要

join比如说这个url A

它有这个某个邻居

A还有另外一些其它邻居

它放在一台机器上

links它放在某一台机器上

而ranks这个A0.02

B0.03这个东西

放在另外一台机器上

当我们做这个join操作的时候

我们就需要让这两台机器之间

有很多的通信

所以这个的优化

数据划分的优化

实际上就是这样的一个思路

也就是说

我们要让有相同url的

links和ranks这两个数据集

把它们尽量的分到一起

在一台机器上

这样他们join的时候

就可以避免网络通信

那么在这个Spark里面

还提供了这样的一个接口函数

叫partitionBy那么我们可以

用来自定义一个数据

来划分函数

因为需要系统知道说

是根据url来划分

还是通过什么

其他它的方式来划分

那么如果我们有partitionBy

这样的函数做自定义

我们就可以得到很好的

这样的结果

我们来看实际的这个例子

在这个pagerank的

这个例子里面

如果我们用Hadoop来跑的话

它的这个时间要花171秒

如果我们不去做

这个优化的划分

而只是基础的这个Spark的话

我们大概需要这个72秒的时间

但是如果我们是Spark

再加上我们刚才讲到的

这种优化的划分方式

就是把link和这个rank

这样两个RDD

我们想办法把相同url的

这个把它们放到同样的

一台机器上link rank

那么我们可以得到很好的效果

就是它最终的这个性能

可以达到23

可以看到Basic基本的Spark

这个性能又有大幅度的提升

时间大幅度的下降

大数据系统基础课程列表:

1. 绪论

-授课视频

--什么是大数据

--大数据典型应用

--大数据的特点

--大数据技术体系

--大数据生态系统

--大数据技术挑战

--课程内容

-1. 绪论--Quiz 1

2.云计算

-授课视频

--2.1大数据和云计算关系概述

--2.2并行化理念

--2.3规模经济理念

--2.4从仓库规模计算机到云

--2.5云计算商业模式概述

--2.6云计算带来的价值

--2.7云计算的分类

--2.8虚拟化技术概述

--2.9计算虚拟化

--2.10网络虚拟化:基础

--2.11网络虚拟化:软件定义网络

--2.12软件定义网络实现

--2.13存储虚拟化:用户接口

--2.14存储虚拟化:分布式存储实现方式

--2.15虚拟化技术总结

--2.16OPENSTACK

--2.17云计算小结

-2.云计算--Quiz 2

3.文件存储

-授课视频

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-3.文件存储--Quiz3

4. 处理框架

-授课视频

--4.1大数据的处理框架

--4.2MapReduce编程模型

--MapReduce执行过程

--4.4MapReduce数据流

--4.5MapReduce性能优化与容错

--4.6Hadoop

--4.7MapReduce总结

--4.8Pig Latin

--4.9Pig Latin语法

--4.10Pig Latin 嵌套数据类型

--4.11Pig Latin 实现与优化

--Pig Latin 实现与优化(2)

--4.13类似框架

--4.14章节总结

-4. 处理框架--Quiz4

5.内存计算

-授课视频

--5.1内存计算概述

--5.2并行计算挑战

--5.3并行计算的局限性

--5.4大数据处理并行系统

--5.5内存计算需求

--5.6MapReduce文件传递数据

--5.7内存计算的可行性

--5.8内存层次的延迟

--5.9内存计算实例-spark

--5.10SPARK-RDD

--5.11大数据并行系统

--5.12Spark编程接口

--5.13Spark编程实例——Log挖掘

--5.14Spark编程实例——WorkCount

--5.15Spark实现技术

--5.16复杂的DAG示例

--5.17RDD性能的提高

--5.18Spark应用和生态环境

--5.19Spark的局限性

-5.内存计算--Quiz5

6. NoSQL

-授课视频

--NoSQL与Cassandra

--数据模型、接口、语言

--系统架构与Gossip协议

--一致性哈希与数据分区

--数据副本及一致性

--节点本地数据存储

-6. NoSQL--Quiz6

7. 流计算

-授课视屏

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-7. 流计算--Quiz7

5.16复杂的DAG示例笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。