当前课程知识点:大数据系统基础 >  5.内存计算 >  授课视频 >  5.10SPARK-RDD

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

5.10SPARK-RDD 在线视频

5.10SPARK-RDD

下一节:5.11大数据并行系统

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

5.10SPARK-RDD 课程教案、知识点、字幕

我们刚才讲到了传统的

内存抽象的容错开销是比较大的

它只有两类方法

那么在Spark里面

怎么解决这个问题

他提出了所谓的RDD

Resilinet Distributed Datasets

这样的一个模型

这个数据集数据抽象

它主要的特征是什么

首先

它是基于数据集合的

而不是单个数据的

也就是说大家注意这个sets

也就是它的编程抽象

是针对数据集合的

这样的话每一个数据

比如说我们有一个RDD A

我们对它做操作

比如说

把A转换称另外一个数据集B

这样的一个操作

我们如果要记log的话

我们还像刚才讲的

第二种容错的方法

记log的话

我们只需要记录把A

通过某种方法转换成B

比如这个转换是T的话

我们只要记这么多的信息

那么A里面可能有多少数据

可能有比如说有一百万个数据

那么对于这样

一百万个数据的转换

我们只要记一条

这样的记录就可以完成了

所以这个就可以在记录的方面

就可以节省大量的这样的时间

另外我们要真正的能够保证

能够容错的话

还需要让这个中间转换的方式

这个T这个transformation

它需要有一个特征叫做确定性

也就是说

我这个A通过这个T转换成B

那么如果A相同的话

每次转换出来的这个B

总是一样的

这个操作叫做确定性的

如果有一些非确定性的操作

大家可以想像

我即使记录了这个log

我知道这个转换是T

那么我下次执行这个T

想从A再产生B的时候

我也会产生不同的B

所以又达不到这个容错的

这样一个效果

那么第三个

是数据一旦产生就不能修改

也就是说当我产生了这个

数据集A以后

我就不能够直接的去

修改A中的某一个元素

或者是修改A中的

其它多个元素

我只能做的事情

是通过这样的一个转换

把它转换成另外的

其它的这个数据集合

或者把A直接生成一个值

比如说我们有一个操作叫做count

我们可以把A里面

有多少个元素数把它输出

比如说是五或者是一百万

这样的话做这些操作

我们都不能够再去修改

A里面的某一个元素

这样的一种设计

实际上还是为了容错的方便

那么假如A中的某个元素

可以被修改

那么实际上就回到了

我们刚才讲到的这种细粒度的

写的这样的一种方式

就和刚才讲的键值对

或者是DSM分布式共享内存

产生的问题是一样的

所以这个immutable

不能修改 不能够在

这里面还有一个词叫in-place

也就是说我们不能在这个A

它所对应的这个

数据集里面去改

那么我们当然还是可以改的

对吧 我们刚才说了

比如说我们要把A里面的

每个元素都加1

那么我们就可以通过

这样的一个变换

把它变换到数据集B里面去

那么这个B里面的每个元素

就是A里面的每个数据

都加1以后的这样一个结果

这个是可以的

但是大家注意这个修改

是把这个数据在转换的过程中

生成了一个新的数据集

而不是在A自己内部去修改的

所以这是RDD的这样一个设计

大家可以看到说

这样的一个设计

它的核心的出发点

实际上就是为了容错

我们可以看到

每一个设计的元素

都是为了容错

比如说

基于数据集合而不是单个数据

这主要是为了减小log的开销

基于确定性的粗粒度操作

也是为了我们今后能够

重复这样的操作

产生同样的结果来容错

那么immutatle这样的不能修改

不能做in-place修改的

这样的特征也是这样的

那好我们这边来看

这样一个例子

也就是说当我们按照RDD的

这个方式去做了这样的一种

数据抽象以后

也就是说数据是确定性的产生

而且产生后不会

变换immutatle的

一旦我们有了这样的特征以后

实际上我们可以通过

不是通过这个简单的log

或者是通过这个副本的方式

来恢复数据

而是通过重复计算的

这样的方式来恢复数据

那么我们还是要记log的

我们记的log是什么

我们只要记住这个RDD的

生成过程就可以了

而不是要记住它的每一个数据

是怎么变化的

因为我们刚才讲到

我们把它抽象成了集合以后

RDD这个Datasets

抽象成了一个集合以后

我们就可以用一个简单log

就记录一组数据的转换的过程

所以而且这种方式

在不出错的时候几乎没有开销

我们来看一下

下面这样的一个例子

这个例子是Scala语言的

不过大家即使没有

Scala语言的基础

也很容易理解

这里面我们首先

是读一个文件textFile

从这个hdfs上面

把这个数据读进来

读进来以后

我们对它做了一个过滤

过滤以后这个过滤的意思

大家很容易看懂

说这个里面

包括error的这些部分

把它取出来

那么对于所有有error的部分

我们再把它split

把它分词相当于

然后中间的这个分割符

是\t也就是把中间有errr的

这些部分再把它取出来

那么如果说我们

中间遇到的这个数据

比如说MappedRDD这个数据

它突然坏掉了

它所在的机器坏掉了

那么我们怎么能够去

重新产生它

因为我们没有去做副本

没有副本这个时候我们首先看

这个Map以后的这样的一个数据

就是最后产生的

这个massages它依赖于哪个

它依赖于前面的

这个FilteredRDD

也就是说这步的数据

如果这一步的数据我们还有

那么我们就可以把

这样的一个数据取出来以后

直接再去做Map操作

我们就可以

生成这样的MppedRDD

但如果FilteredRDD

也由于这个故障损失了

那我们还可以追诉

因为我们的log都记录了

那么这样的一个数据

是HadoopRDD也就是

从这个textFile中生成的

我们可以直接从这个

hdfs分布式文件系统中

取出这样的一个数据

也就是说这个数据

我们认为这个整个系统

如果没有完全失效的话

这个hdfs上面大家也学过

它是一个分布式文件系统

它有好几个文件副本

它可以把数据产生以后

然后再来做这个产生的这个

读取文件获得这个RDD以后

再去做这个Filered的操作

就可以得到Filered的RDD

然后再返回来做MAP这个操作

还是可以把messages恢复回来

所以这就是一个例子

也就是说

RDD这样的一种数据抽象

由于它是确定性的产生

而且产生后不会变换

所以我们可以通过

重复计算的方法来恢复数据

而且做这样的恢复

我们需要记录数据也非常少

因为我们是对数据集来做变换的

这就是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.10SPARK-RDD 笔记与讨论

也许你还感兴趣的课程:

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