当前课程知识点:大数据系统基础 >  5.内存计算 >  授课视频 >  5.9内存计算实例-spark

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

5.9内存计算实例-spark在线视频

5.9内存计算实例-spark

下一节:5.10SPARK-RDD

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

5.9内存计算实例-spark课程教案、知识点、字幕

我们前面讲到

现有的这个内存计算的必要性

和可行性

那么下面我们就来介绍

以SPARK这样一个目前最流行的

内存计算的实例

来介绍一下内存计算的

真正的编程框架

那么SPARK的设计理念

是着重效率和容错

我们前面提到如何高效率的

抽象多台机器的内存

给程序员编程使用

是一个很重要的问题

那么在SPARK之前

实际上已经有很多的尝试

来抽象多台机器的内存

那么比如说

比较早期的DSM分布式共享内存

那么它所做的事情

是提供一个统一的地址空间

也就是说

把多台机器

它都可以给你做成一个

统一的编址

那么在这样的一个

等于不同机器的内存

你都可以直接用一个地址

来访问到

大家学过操作系统都知道

我们对于某一个虚存地址

可以通过这个虚存把它映射到

原来是映射到本机内存

或者是硬盘上的某一块数据

那么在分布式共享内存里面

你可能可以把它映射到

另外一台机器的物理内存

那么这样的话

这个分布式共享内存的

运行式系统

它可以用来做当你发现

这个page fault页缺失的时候

它帮你来底层的这个实际的

数据的传输

通过网络来存或者取数据

那么这种方式大家可以想象

它是相当难容错的

因为你如果其中

某一台机器坏掉了

那么有可能你要访问的

这个地址的数据就不存在了

那么这个时候怎么去处理

是一个相对来说

比较困难的问题

另外一种抽象多台机器

内存的方式

是分布式键-值存储

有代表性的像Piccol或者

RAMCloud这类的

分布式键-值对存储

它也是把数据都保存在

分布式系统的内存里面

而且它允许细粒度的访问

也就是说我们可以

访问一个key所对应的Value

这个Value实际上可以改的

也就是说

我们可以一开始把1把它写进去

然后我们后面

可以去读取这个值

读出来的时候这个时候读的是1

然后后面我们还可以

根据这个key然后我们再去

把它写入一个值

比如写入2

那么我们把这个2

也可以直接写到

这个Value里面去

那么这时候

再去读出来的这个值

就可能读出来2了

那大家可以看到

这样的一个方式

就是一种可以允许做细粒度的

而且去通过这个kev

实际上相当于一个全局的索引

你可以通过这个索引

找到它所对应的这个值

而且可以修改这个值

这种修改在英文里面

我们叫做mutable

可以想象

如果在这样的一个系统上

要支持容错的话

我们需要的开销也是相当大的

下一页我们来讨论

这个具体的容错的一些方式

那么在DSM和键值对里面

我们主要可以采用的

容错的机制有两种

第一种是副本

也就是说如果我们有多台机器

那么对于任何一个地址

我们可以把它对应的值

可以放多个副本

这里面我们就假如说放两个副本

那么当其中的某一个

部分发生错误的时候

我们还可以从另外一个副本

访问这个数据

这就是采用副本的

这样一个基本的原理

但是这种方式大家可以想像

如果我要去更新这个值

我们把这个地方擦掉

我们加入说

这个address它目前有两个副本

如果这个时候我们要去

写这个值把这个值写成1

把这个1要写进去

这个时候我们需要做什么事情

我们需要把这个1也写进去

这个1也写进去

也就是说写了这个操作

需要在两个副本上都完成以后

它才能真正的返回

大家可以想像

这样的一种方式

它的开销是相当大的

它比这个内存直接

我们去写一个东西的内存

要慢10-100倍

因为这个不仅是要写两份

不仅要在这儿写在这儿写

它还要通过其中的网络

来传输写的这个请求

所以就会更慢一些

另外一种容错的方式

不是采用这种副本的方式

它是这样的

那么我们可能实际记录的

只有这样这个地址

对应的这个地址的位置在这儿

那么我们真正写的时候

就把这个1写进去

但是

我同时还记了一个什么事情

我还有一个log over

这个log over里面会记一条

在某一个地址写了一个1

那么这种方式

我们并不需要写两份

但是这个写操作

往这个address里面写1的

这个操作

仍然是要等待这个log和这个写

都完成以后才能算真的完成

可以想见这样的一个机制

也同样引入了这个网络的开销

所以在这种方式下

不管采用log的方式

来记录这个已经进行的操作

来进行容错

也是一种

开销很大的这样一个方式

也同样要比单独的

本地内存写要慢10-100倍

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

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.9内存计算实例-spark笔记与讨论

也许你还感兴趣的课程:

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