前言:Google大数据处理的3篇核心论文
《The Google File System》:http://research.google.com/archive/gfs.html
《MapReduce: Simplified Data Processing on Large Clusters 》:http://research.google.com/archive/mapreduce.html
《Bigtable: A Distributed Storage System for Structured Data》:http://research.google.com/archive/bigtable.html
GFS(Google文件系统)作为一个分布式文件系统,为Google提供基础的海量数据存储服务。虽然GFS并没有开源,但Google在其04年发表的论文《The Google File System》里面做了详细的介绍,很多设计思路都很有学习的价值。由于论文很长,这里对这篇论文做个学习笔记,总结一下。
-----------------------------------------------------------------------------------------------------------------------------------
一、简介
重新审视传统文件系统在设计上的折忠选择,衍生了GFS不同的设计思路:
*、组件/机器失效是常态,而不是意外事件(容错性)
*、处理的文件巨大(大数据)
*、绝大多数文件写操作都是尾部追加数据,而不是随机写(读写模型)
*、应用程序和文件系统API协同设计,简化对GFS的要求(灵活性)
二、设计概述
1、架构:
* GFS Master(即NameNode):单独节点,管理GFS所有元数据(如名字空间、访问控制权限等)
* GFS ChunkServer(即DataNode):数据存储节点,文件被分割为固定大小的Chunk,每个Chunk被唯一标识,默认情况下,Chunk存储为3个副本。
* GFS Client:实现GFS的API接口函数(不是POSIX标准,因为API只需在用户空间调用)
2、单一的Master节点
* 单一的Master简化了设计,使架构能变得简单
* 缺点是有可能成为系统瓶颈,故需减少对Master的读写 => Client只询问Master相关文件的元数据信息,后面的具体读写操作均在ChunkServer上
* Master一般会返回离Client最近的文件副本(减少网络IO)
3、Chunk的大小选择
* 是一个关键的设计参数,默认为64MB。每个Chunk都以普通Linux