当前课程知识点:大数据系统基础 > 3.文件存储 > 授课视频 > Video
那么这一节呢
我们将讨论文件系统
其他方面的一些特性
那么这也是在文件系统设计
或者是在文件系统分析的时候
非常重要的一些概念
那么从前面的文件系统
解析的过程当中来看
这个解析过程
其实是比较复杂的一个
递归的一个过程
那么在文件系统里面
有一个非常重要的一个概念
就是关于磁盘块大小的一个讨论
那么我们看到
在物理磁盘上面
它最小的读写的单元
是512个字节
那么这是由于
它的磁盘的物理特性
它所决定的
那么对于文件系统来说
它一般会选择
一个更大的一个磁盘块
那么一般会比如说
大家经常会使用的
一个磁盘块的大小是4个KB
那么我们可以看一下
这个对于
选512字节大小的磁盘块好呢
还是4个KB的磁盘块好呢
或者甚至是更大
比如说一个MB的磁盘块会好
首先我们可以看到
因为是按照块进行读写的
所以一个文件
会起码占用一个块的一个空间
那即使这个文件只有一个B
那么如果按照4个KB来说的话
那么它起码要占上4个KB
在一个磁盘空间
那这个磁盘空间
就不能被其他文件所使用了
那么剩下的那些
在4个KB里面其他的
上面的内容就被浪费了
那么可以这么说
就是说我在选择的磁盘块越小
那么我浪费的空间会越少
那么这个是比较显而易见的
那么自然而然的
如果我选择的块越大
那么我所浪费的空间就会越大
那么这是对于
磁盘块对于浪费空间的一个关系
但是从另外一个角度讲
从这个磁盘文件系统它本身
所管理的一个数据的复杂性来讲
那比如说
如果我们拿到更小的块
去存储这个数据
那么显而易见
我每一个磁盘块
我也需要一定的元素去描述它
所以我需要从更多的元素
在文件系统里面
我管理的磁盘块会更多
所以我管理会更加复杂一点
然后对于一个大的文件来说
比如说这个大的文件
一般视频文件
比如说是1个GB的
如果我按照512个字节去分的话
我会分成很多很多块
那么分成那么多块的话
所以更加有可能
把每一个块都放到
磁盘的不同的位置
这样放的话
会很容易降低
这个磁片的一个性能
因为大家可以想象
这个磁头会在横向
不断地一个移动
但是如果按照1MB的大小
去切分的话
那第一个
我管理的一个数据
它的所需要管理的磁盘块的数目
就会变得非常少
那么1MB到1GB
只要管一千多块就行了
第一个
第二个呢
我在磁道上面
我更容易把1M的数据
就放到一个磁道上面
这样的话
我会减少我磁头再横向地移动
减少随机的一个读写
这样的话能够提高性能
所以总的来看的话
你选择更小的一个磁盘块
你会浪费空间更少一点
但是呢
我的性能可能会差一些
那么选择更大的磁盘块的话
性能会好一点
那特别是对于大文件来说
但是我需要管理的磁盘块
会更多一点
这样的话也会造成一个影响
所以磁盘块的大小的一个选择
那实际上是需要跟应用程序
它本身的一个特点
或者是你存的文件
它的本身的一个特点
需要联系在一起的
那第一个方面的一个讨论
那么第二个呢
我们再看一下文件系统
一般会需要做一些缓存
因为我们知道
这个内存的一个速度
那么要比磁盘的速度
要高两到三个数量级
在这种情况下
我们会需要说我用一个数据
比如说我这一块数据
那么在特定的时间之内
会长期地不断地去访问这块数据
那么访问了之后
比如说在很短的时间内
又得访问这块数据
那在这个时候呢
我没有必要说
每次都从磁盘里面
把这个数据装到内存里面
而只是只需要把这个数据
缓冲到内存里面就行了
这样的话
能够通过缓存的方法
大大提高数据读写的能力
那么所以呢
在当代的文件系统设计当中
缓存是一个非常重要的一个概念
那么我能够得到缓存的好处的话
那么就需要让这个数据的访问
具有时间局部性
或者是空间局部性
那么时间局部性的意思就是
我一个数据
在某一个时间访问了之后
在不久的将来
马上就会对它进行访问
另外空间局部性就是
我一个数据
它附近的数据
也有可能会被访问到
那么它附近数据会访问到的话
我可以把它们的数据
一起装入到内存里面去
这样的话
我可以在预期
很快就能访问到附近的那个数据
这样的话
我会减少磁盘读写的一个次数
并且磁盘读写的话
整块的读写要比随机的读写要
按照字节
或者小部分的数据读写
要快得多
所以呢
文件系统的缓存
就是需要有一个时间局部性
和空间局部性的一个考虑
那么后面我们在
分布式文件系统当中的时候
我们也会看一下
在分布式文件系统当中
这个问题是怎么考虑的
好
那么对于文件系统的一个优化
那么特别是对本地文件系统
磁盘文件系统的一个优化
一个非常重要的概念
就是需要对于磁盘的读写
进行优化
那么磁盘其实是一个
机械的一个结构
那么我在读一块数据的时候
它们大概需要经过这么几个过程
第一个呢
我需要知道这个磁盘
这个数据处于哪几个盘片里面
那么一般一块磁盘的话
里面会有两到三个盘片
我先确定一个盘片
然后再确定一个
它是属于
这个盘片的上面的哪一面
那么上面 还是下面
然后我再确定
它处于哪一个磁道
那么这里面的磁道
我可以标记为0
最外面的话
会有一个很大的数据
然后我的机械图
会在磁道上面移动
那移动完了之后
我才能去说
确定说我这个磁盘转到什么位置
我该进行读写
所以呢
如果你这个磁头频繁地在横向
或者在不同的磁道之间进行移动
在这种情况下面的话
你会
显然你在同一个磁道里面
读1M的一个数据
和你在不同的磁道里面读数据
它的性能是不一样的
比如说在左边
那么我只需要顺着读过来
就可以把数据读过来了
那么在右边的话
我现在在内部的磁道读一块数据
再往外再读一块数据
再往外再读一块数据
这样的话
会影响磁道的一个移动
这样的话也会影响
这个磁盘的一个读写的一个效率
所以在磁盘系统的优化当中
有这样重要的一个概念
就是说尽量让我这个磁盘
能够进行顺序的读写
而不是进行随机的读写
有几个数字大家可以记一下
比如说顺序的读写的话
它能够达到的带宽
大概是在100MB以上
那么有一些磁盘
甚至可以达到
将近会有200MB的一个
比如说快速的磁盘
但随机读写的话
能够达到1MB的一个带宽的读写
就已经很不错了
所以在磁盘系统优化里面
这是一个非常重要的一个内容
那么这个是关于文件系统
一些比较重要概念的一个讨论
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7