当前课程知识点:大数据系统基础 >  3.文件存储 >  授课视频 >  Video

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

Video在线视频

Video

下一节:Video

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

Video课程教案、知识点、字幕

那么前面我们讨论了

Google文件系统里面的性能问题

和它的可靠性问题

那么我们再深入地了解一下

Google文件系统里面

其他的一些细节

那其中一个非常重要的概念

就是文件系统的一个一致性

那么文件系统的一致性

有什么含义呢

我们可以看到

在Google文件系统里面

我们知道一个数据块有三个副本

有三个副本

那么对这三个副本

有一个最低的要求

什么要求呢

这三个副本都应该长成一个样子

不能说有一个里面是A

另外一个数据块里面放的值是B

最后一个数据块放的值是C

那么这个时候

客户端在读取文件的时候

就会不知道该怎么办

因为这个数据完全不一样

它不知道哪一份数据是正确的

这是我们对数据

提出的一个最基本的要求

所以呢

我们就是为了保证可靠性

要是让三个副本

那拿到三个副本之后呢

我们又带来另外一个问题

就是一致性的问题

所以这个问题有可能

比那个可靠性问题更难解决

所以我们看一下

在Google里面

它是怎么去做到这一点的

在说这个事情之前呢

我们先看一下

传统文件系统里面

有没有一致性的问题

那实际上传统文件系统里面

在硬盘上只有一份数据

所以它就不会出现说

有三份数据不一样的情况

所以这种一致性的问题

它就不会出现了 对吧

那传统文件系统里面

它有一个最基本的要求

什么要求呢

我们看一下更改数据呢

它操作就是在文件系统里面

就一个操作 就写入数据

那写入数据

我们看一下写入数据

它的函数是怎么调用的

那么前面是fd

然后给一个()的一个()

然后再给一个size

然后在这个函数里面

还缺一个参数

这个参数是什么东西呢

这个参数其实是隐含的

就是说文件系统在哪一个位置

偏移进行写入

比如说这是我的一个文件

那么我需要在这里面

写入的你的数据

那么这是传统的文件系统

它的操作 对吧

那么这里一致性的体现

无非就是说我写进去的数据

如果没有人接着往这里面写的话

那么我读出来的数据

就应该是我写入的数据 对吧

那么有一些同学问

这不是很显然的事情吗

那么在单机文件系统里面

在本地文件系统里面

除非你写错了

否则你写正确的话

这是显然的事情

但是在分布式文件系统里面

因为我要维护三个副本的一致性

那么这个就很难去保证了

所以我们后面会举出例子来说

我们可能会达不到这样一个目标

并且为了性能考虑

我们是故意达不到这样的目标的

那么再说这些事情之前呢

我们看一下

在Google文件系统里面

如何实现一个写入的构成

以保证数据的一个一致

那么我们首先看一个问题

就是在这里面的一个基本问题

我们如何去保证

这三个数据块它的内容是一样的

那么我们的目标是

维持每一个数据块的三个副本

完全一致

那么方法是什么样的一个方法

这个方法也是在分布式系统里面

非常通用的一个方法

那么我们先让整个数据

因为一开始的时候

所有数块是一样的

因为它们所有的数块都是空的

没有数据

那么初始数据相同

那么之后呢

我们如果按照相同的操作顺序

去执行所有的客户端的操作的话

比如说我写入的写入操作

都按照相同的次序写入

而且写入的操作都一样的话

那么我就可以保证

那个最终的这个数据块

应该是一样的

是吧

所以我们就需要让整个

在这个数据块的读写的操作

都完全一样

那么怎么去保证这一点呢

那么无非就是说

我需要定义所有操作的顺序

op1 op2 op3 op4 对吧

那么一件事情

我要保证它的顺序

那如果有一个人说了算的话

会比较好办

因为1 2 3 4 5

这个人说的话就完了

其他的人就听这个人的就行了

如果两个人

那就需要商量了

那三个人的过程

就是一个非常复杂的一个过程

在分布式的算法里面

被称之为一致性协商的一个过程

但是我们在文件系统里面

我们不需要这样的分布式地协商

那么我们知道

在Google文件系统里面

有一个单个的一个master

那么是不是在这种情况下

一个master就去决定说

我所有写入的顺序

这样的话会好不好

那么这样的话

对于master来说

会造成很多负担

对不对

因为对于master来说

它还要负责原数据的工作

还要负责

所有原数据的写入的顺序

这样的话

它可能会

让这个master的负担过重

所以在Google文件系统里面

master会把这件任务

委派给其中三个的副本的一个人

那么这一个人

被称为叫做主要副本

剩下的两个人会被称为次要副本

所以master说OK

那么我会把这件事情

委派给一个主要副本

那么这个主要副本

应不应该是固定的

好 那主要副本主要是固定的话

就会出现问题

原因是因为

这个主要副本会()()

完了之后呢

这个人说话别人就听不到了

那么这个时候就不行

所以master呢

在委派一个主要副本的时候呢

它是给了一个()

那么给了一个租期

就是说我在T1到T2这段时间内

你是主要副本

那么之后呢

如果这个人死了

那么我可以

让另外一个服务器顶上

作为主要副本

那如果这个人一直是活着的话

他就可以跟master进行续约

说我一直要做主要副本

这样的话

我可以操作顺序

可以让主要副本来定

所以呢

我总体的这种操作

可以由两个顺序来定

一个顺序是master

给主要副本的一个租期

另外一个是主要副本

它本身里面的顺序的一个定义

那通过这种方式的话

我可以保证说三个块的数据块

它所有的操作的顺序是一样的

所以我们可以看一下

在Google文件系统里面

对于数据块写入的一个过程

首先Client

它会跟master说

我要传数据了

master会告诉说

你跟这三个服务器进行联系

那么Client这个时候

可以把数据按照流水线的方式

传送到这三个服务器当中去

并且传送完了之后呢

就可以联系这个主要副本

那主要副本实际上

在这个时候

它会有什么样一个信息呢

它会有一大堆的写入的信息

那么主要副本就自己去选择

写入的顺序

那写入的顺序选择完毕之后呢

它会告诉次要副本说

我的写入顺序是什么样子的

那么次要副本就

按照同样的写入顺序

写入到数据块当中去

这样的话

就可以保证所有的数据块

是一样的

好 那么这是整个数据块

修改的一个过程

包括客户端

和主服务器的一个交互

那么在这个过程当中

如果出现错误的话

那么主要服务器

它会再进行重释

或者是客户端进行重释

那最终如果实在没有办法的话

就会告诉应用程序说

这次写入失败

那样通过这种方式的话

就能够维持这三个副本的一致性

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

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

Video笔记与讨论

也许你还感兴趣的课程:

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