当前课程知识点:高级大数据系统 > Distributed File System > File system and GFS > Video
我们会首先介绍单机上的
这个文件系统
那么文件系统是我们组织数据
在计算机领域组织数据
从始到终的一个方案
当然在最早期的这个计算机系统中
并没有文件系统的概念
他们会直接对数据的
这样一个原始的数据的
记录进行一个操作
但是今天大家能接触到的
这个数据整理的方法
都是以文件系统作为它的
一个底层的支撑
那么文件系统实际上提供到了
什么样的功能
使它成为今天我们去组织数据的
这样一个方案呢
它首先可以用一个
比较规则的办法
比如说文件的名
目录的名
来整理大规模的信息
能够对信息进行有效的分类的
进行比较规则化的一个组织
这是它的一个特征
第二
它能够被进程不断的去访问
不会因为某一个进程的访问
而使得数据产生变化或者丢失
它能够反复的被利用
这是他的第二个特征
第三
它在一些情况下
可以被并行的使用
尤其是在我们大数据的
这样一个处理的背景下
能够被不同的进程并行的使用
实际上是我们对数据组织
一个最基本的要求
那么文件系统它满足了
这样三个数据分析
或者是计算机对存储的一个要求
同时它还有一些其他的这个优势
比如说它把数据组织成了文件
是人理解数据
一个非常直观的方法
然后文件是一个
持久化的一个管理方式
那么使得我们的机器可以在停电
或者说长期不用的情况下
得到一定的保存
达到了数据持久化的
这样一个目标
那么在文件系统中
一个核心的概念
就是怎么样对数据进行命名
今天大家不管在计算机上
用到这个视频文件
或者说一些文档文件
实际上大家都会用一个文件名
去标识这样的一些文件
那么有了文件名
这样一个概念之后
实际上对于数据
我们就会有一个很好的一个查找
或者是索引的一个机制
这是我们进行文件系统的
一个设计的一个最开始的一个目的
在今天的操作系统当中
文件可以被操作系统中的进程进行创建
创建了之后呢
它可以被其他的进程读取
在一定的条件下
进程之间还可以在文件上
进行一些互斥的操作
使得关键的数据不会被误操作
不会被误写
这是和文件相关的
那么单机上的文件系统的组织
它大概有一些什么样的特征呢
那么今天我们来看的话
它内部的组织
大概有这样的一些特征
第一个就是说
它的byte
他会以一定的这个序列在SSD
或者是机械硬盘上进行存储
那么可以达到一个读取时
或者写入时比较高效的一个特性
那么同时它还可以
支持更加复杂的一些结构
假设我们不把数据写成一个序列的话
我们依然可以用树形的结构
或者更复杂的一些链表的结构
来进行数据的一个组织
文件系统完成了
这样的一个组织工作
给上层的操作提供了
数据的这种支撑
那么文件的访问呢
今天文件系统的访问
支撑了文件的顺序访问
比如说大家在写程序的时候
可以用fread来获取一段数据
这段数据会从机械硬盘
或者SSD的
这个存储单元里面读取出来
我们可以进行随机的读取文件系统
提供到了通过一个偏移量
来进行文件定位的一个功能
使得我们可以对文件系统中
某一段特定的数据
进行有效的读取
同时文件系统还对外围进行了一些扩展
除了最基本的数据的读
数据的写之外
他还给到了文件一些
其他的这种属性
比如说在linux的文件系统里面
可以有文件的类型
你可以通过一些命令来知道文件
到底是属于什么类型
怎么样打开
我们可以知道文件的大小
可以指导文件的一些权限
以及文件创建的一些信息
这都是在文件系统中
额外提供的一些属性
使得我们能够更加方便地
利用原始的这个计算机上的数据
今天的文件系统他大概会有一些
什么样的特征呢
一个典型的特征
就是它可以将整个硬盘中
你能够有的空间给利用起来
这是今天的文件系统
它能够支撑的这样一个功能
同时它可以虚拟化出
不同类型的文件系统
比如说可以支撑操作系统的
一个交换区域
来扩展操作系统的虚拟内存
这是今天的现代的操作系统
对文件系统的一个支撑
同时磁盘可以被划分成不同的这个分区
可以允许用户
对分区进行一个管理
那么提供了更加方便的
一个逻辑化的一个操作
那么这是今天大家在
使用自己的电脑
或者说一些服务器上
已经能够感知到的
那么下面
我们会简单的给大家介绍一下
从文件系统在单机上发展到今天
大概经历了怎么样的一些历程
他们怎么样去进行文件的
名字空间到底层的
一个数据结构的一个对应
那么文件被组织成了目录的结构
目录通常是一个
今天我们看来是一个树形结构
但是在最开始的发展的过程当中
实际上目录并不一定是树形的
他在最开始的这样一个历程里面
他被组织成了
一个表状的一个结构
也就是说每一个表里面的元素
实际上对应了磁盘中的某一段
那么用这样的结构
实际上也能够对数据进行整理
其实它并没有本质上太多的差别
那么我们可以查一个表
找到这个文件
然后对应到磁盘的
某一个物理位置和长度
把数据进行写入和读出
那么这是按照单一的
这种表的结构
进行文件的一个数据的allocation
它的一个过程
我们创建了这样一个单一层面的
这样一个数据结构
把从表的这样一个结构
演化到了单一层面的
这样一个数据
这个目录结构
那么在这样一个结构底下
它的一个特征
就是说
已经有了一个层次化的一个概念
虽然它是单层的
我们在里面可以非常简单的
进行文件的一个定位
因为我们只需要经过一次的查找
就能够定位到某一个文件
但它的一个缺点
就是说我们的命名
会变得非常的复杂
我们当需要区别
两个同名的文件的时候
我们就必须要
把这个名字进行一个延长
或者说进行一个前缀
来达到命名的一个区分
那么这样的系统
在历史上也存在过一段
那么接下来就开始进行了演化
演化出了多层的目录
也演化出了
更加类似于树型的目录
那么在多层的目录底下
通常在最开始
是把它组织成了用户的
这样一个结构
也就是说每个用户会拥有自己的
一个独立的根目录
那么每个根目录底下
会有自己的一些目录文件
那么这些文件对应到
磁盘的具体的位置
那么达到了一个简单的树形结构
双层的树形结构
那么它的好处
就是说我们可以对用户
进行一个数据的区分了
但它的缺点
就是说它的目录结构
依然比较简单
每个人只能拥有自己一层的文件
对用户进行了区分
但是对用户内部的一些功能
没有办法进行区分
树形的结构
最终被演化了出来
那么它把刚刚的双层目录
进一步拓展到了多层
每个用户
不但可以拥有自己的目录
那么这个目录底下
还可以拥有嵌套的
这种目录的结构
那么这也更加接近于
我们今天所使用的
单机上的文件系统的
这样一个样子
那么大家从这张图上
可以看得到
每个用户拥有了
自己不同功能的目录
每个目录可能会是一个直接
会是一个文件
对应到磁盘的某一段数据
也可能包含了
其他的这个逻辑结构
对应到下一层的目录
然后下一层可以继续
以这样的结构进行拓展
那么进一步往下发展之后
我们还允许了
在树形结构里面的
这种构造一个circle的
这样一个形态
也就是允许在树形结构里面
引入一些对数据的引用
比如说在这张图中
我们看到有两个文件
指向了同一段数据
那么在今天的windows和linux系统底下
允许的这样的结构的存在
它的好处就是说从逻辑上
更加简单的让用户可以灵活的
访问不同的数据
同时 它在底层的存储上又能够达到
只做一份拷贝的这样一个目标
那么已经是我们今天
现代操作系统的一个样子
-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
-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--作业
-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--作业
-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
-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--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-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--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业