当前课程知识点:大数据系统基础 > 5.内存计算 > 授课视频 > 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. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7