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

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

Video在线视频

Video

下一节:Video

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

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

这一节我们需要讲解一下

分布式文件系统的一些基本设计

那么包括

Google文件系统的一些基本设计

那么我们知道文件系统

需要提供两方面的一个功能

一个是那棵目录树的操作

包括原数据的操作

创建目录等这方面的一些工作

另外一个是

对于数据的一个读写

包括打开文件和读写文件

这方面的一些内容

大家想一下

用什么样的最简单的方式

可以达到这个一个目的

那么其实实际上呢

为了提供这个目录树的一个操作

最简单的方式可以用一提机器

去存储这棵目录树

那么在这个环境下面

我们可以这么做

就是我们找一台机器

为了保存这棵目录树

包括它上面的所有的原数据

对吧

那么这台机器只存原数据

那么所有的原数据的操作

比如说应用程序

或者用户去读写这个原数据

比如说列一个目录的时候

那可以直接跟这台机器打交道

那么这是对简单地提供

原数据的方式

那么因为我需要保存大量的

大的文件

所以在这个原数据上面

应该会有一些

关于数据路由的信息

那么可以根据这个文件名

找到具体的结点的一个位置

那么在这里面可能会有

其他的一些服务器

专门存放那些数据

那么用户可以先在这里面

找到对应的原数据

那么这里面就会告诉说

这个文件存在哪个服务器里面

那比如说在这个服务器里面

那么用户就可以直接去跟

服务器打交道就行了

那么这是一个非常简单的设计

那么在Google文件系统里面呢

它也是用了同样的设计

达到完全同样的一个目的

那么这台服务器

一般被称为是一个主服务器

也叫master服务器

那其他的服务器就被称为

是个Chunker服务器

好 这是我们自己设计出来

一个结构

那么Google文件系统的

具体结构就展现在这里

那么我们可以看到

在主服务器的上面

大概就保存了这么一些

目录树的一些信息

这是整个目录树的信息

那么所有的关于目录树的操作

都在主服务器上面

那么所有的原数据

都保存在master服务器上面

那么我们可以看一下

为了达到数据读写的目的

那么原数据大概需要保存一些

什么样的一些内容

那么第一点

目录树也就是命名空间

Namespace是必不可少的

那么用户可以在这个namespace

上面进行浏览

能够找到对应的文件

那么第二个呢

我们知道前期我们在设计的时候

一个文件因为太大了

它会分成64MB

为一个大小的一个数据块

所以这个文件

会在namespace里面出现

那这个文件

它对应的数据块

数据块就叫Chunker

它的对应关系就要保存下来

那么Chunker

会有自己的Chunker ID的号

那么这是第二件事情

那第三件事情

可能比如说设计里面

需要保存这样的一个信息

它是最重要的信息

就是Chunker里面这个数据块

保存到哪些服务器当中去

那么如果我不考虑容错的话

那么一个数据块可能只需要

保存到一个Chunker服务器

就行了

但是为了保证它的可靠性

那么让Chunker服务器

出现错误的时候

我还能够读写到这样的数据

那么可以在这里边

每一个Chunker

需要对应多个Chunker服务器

那大家想一下

有这么多原数据的内容

是不是够了

那么为了考虑这个问题呢

我们可以把整个数据读写的流程

给它走一遍

如果能走得通的话

我们就知道

这个原数据已经完全足够了

对吧

好 在Google文件系统当中

所有的应用程序

它都会被链接到

一个系统的编程库里面

那系统的编程库

实际上就是Google文件系统

那个客户端的一个编程接口

也就是它的APR

那么应用程序

根据客户端的编程接口

它想去读写某一个文件

对吧

那么如果它对于原数据

进行操作的话

那么比如说是创建一个目录

那么它只需

要跟这个master服务器

打交道就可以了

把创建目录的命令交给master

那么这个时候master

就可以做相应的一个处理

对吧

那么如果是对于数据读写的话

那么应用程序

总归要给出一个文件的名字

然后给出一个Chunk index

那么什么叫Chunk idex呢
那实际上因为我们知道

所有的文件都分成多个Chunk

64MB为一块

所以会就Chunk0 Chunk1

Chunk2
这样的一个Chunk的一个号

那么我根据Chunk的号

我就能够找到对应Chunk

在文件当中的一个数据

和对应文件的内容的一个地址

那么把这个请求信息

发给master之后呢

那么

首先master需要做什么事情

master根据

第一部分的原数据信息

可以找到它是不是

在这个名字空间里面

当然如果没有在名字空间里面

就直接返回给用户

找不到文件就行了

然后在名字空间里面

找到这个文件它对应的

所有的数据块的ID

那么这是对应的

在这里面可以找到

对应的数据块的ID

是Chunk1 Chunk2 Chunk3

然后再根据这个Chunk1 2 3

去在里面再找

所有的文件的那个Chunk

然后在这里面去找

某一个Chunk对应的它的服务器

它的Chunk服务器

host1 host2 host3

那么找到这样的话

我们就完整了分布式文件系统

最本质的工作

就是根据一个数据块

它的ID号

可以直接对应到某一个

存储的服务器当中去

那么这是与master的交互

那么master就会把这部分信息

包括它的ChunkID

Chunk也会被称为Chunk handle

然后它的Chunk所在的一个位置

返回给应用程序

那应用程序根据这个信息之后

就把这个信息再与对应的

对应的文件系统的存储服务器

就是那个Chunker服务器

进行打交道 进行通信

然后交给Chunk handle

然后看一下它的字节的范围

在什么范围

那么读作什么样的一个操作

是读操作呢 还是写操作

那么Chunker服务器

自然就会把这个数据

返回给应用程序

那么这个呢

就是整个Google文件系统的一个

工作的一个流程

那么我们可以看到

整个工作流程走完了之后呢

这么多的原数据

就已经完全足够了

能够保证可以找到对应的一个

文件的一个数据

可以对对应的Chunker服务器

进行读写

好 那么这是

Google文件系统一个非常

简单的一个结构

因为它只用一个master服务器

这样的话它会避免很多

分布式算法里面一些复杂性

那么也可以简化整个

文件系统的维护的工作

那么在这里面呢

大家可以看到

就会发现

因为对于整个系统来说

现在有一个单点的结点的问题

什么叫单点的结点的问题

就是这个master

它处于一个特殊的位置

那么处于特殊的位置的话

比如说所有的文件操作

它都要先过一下master

那么我们就得需要考虑

第一个这个master

有没有可能它成为一个

Performers的瓶颈

就是说它有没有可能性能的瓶颈

那么大家都先保证master

那么它如果工作的负荷

非常大的话

会拖慢整个文件系统

另外一个呢

这个master因为它有个单点

所以它可能会出现错误

那么fall Tlant的问题

看看就是说有没有可能

master会出现fall Tlant的问题

当然了

关于Performers和fall Tlant

那个Chunker服务器

也是有相关的问题的

那么我们看一下

关于这些分布式文件系统的

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

也许你还感兴趣的课程:

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