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

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

Video在线视频

Video

下一节:Video

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

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

好 这一节我们继续讨论

Google文件系统的一个

特殊的一个所谓放松的一致性

那么我们前面知道

Google文件系统用一套

协议的方式

维持这个数据块的一致性

那么在Google文件系统当中

我们在讨论

它的放松的一致性之前

我们再说一下

Google文件系统

对于数据的一个修改的一个操作

另外一个操作

叫做Appand操作

那么之前我们看到

这个里面是一个write操作

那么为什么只讨论这两个操作

不讨论读的操作呢

原因很简单

就是读的操作

它不会去修改数据

所以它不会影响数据的内容

所以它不会影响一致性

所以考虑这些呢

无非就是说我们看一下

Appand操作和write操作

它的顺序的一个问题

Appand操作

它有特殊的一个地方

它是叫做Atomic appand

什么叫Atomic Appand

就是它是原子性的追加

要么我这个数据

追加到文件系统的一个末尾

要么这个数据根本就没有出现

那么这个方式

为什么需要提供呢

我们可以想一下

Google文件系统它的用户是谁

用户就是它的搜索引擎

搜索引擎的话

有一个最前端的爬从

爬从的话

从网上把数据抓下来之后

会写到Google文件系统当中去

但是爬从在写数据的时候

它其实并不关心这个数据

写到文件的哪个位置

你只要把这个数据写进去

并且写这三个副本

并且这三个副本写得完全一样

就OK了

那么至于之后呢

因为这个爬从它是不关心的

所以在这个之后的程序

它可以从头到尾去扫描

那么在这个情况下

我要提供Appand操作的话

其实在写完之后

从客户端的角度来说

他是不知道

写到具体的一个位置的

那这一件事情

对于传统的文件系统

是不可以接受的

传统文件系统

你写入的时候

你是可以通过系统调用

或者你自己经过写入的一个跟踪

你是知道文件当前的写入位置的

但是Appand你是不知道的

所以在从

文件系统功能的角度来说

那个GFS

已经提供了一些新的一些功能

跟传统文件系统

不一样的一个功能

那么我们还看到了一个

写入的一个操作

那么这两个操作

会影响整个文件系统的一致性

好 那么一致性呢

分成两个层面

那么一个叫做Consistent

那么叫做文件的三个副本

它是一致的

另外叫做明确的Defined

就是说真正反映了客户端的操作

那大家回忆一下

实际上在本期文件系统里面

你写入什么东西

只要在写入和下一次读取之间

没有新的一个

在同样的一个区域写入的话

你读的数据

就应该是你写的数据

但是在分布式文件系统当中

GFS当中却不能这样的一个保证

那么比如说

我对一个文件F

我需要写入一块数据

那么写入怎么写呢

那么我们现在写入

因为我们需要支持多个客户端

对吧

那么我用A和B这两个客户端

那么A和B这个客户端

我要做一个写入操作

那么写完操作之后

这是写入操作

那么它们都写入到

这一块区域里面去

那么最后写的内容

如果是传统文件系统的话

它要么是A 要么是B

它不可能是A和B

其他方面的一个值 对不对

但是在Google文件系统里面

不是这样的

它写完之后

它有可能既不是A 也不是B

但是这个数据呢

在三个副本当中是一样的

那么有的同学会很奇怪

怎么会出现这种情况

那么我们需要解释一下

就比较明白了

那我们看一个

特殊的一个写的操作

比如说我有一个64M

我们知道数据块的大小分成64M

那么不管是A也好 B也好

它就正好是跨了

这个数块的一个边界

所以因为我要维持

这个数据块的一个边界

这样的话

我在Google文件系统在内部

它会把一个写操作

A这个写操作

分成两个写操作

分别是A1操作和A2操作

B1操作和B2操作

那么在这个时候呢

同学可能就会比较明白了

因为在拆分完了之后

A1 B1和A2 B2

其实是没有关系的

对吧

所以在这一部分数据

有可能写完了之后

这一部分数据

是先写A1 再写B1

这一部分先写B2 再写A2

这样的话

最后的结果是B1 A2

那么既不是A

又不是B

但是这个数据在三个副本上面

按照我们前面的协议

它们是完全一样的

三个副本都是B1 A2

但是却不反映客户端的

真正的写入的操作

所以这个操作就代表是

叫做Consistnet它的noteDefined

所以下面这个表格

就给出了Google文件系统当中

放松的一致性的一个工作

那么比如说

如果有单个客户端的话

顺序写入的话

那么写入操作

肯定是一致且明确的

就是说我只有一个人写

那么写完之后

肯定是反映这个人写的操作

但是如果是并发写得话

那么肯定是一个一致的状态

如果是写成功了

这些都是写成功的情况下

那么是一个一致的状态

三个人数据副本一样

但是数据并不一定是明确的

就是不一定反映了客户端的操作

这里我们给了一个例子

那这是关于写入操作的一个

一致性的定义

另外还有一个

追加操作的一致性的定义

因为追加操作在写完之后

其实你是不知道数据的

是不是它的具体的地址的

那么追加操作写完了之后

它的数据肯定是一致的

但是不一定会反映

用户的追加操作

原因是这样

比如说我现在的文件

末尾是在这个位置

但是再加上1M

正好是在64M的边界

所以我再追加一块数据的时候呢

比如说这个数据块的

追加数据块比如说是40M

那你再追加到这1M末尾的话

可能性能会比较差

所以40M最好是追加到

一个完整的块里面

这样的话

在前面的那个块的最后的末尾

那么我可能需要补充一些

打补丁的那些数据

就是把它塞满的那些数据

那么塞满什么样的数据呢

实际上无所谓

就是说我把它塞满就行了

对吧

那么这三个数据

可能是不一致的 对吧

所以这个追加操作

是一致且明确的状态

确实反映了用户追加的操作

但是

在这些一致明确的数据中间

会夹杂着一些不一致的数据你

对吧

这个我已经解释过了

在这儿

那么对于写入的操作的话

那数据是不一致的状态

那不一致的状态

我们就不需要切分了

好 那可以看到

这个Google里面放松的一致性

那么它实际上是为了性能的考虑

所以它把一致性的条件给放松了

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

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笔记与讨论

也许你还感兴趣的课程:

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