当前课程知识点:大数据系统基础 > 3.文件存储 > 授课视频 > Video
从这一节开始呢
我们将讨论一个非常典型的
一个文件系统
叫做Google文件系统
那么这个Google文件系统
跟前面的AFS文件系统
完全不一样
那么我们从前面讨论的过程
大家也可以看到
不管是NFS还是AFS
那么它的一个文件
只能放在一个服务器上面
那如果文件太大
比如说
超过一个本地文件系统的
存储容量的话
它是无能为力的
因为需要把文件进行切分
放到不同的一个位置
需要做很多额外的工作
那这样的一个额外的工作
那恰恰是Google文件系统
它所能够提供的
那么我们后面可以看到
Google文件系统在这上面
它是怎么去做这件事情
那么首先第一个问题是
我们需要回答一下
为什么需要一个不同的一个
分布式文件系统
让Google这个公司去用
那么所有的事情
其实都是由应用驱动的
那么我们看一下
在Google的最大的应用
其实就是它的搜索引擎
那么我需要建立一个
新的一个分布式的一个文件系统
去为它的搜索引擎去服务
那么既然为搜索引擎去服务的话
我们去看一下搜索引擎
需要做一些什么样的工作
那么第一个呢
是为了建立搜索引擎
需要存储互联网容量的一个数据
那么我在做搜索引擎的时候
我第一步需要做的工作
是在互联网上去采集数据
那采集数据的话
我要把几乎整个互联网的数据
都要保存到本地
这样的话
我这个存储系统
就需要非常大的一个容量
那么单台机器是肯定不能
做这件事情的
是需要联合很多台机器
去做这个事情
那么第二个呢
我在存数据的时候
我必须要很快速地把这个数据
写到存储系统当中去
那么我在互联网上的话
我要下载数据
我不可能是让一台机器
去做这个工作
那么我肯定是有成千上百台机器
去做工作
那么成千上百台机器
需要同时地往这个文件系统里
写数据
那这就需要文件系统
支持数据快速地写入到
分布式文件系统当中去
当然Google它不光需要存数据
它还需要对数据进行查询
那么在查询之前呢
它需要对数据大量地进行处理
进行到台的索引
那么到台的索引
简单地说
它就是帮助用户把所有的查询
先给你做完了
那么之后呢
只需要把已经查询完的结果
交给用户就行了
那么这是到台索引的工作
那么到台索引
也需要对前面已经下载到本地
分布式文件系统里面的
所有的数据进行扫描
进行索引的一个重建
这个时候就需要对整个数据
进行快速的一个处理
那么在搜索引擎里面
也需要对于网页数据进行排序
因为比如说任意一个检索是
比如说清华大学
那么返回到页面
包含清华大学这四个字的页面
会非常非常的多
那么我希望一些重要的页面
返回给我
那些次要的页面
就不要返回给我了
那么这需要一个
数据排序的一个工作
需要对网页进行排序
那么需要对网页进行排序的话
那么底层文件系统
必须要能够支持这一点
让这个数据可以进行快速地访问
这样才能够达到
快速网页排序的一个功能
所以这个是Google文件系统
它需要建立的一个需求
那我们看一下
在这个Google文件系统里面
一些具体的一个需求
那么同样地
我们在Google里面的话
我的文件系统
也是需要有一个基础
那么这个基础是什么东西呢
那么就是一个
很大规模的一个集群
那么这个规模的一个集群的话
一般来说是采用x86的一个集群
那么这些集群的话
都是在市面上都是可以买到的
那么这些集群有一些特点
第一个最大的特点
它的规模会非常非常的一个大
那么可能有一排集群
可能一个集群包含了数千个结点
比如说3000个 4000个
甚至5000个结点
那么这些结点会通过一些
商用的网络
比如说我们平常用的以太网
把它们连在一起 对吧
那么在这个时候呢
商用的一个服务器有一个特点
它在绝大多数情况下
它会工作得很好
但是因为我数量实在太多了
那么会每时每刻
有可能会有一些
一台 或者是几台
或者是可能是上十台个模块
可能会出错
这是服务器的一个特点
那么因为我规模大了
那么在维护的时候
也有可能会出错
我非常有可能比如说把一个机架
机器掉电了
那么几十台服务器
马上就会下线
在这个时候呢
现有的文件系统
是没有办法满足要求的
那在这个时候
我的文件系统需要做
整个硬件会做出错的一个处理
这是对于文件系统
提出了一个容错的要求
那么另外一个我们前面也说过了
在Google文件系统里面
有很多超大规模的一个文件
它有可能会超过
一个本地文件系统的一个容量
那么文件大小会超过数百个GB
这可能还算小的
可能会有一个TB的一个文件
在这种情况下
或者是10个TB
那么单台机器有可能存不上
另外一个是
单台机器你要存这么多数据的话
它的性能可能也会受不了
那么在这种情况下面的话
我也需要做大文件的一些处理
在读写的优化上面的话
我们也可以看到
在Google里面的话
搜索引擎的模块里面的读写模式
大量地是写入一次
多次读取的一个特征
那这种特征的话
对文件系统也会提出一些
特殊的一些要求
那么写入也是要并发的
读取也是要并发的
那么这也是对文件系统
提出的一些要求
那么在Google文件系统里面
最大的应用是需要对
文件进行建索引的一个操作
那建索引操作的话
它对底层文件系统
它可以容忍底层文件系统
高的一个延迟
就是说我发出一个操作
那么你可能会过个1秒钟
给我一个反应
这个是没有问题的
那么本地文件系统
可能是在几个毫秒之内
就可以做出反应
把数据存进去
但是分布式文件系统
它因为有网络的参与的话
高延迟
有可能是不可避免的
那么 但是呢
我可以容忍高延迟
但是你不能在持续地带宽上面
给我做限制
我需要一个
很长时间的一个高带宽的操作
因为我要对所有数据
进行扫描工作
这样的话也对上层的文件系统
提出了一个需求
所以呢
上层的应用对于
Google文件系统的话
会提出这样的一个需求
我们需要看一下
在这种的基本的需求条件下面
我们如何去设计
一个分布式文件系统
去满足这样的一个需求
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-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