2023年6月29日发(作者:)
架构⽅案(16)常见分布式⽂件存储介绍、选型⽐较、以及架构设计数据正成为世界上最有价值的资源,分布式⽂件存储是应对数据爆炸的最好解决⽅案,那就会涉及到分布式⽂件存储⽅案、选型、架构设计等。分布式⽂件存储的来源在这个数据爆炸的时代,产⽣的数据量不断地在攀升,从GB,TB,PB,ZB.挖掘其中数据的价值也是企业在不断地追求的终极⽬标。但是要想对海量的数据进⾏挖掘,⾸先要考虑的就是海量数据的存储问题,⽐如Tb量级的数据。谈到数据的存储,则不得不说的是磁盘的数据读写速度问题。早在上个世纪90年代初期,普通硬盘的可以存储的容量⼤概是1G左右,硬盘的读取速度⼤概为4.4MB/s.读取⼀张硬盘⼤概需要5分钟时间,但是如今硬盘的容量都在1TB左右了,相⽐扩展了近千倍。但是硬盘的读取速度⼤概是100MB/s。读完⼀个硬盘所需要的时间⼤概是2.5个⼩时。所以如果是基于TB级别的数据进⾏分析的话,光硬盘读取完数据都要好⼏天了,更谈不上计算分析了。那么该如何处理⼤数据的存储,计算分析呢?这就会涉及到如下的分布式⽂件存储。常见的分布式⽂件系统GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各⾃适⽤于不同的领域。它们都不是系统级的分布式⽂件系统,⽽是应⽤级的分布式⽂件存 储服务。分布式⽂件存储选型⽐较知名开源分布式⽂件存储(Google File System)Google公司为了满⾜本公司需求⽽开发的基于Linux的专有分布式⽂件系统。尽管Google公布了该系统的⼀些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。doop 实现了⼀个分布式⽂件系统(Hadoop Distributed File System),简称HDFS。 Hadoop是Apache Lucene创始⼈DougCutting开发的使⽤⼴泛的⽂本搜索库。它起源于Apache Nutch,后者是⼀个开源的⽹络搜索引擎,本⾝也是Luene项⽬的⼀部分。Aapche Hadoop架构是MapReduce算法的⼀种开源应⽤,是Google开创其帝国的重要基⽯。(Taobao FileSystem)是⼀个⾼可扩展、⾼可⽤、⾼性能、⾯向互联⽹服务的分布式⽂件系统,主要针对海量的⾮结构化数据,它构筑在普通的Linux机器 集群上,可为外部提供⾼可靠和⾼并发的存储访问。TFS为淘宝提供海量⼩⽂件存储,通常⽂件⼤⼩不超过1M,满⾜了淘宝对⼩⽂件存储的需求,被⼴泛地应⽤ 在淘宝各项应⽤中。它采⽤了HA架构和平滑扩容,保证了整个⽂件系统的可⽤性和扩展性。同时扁平化的数据组织结构,可将⽂件名映射到⽂件的物理地址,简化 了⽂件的访问流程,⼀定程度上为TFS提供了良好的读写性能。Google学术论⽂,这是众多分布式⽂件系统的起源,HDFS和TFS都是参考Google的GFS设计出来的。典型的分布式⽂件存储的架构设计我以hadoop的HDFS为例,毕竟开源的分布式⽂件存储使⽤的最多。Hadoop分布式⽂件系统(HDFS)被设计成适合运⾏在通⽤硬件(commodity hardware)上的分布式⽂件系统。HDFS是⼀个⾼度容错性的系统,适合部署在廉价的机器上。HDFS能提供⾼吞吐量的数据访问,⾮常适合⼤规模数据集上的应⽤。HDFS放宽了⼀部分POSIX约束,来实现流式读取⽂件系统数据的⽬的。⼤规模数据集运⾏在HDFS上的应⽤具有很⼤的数据集。HDFS上的⼀个典型⽂件⼤⼩⼀般都在G字节⾄T字节。因此,HDFS被调节以⽀持⼤⽂件存储。它应该能提供整体上⾼的数据传输带宽,能在⼀个集群⾥扩展到数百个节点。⼀个单⼀的HDFS实例应该能⽀撑数以千万计的⽂件。简单的⼀致性模型HDFS应⽤需要⼀个“⼀次写⼊多次读取”的⽂件访问模型。⼀个⽂件经过创建、写⼊和关闭之后就不需要改变。这⼀假设简化了数据⼀致性问题,并且使⾼吞吐量的数据访问成为可能。Map/Reduce应⽤或者⽹络爬⾍应⽤都⾮常适合这个模型。⽬前还有计划在将来扩充这个模型,使之⽀持⽂件的附加写操作。异构软硬件平台间的可移植性HDFS在设计的时候就考虑到平台的可移植性。这种特性⽅便了HDFS作为⼤规模数据应⽤平台的推⼴。Namenode 和 DatanodeHDFS采⽤master/slave架构。⼀个HDFS集群是由⼀个Namenode和⼀定数⽬的Datanodes组成。Namenode是⼀个中⼼服务器,负责管理⽂件系统的名字空间(namespace)以及客户端对⽂件的访问。集群中的Datanode⼀般是⼀个节点⼀个,负责管理它所在节点上的存储。HDFS暴露了⽂件系统的名字空间,⽤户能够以⽂件的形式在上⾯存储数据。从内部看,⼀个⽂件其实被分成⼀个或多个数据块,这些块存储在⼀组Datanode上。Namenode执⾏⽂件系统的名字空间操作,⽐如打开、关闭、重命名⽂件或⽬录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理⽂件系统客户端的读写请求。在Namenode的统⼀调度下进⾏数据块的创建、删除和复制。Namenode和Datanode被设计成可以在普通的商⽤机器上运⾏。这些机器⼀般运⾏着GNU/Linux操作系统(OS)。HDFS采⽤Java语⾔开发,因此任何⽀持Java的机器都可以部署Namenode或Datanode。由于采⽤了可移植性极强的Java语⾔,使得HDFS可以部署到多种类型的机器上。⼀个典型的部署场景是⼀台机器上只运⾏⼀个Namenode实例,⽽集群中的其它机器分别运⾏⼀个Datanode实例。这种架构并不排斥在⼀台机器上运⾏多个Datanode,只不过这样的情况⽐较少见。分布式存储的未来随着现代社会从⼯业时代过渡到信息时代,信息技术的发展以及⼈类⽣活的智能化带来数据的爆炸性增长,数据正成为世界上最有价值的资源。根据物理存储形态,数据存储可分为集中式存储与分布式存储两种。集中式存储以传统存储阵列(传统存储)为主,分布式存储(云存储)以软件定义存储为主。传统存储⼀向以可靠性⾼、稳定性好,功能丰富⽽著称,但与此同时,传统存储也暴露出横向扩展性差、价格昂贵、数据连通困难等不⾜,容易形成数据孤岛,导致数据中⼼管理和维护成本居⾼不下。分布式存储:将数据分散存储在⽹络上的多台独⽴设备上,⼀般采⽤标准x86服务器和⽹络互联,并在其上运⾏相关存储软件,系统对外作为⼀个整体提供存储服务。。总之,分布式⽂件存储,不仅提⾼了存储空间的利⽤率,还实现了弹性扩展,降低了运营成本,避免了资源浪费,更适合未来的数据爆炸时代场景。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687986918a64100.html
评论列表(0条)