当前课程知识点:高级大数据系统 >  Distributed File System >  File System Implementation and DFS >  Video

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

Video在线视频

Video

下一节:Video

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

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

好 我们介绍了这个文件系统

文件系统作为大数据存储的一个方案

实际上会被我们用到

它的很多概念

然后来实现分布式的文件系统

来对海量的数据进行有效的存储

那么 在这一部分

我们会去简要的介绍一下

假设你要去做一个自己的文件系统

你可能会去怎么样考虑这个问题

你怎么样利用底层的存储资源

你怎么样设计上层的这个名字空间

来达到一个数据的有效

高效的一个组织

那么文件系统的实现包含这样的一些内容

就是我们怎么样去实现一个文件系统

在这里面我们需要和硬件打交道

我们需要怎么样对物理的磁盘

物理的空间进行一个划分

那么在今天的文件系统里面

我们知道它会被组织成volume

或者是partition这样的一个模式

那么我们自己去设计这个系统的时候

就面临这样的一个划分的一个取舍

我们怎么样去设计目录

我们是要用树形的结构

还是用表的结构

或者是有其他的

这种符合你的业务的

这样一个结构

那么这也是文件系统在

设计的时候需要去考虑的

比如说在嵌入式的

这样一个系统里面

我们通常需要类似于单层

或者是表状的这样一个结构

达到一个实时的

数据的一个访问

那么我们怎么样去分配

存储的空间

怎么样去对数据的块

进行一个有效的存放

这是我们需要考虑的问题

我们怎么样去控制其他的

元数据信息

比如说我们需不需要控制访问权限

需不需要控制文件的大小

文件的流行度等等

这样的一些元数据

这是在我们的

文件系统里面设计的时候

需要去考虑的这样一些要素

那么回到文件的

几个核心的操作上

读写和删除以及增添

回到这些基础的要素上

我们需要做哪些事情呢

我们来看

当我们在实现

一个文件系统的时候

我们在创建文件的时候

我们做了一件什么事情

我们创建文件的时候

实际上我们是通过

我们自己管理的一个信息库

去在物理的空间磁盘上

找着一块位置

这个位置可以存放一定的数据

我们会把这个位置作为

文件存放的一个地点

不断的往里面去填充数据

那么在写文件的时候我们就是

想从刚刚创建的文件地方入手

找着一个文件的指针

往硬盘上去填充数据

这是文件的一个写操作

文件读的操作是反过来的

我们需要从我们创建的

一个结构当中

找着用户请求的一个文件

他在磁盘上对应的一个指针

一个位置

然后告诉字头

我们需要去把这块位置的

一些数据

一定程度的数据给读输出来

在整个文件的创建

写和读的过程中

一个核心的概念

我们就是需要对文件的名字空间

文件名目录名和文件在磁盘的

这样一个物理空间进行一个关联

在分布式文件系统

我们后面需要用在

大数据系统中的

这样一个分布式文件系统中的

这个数据处理

也会让大家在后面体会到

我们用到了类似的这样一个方法

怎么样找到一个位置

可以存放数据

怎么样找到一个位置

可以读出数据

那么这是文件系统最核心的

一些功能

它从原理上需要做的事情

我们来看今天的这种文件系统

它的这样一个layout

它的这样一个结构

大概是什么样的

今天的文件系统实际上

是从机械硬盘发展而来的

那么机械硬盘它的一个特征

就是它有磁盘

他的这个数据实际上是

有一定的顺序

有的数据是写在磁盘开头的位置

有的数据是写在磁盘靠后的位置

你可以把想象成一个带有编号的

这样一个筐 每个筐有一个编号

那么 在不同的编号上

我们可以放不同的数据进去

那么今天的文件系统的一个思路

就是将这个磁盘

划分出一些特定的区域

比如说磁盘的头部

在这些特定的区域

我们会存入一些

文件系统自身的信息

比如说一个叫做MBR的这样一个结构

叫做master boot record

那么它存的就是整个文件系统

它的一个元信息

那么在这样的一个元信息里面

可能包含了我们整个文件系统

其他的信息存储

分别存储在磁盘的哪些位置

那么我们使用的一些基本的一些编码

或者是我们使用的一些属性是什么样的

在元信息中都保存的有

好 那么我们在有了

这样一个最开始的元信息之后

实际上操作系统就可以将磁盘的

一个数据给读取起来

那么有了这样一个信息之后

整个文件系统实际上

就可以挂载的上了

那么挂载上之后

文件系统还需要

进一步细化自己的组织结构

那么细化的方式就是把整个磁盘

划分成不同的block

或者说不同的数据块

在每个数据块里面

会去存放真实的

这个用户需要用到的数据文件

数据 那么这些block

就会被文件系统组织起来

作为整个文件系统的

这样一个单元

这张图给到了文件系统

它的一个结构

今天的这种文件系统

通常的一个结构

那么在开始的位置

我们存放了

一些文件系统的元信息

那么 在后面的位置

我们会将磁盘划分成不同的block

每个block拥有类似的结构

要block会被整个文件系统的

元信息索引起来

那这是我们今天

文件系统的一个结构

为了往这些block里面

去存放数据

实际上今天对文件系统的讨论

又有了更细化的一个划分

我们怎么样在每一个连续的这些

数据块上面去存放真实的文件

里面的数据不同大小

不同的要求

那么今天的一些划分方法

大概会有这么几类

第一个就是连续的分配

也就是说我们会将一个文件

它的数据连续的存放到

这些block里面

它们是有顺序的

按照顺序不断的往后去增加

我们也可以把它组织成链表的一个结构

我们存了一个block

会把它链到另外一个block

这两个block 实际上并不需要

在物理空间上连在一块

我们还可以创建一些index的结构

然后在原数据中

把这个index给提取出来

得到每个数据是存放在什么位置

那么每个数据之间是独立的

它们只能够被index找到

那么等等

还有一些其他的更为复杂的

这样一个结构

或者说将这几种基本的模式

进行一个组合

比如说我们可以把link

和连续的模式进行一个组合

达到某一种特殊的目的

那么我们使用什么样的数据的

存放的这种分配

实际上取决于我们的业务

比如说在我们的业务中

有大量的这种连续的数据的读取

比如说我们动辄就会读取上GB

或者上TB的

这样一个数据的时候

我们可能更希望我们的数据是

连续的存放的

如果我们的数据有大量的

这种跳转和索引的话

我们可能会把它存储成链表

或者是索引的模式

这是我们根据业务进行一个

底层空间分配的一个思路

我们给两个例子让大家体会一下

这种分配它到底有什么样的特征

在这个例子当中

我们可以看到磁盘

是被连续的分配的

不同的文件

他的划分出来的数据块

占用了连续的一段空间

我们可以看到

这种存放方式实际上

是比较整齐的

文件被连续的放到一块

我们顺序读取的时候

有很高的这样一个效率

那么它的优点简单

因为文件被连续的放在这

然后可以满足比较快速的

这个顺序的读取

那么它的缺点是什么呢

一旦我们对文件发生了这个修改

需要进行重新的空间分配的时候

他就不太容易

达到一个比较高的空间利用率

比如说当我们

把一个比较小的空间的文件删除

而需要放入一个比较大的

容量的文件的时候

可能这个小的空间

就不再够大的文件放置了

我们必须把这块空间给浪费出来

然后另外找一个大的空间来放新的文件

那么这是它的一个缺点

那么这种缺点

实际上对于某一些场景

比如说固化的这个数据

比如说这种DVD

或者CD上的这种数据

那么它是不存在的

因为我们通常

不对这样的数据进行修改

所以它适应某一些场景

那么在我们大数据的

这样一个分析当中

实际上这种连续的空间分配

也对某一些场景是非常实用的

比如说我们有一些数据

它在生成生产之后

就不会再被修改

那么也许我们用顺序的方式

对它进行组织

就是一个比较好的一个方案

那么另外一种方案呢

假设我们把它连接成链表的形式

我们有文件

那么文件

可以被分成一些block

那么我们通过链表的形式

把这些block连接在一块

我们可以看这张图它的一个效果

那么每一个数据块

指明了他的下一段

存在了什么位置

那么被连接在了一块

它的优点是什么呢

他并不需要连续的磁盘空间

对于物理上的

这种碎片空间的利用率

会非常的高

因为只要满足了

它的一个block的一个下限

他就可以被存放起来

同时整个磁盘

他也只需要去维护

每一个小的block能够存放

那么就能够完成

一个很大的文件的一个扩展

把碎片空间有效的利用起来

那么它的缺点是什么呢

当我们需要进行随机访问的时候

它的这个过程就会变得非常的慢

因为我们需要有序的

从一个block

串联到下一个block

再串到我们最后

需要的某一个位置

那么这个过程

是一个非常漫长的过程

这是他的缺点

同时它的指针的操作

会有大量的开销

和我们刚刚说到的随机的访问的

问题是一致的

我们需要进行线性的一个遍历

才能够找着我们想要的

一个指针的位置

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

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