多平台统一管理软件接口,如何实现多平台统一管理软件接口
696
2022-11-04
分布式文件系统GFS、HDFS的比较
一、概论
HDFS(Hadoop分布式文件系统)是根据GFS(Google文件系统)的原理开发的,是GFS的简化版。
前面提到,对于如何处理大数据,计算机科学界有两大方向:一是集中式计算,二是分布式计算。
过去,分布式计算理论比较复杂,技术实现比较困难,因此集中式计算一直是主流解决方案。但2003年到2004年间,Google发表了MapReduce、GFS和BigTable三篇技术论文,提出了一套全新的分布式计算理论。这套理论相比于传统的分布式计算模型有三大优势:
1)它简化了传统的分布式计算理论,降低了技术实现的难度,可以进行实际的应用。 2)它可以应用在廉价的计算设备上,只需增加计算设备的数量就可以提升整体的计算能力,应用成本十分低廉。 3)它被Google应用在Google的计算中心,取得了很好的效果,有了实际应用的证明。
于是,各家互联网公司开始利用Google的分布式计算模型搭建自己的分布式计算系统,Google的这三篇论文成为了大数据时代的技术核心。由于Google没有开源具体的技术实现,所以其他互联网公司只能根据这三篇技术论文中的相关原理,搭建自己的分布式计算系统。例如,Hadoop采用了MapReduce打造了分布式计算框架,并根据GFS开发了HDFS分布式文件系统,根据BigTable开发了HBase数据存储系统。
其中,HDFS虽然和GFS原理相同,但运算速度上达不到Google论文中的标准,并且在并发写的处理上,采用了一些简化的做法。尽管如此, HDFS 算是开源分布式文件系统中最完整实现了 GFS 论文中的概念模型。Hadoop也由于其开源特性,使得它成为分布式计算系统事实上的国际标准。
二、GFS与HDFS的异同
具体而言,GFS与HDFS的
共同点:
1、都采用单一主控机+多台工作机的模式,由一台主控机(Master)存储系统全部元数据,并实现数据的分布、复制、备份决策,主控机还实现了元数据的checkpoint和操作日志记录及回放功能。工作机存储数据,并根据主控机的指令进行数据存储、数据迁移和数据计算等。
2、都通过数据分块和复制(多副本,一般是3)来提供更高的可靠性和更高的性能。当其中一个副本不可用时,系统都提供副本自动复制功能。同时,针对数据读多于写的特点,读服务被分配到多个副本所在机器,提供了系统的整体性能。
3、都提供了一个树结构的文件系统,实现了类似与Linux下的文件复制、改名、移动、创建、删除操作以及简单的权限管理等。
不同点:
1、GFS支持多客户端并发Append模型,允许文件被多次或者多个客户端同时打开以追加数据;HDFS文件只允许一次打开并追加数据,客户端先把所有数据写入本地的临时文件中,等到数据量达到一个块的大小(通常为64MB),再一次性写入HDFS文件。
2、GFS采用主从模式备份Master的系统元数据,当主Master失效时,可以通过分布式选举备机接替,继续对外提供服务;而HDFS的Master的持久化数据只写入到本机,可能采用磁盘镜像作为预防,出现故障时需要人工介入
3、GFS支持数据库快照,而HDFS不支持
4、GFS写入数据时,是实时写入到物理块;而HDFS是积攒到一定量,才持久化到磁盘。
三、GFS
1)认为组件失效是一种常态,提供了容错机制,自动负载均衡,使得分布式文件系统可以在廉价机器上运行 2)面向大文件存储,系统主要的工作负载是大规模的流式读取,写操作主要是追加方式写,很少有随机写 3)一次写入,多次读取,例如互联网上的网页存储
1、结构
【主服务器Master】 管理所有元数据;租约管理;集群块迁移;无用块回收等。
元数据主要有三类:命名空间、文件和块的映射关系(一个文件包含哪些块)、每个块副本的位置信息。
前两类元数据会以操作日志文件存储在本地磁盘上,并复制到远程Master备机上,容灾需要。块副本的位置信息为Master通过心跳向各个ChunkServer轮询获得,无需持久化,避免了ChunkServer变更时的Master和ChunkServer的数据同步问题。
【块服务器chunkserver】 数据存储节点,文件被分割为固定大小的块(Chunk),每个块被唯一标识,默认情况下,每个块有3个副本。
【客户端】 与 Master节点的通信只获取元数据,所有的数据操作都直接和 Chunk 服务器进行交互;GFS提供了一套类似传统文件系统的 API 接口,客户端以库的形式被链接到客户程序里,并非一个独立的系统。
2、读取
客户端将服务所要读取的文件名与byte offset,根据系统chunk大小,换算成文件的chunk index,即文件数据所处的第几个chunk。将filename与chunk index传给master。
Master返回给client元数据信息(包含chunk handle与实际存储的chunkserver location)。
client获取到该信息,直接对chunkserver发出读请求。对于三副本而言(一份chunk存储在三台不同的chunkserver),client选择离自己最近的chunkserver(网络?),通过之前获取的元数据信息找到需要读的chunk位置以及下一个chunk位置。如果缓存的元数据信息已过期,则需要重新向master去获取一遍。
Chunkserver返回给client要读的数据信息。
3、写入
客户端请求 Master, 询问chunkserver的位置。
Master 返回主chunkserver和次chunkserver的位置信息。
客户端选择最优的网络顺序推送数据到这些chunkserver。
一旦所有的chunkserver确认收到了数据,客户端将发送一个写请求控制命令到主chunkserver。
由主chunkserver分配连续的序列号来确定最终的写入顺序,然后转发写请求到所有次chunkserver
次chunkserver按顺序执行写入操作
次chunkserver写完后向主chunkserver应答确认操作完成。
最后主chunkserver应答客户端,若任意chunkserver写入过程中出现错误,将报告给客户端,由客户端发起重试。
4、容错 无论Master和Chunk Server都有容错机制。容错机制就是维持副本。
四、HDFS
【HDFS特点】 高容错性、可构建在廉价机器上 适合批处理 适合大数据处理 流式文件访问
【HDFS局限】
不支持低延迟访问
不适合小文件存储
不支持并发写入
不支持修改
1、结构
HDFS具有主/从架构。HDFS集群由单个NameNode,和多个datanode构成。
【NameNode】即Master:
管理 HDFS 的名称空间。
管理数据块(Block)映射信息
配置副本策略
处理客户端读写请求。
【DataNode】就是Slave。NameNode 下达命令,DataNode 执行实际的操作。 存储实际的数据块。 执行数据块的读/写操作。
【Secondary NameNode】:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。 辅助 NameNode,分担其工作量。 定期合并 fsimage和fsedits,并推送给NameNode。 在紧急情况下,可辅助恢复 NameNode。
【客户端】 提供一些命令来管理、访问 HDFS,比如启动或者关闭HDFS。 与 DataNode 交互,读取或者写入数据;读取时,要与 NameNode 交互,获取文件的位置信息;写入 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
2、读取 1)客户端跟NameNode通信,找到文件块所在的DataNode列表。
2)根据列表,按就近原则(或随机?)挑选一台DataNod,读取每一块。
3)每个DataNode从磁盘读取,返回数据
4)客户端接收后,合成最终需要的文件返回
3、写入 1)客户端跟NameNode通信请求上传文件,NameNode检查目标文件是否存在,父目录是否存在
2)NameNode返回是否可以上传
3)客户端会先对文件进行切分成块。然后向NameNode请求第一个块该传输到哪些DataNode。
4)NameNode返回DataNode列表。
5)客户端请求一个DataNode上传数据,第一个DataNode收到请求会继续调用第二个DataNode,然后第二个调用第三个DataNode,将整个pipeline建立完成,逐级返回客户端。
6)客户端开始向第一个DataNode传输块,第一个DataNode接收的同时传给第二台,第二台传给第三台
7)当一个块传输完成时,客户端再次请求NameNode上传第二个块,以此类推。
4、容错(1)故障检测
1、节点故障
DataNode主动向NameNode发送心跳消息。
2、网络故障
应答信号3、数据损坏
DataNode定期发送报告信息给NameNode,报告前先校验,异常不发送有问题的数据块信息,NameNode对照可以知晓情况。
(2)故障处理
1、读写故障处理
1)读取故障
如果一个DataNode出问题,会试图找另一个(应该是备份节点吧)
2)写入故障
检测应答信号,无则跳过2、DataNode故障处理
NameNode维护两张表:数据块表和DataNode表,定期检测,发现有损坏的会发指令让DataNode进行拷贝或备份。
5、副本
副本指DataNode的副本。副本尽量放在不同的机架。
五、总结
由于分布式文件系统存储文件时都切割成块,因此特别擅长处理巨大的文件。除此而外,有 高性能:可并行读取、写入 高可用:主从机制 良好的伸缩性:架构支持 等特点
参考文章:GFS、HDFS等分布式文件系统对比介绍分布式文件系统比较出名的有HDFS 和 GFSGFS浅析HDFS
翻译经典 HDFS 原理讲解漫画 之一----系统构成和写数据过程
翻译经典 HDFS 原理讲解漫画 之二----读数据和容错
翻译经典 HDFS 原理讲解漫画 之三—容错和副本布局策略
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~