面对企业级数据量,单机容量太小,无奈存储海量的数据,这时候就须要用到多台机器存储,并对立治理散布在集群上的文件,这样就造成了分布式文件系统。HDFS是Hadoop下的分布式文件系统技术,Ceph是能解决海量非结构化数据存储的对象存储技术,本文将对他们的架构原理、个性和优缺点做介绍。
— 分布式文件系统HDFS —
HDFS全称为Hadoop Distributed File System,在2006年由Doug Cutting公布了第一个版本,是运行在通用硬件上的分布式文件系统。它提供了一个高度容错性和高吞吐量的海量数据存储解决方案。HDFS的推出给过后的行业提供了一个低成本、高可扩大的数据存储计划,尤其实用于互联网行业的海量用户拜访日志的存储和检索需要,因而一经推出就受到了互联网行业的欢送,以Yahoo为代表的互联网企业疾速构建了基于HDFS的企业数仓,从而减速了Hadoop在互联网行业内的疾速落地(起初这个Yahoo团队独立进去创建了Hortonworks)。尔后通过3~4年的疾速倒退,海内的大型企业都开始拥抱HDFS,各种新型利用场景开始呈现并发明了较大的业务价值。从2009年开始,国内的Hadoop利用开始呈现,并最早在运营商和互联网行业落地。作为Hadoop体系的最胜利的我的项目,HDFS曾经在各种大型在线服务和数据存储系统中失去广泛应用,曾经成为私有化部署畛域海量数据存储的施行规范。
HDFS通过一个高效的分布式算法,将数据的拜访和存储散布在大量服务器之中,在牢靠地多备份存储的同时还能将拜访散布在集群中的各个服务器之上。在构架设计上,NameNode治理元数据,包含文件目录树,文件->块映射,块->数据服务器映射表等。DataNode负责存储数据、以及响应数据读写申请;客户端与NameNode交互进行文件创建/删除/寻址等操作,之后间接与DataNode交互进行文件I/O。
HDFS通过正本机制保证数据的存储平安与高牢靠,默认如上图所示配置为3正本,每个数据块散布在不同的服务器之上。在用户拜访时,HDFS将会计算应用网络最近的和访问量最小的服务器给用户提供拜访。HDFS反对文件的创立、删除、读取与追加,对于一个较大的文件,HDFS将文件的不同局部寄存于不同服务器之上。在拜访大型文件时,零碎能够并行从服务器阵列中的多个服务器并行读入,减少了大文件读入的拜访带宽。通过以上实现,HDFS通过分布式计算的算法,将数据拜访均摊到服务器阵列中的每个服务器的多个数据拷贝之上,单个硬盘或服务器的吞吐量限度都能够冲破,提供了极高的数据吞吐量。
HDFS将文件的数据块调配信息寄存在NameNode服务器之上,文件数据块的信息散布地寄存在DataNode服务器上。当整个零碎容量须要裁减时,只须要减少DataNode的数量,HDFS后续通过balance算法将数据块搬迁到新的DataNode实例中。通过以上实现,HDFS能够做到在不进行服务的状况下横向扩容和数据从新散布。HDFS文件系统假如系统故障(服务器、网络、存储故障等)是常态,并通过多方面措施来保证数据的可靠性。数据在写入时被复制多份,能够通过用户自定义的复制策略散布到物理地位不同的服务器上;数据在读写时将主动进行数据的校验,一旦发现数据校验谬误将从新进行复制。
受限于过后的需要背景和硬件能力程度,HDFS也有一些显著的架构问题,随着技术和需要的演进而逐步成为瓶颈。通过NameNode来治理元数据有它的架构问题,首先是服务高可用问题,在Hadoop 1.0时代这是最大的架构问题,不过在2013年Hadoop 2.0中通过Master-Slave的形式得以解决;另外每个存储的文件都必须在NameNode的内存中保护一个描述符从而占据内存空间,当文件数据量太大时就会受限于单个NameNode的内存资源从而导致性能瓶颈(个别单个集群文件数量在亿级别以上时),社区在2017年推出的Hadoop 2.9版本提供HDFS Router Federation性能,通过不同的NameService解决挂载在HDFS上不同目录下的文件的形式来缓解这个问题。
存储老本问题对于大型HDFS集群是个更大的问题,HDFS的三正本策略保障了性能和存储老本的平衡,适宜于热数据和温数据的存储和解决,对于冷数据存储来说老本就偏高,尤其与对象存储类的解决方案相比。开源社区直到2019年Hadoop 3.0里才推出了Erasure Code技术(星环科技在2014年推出HDFS EC技术),但因为推出工夫较晚和技术成熟度等起因,目前并没有大规模落地。与云计算的存储技术交融是另外一个重要的架构问题,私有云有成熟的云存储计划,绝对HDFS老本更低,与云平台的调度零碎协调的更好,而HDFS只能定位作为云上的企业存储的一个细分计划之一。如各个云平台都推出EMR(Elastic MapReduce)类产品,如Google Dataproc,阿里云EMR等,但总体受欢迎度比拟个别,短少与云上其余数据分析与解决零碎的全方位的买通和互联。
从2012年开始,国内重点行业的中大型企业都曾经开始了大数据的布局,到2019年像金融、运营商、能源、政府公安等重要行业大部分企业都曾经构建了基于HDFS的数据存储系统,推动了一批重点的数字化利用的推广。如金融行业的ODS、历史数据存储、数据湖、科技监管类利用,运营商的经分系统、电子围栏、数字营销零碎等,都曾经是宽泛应用的业务零碎。因为国内外行业需要的差异性以及对私有云的接受程度不同,HDFS在国内依然是一个十分重要的数据存储技术,也领有更好的技术和利用生态,因而有着更为欠缺的技术生命力。
— 对象存储Ceph —
对象存储的设计指标是为了解决海量非结构化数据的存储问题,如邮件、图谱、视频、音频以及其余多媒体文件,并在社交、挪动等利用中大量被应用,此外也大量被用于数据备份和灾备场景。
在业务开发层个别提供基于S3协定的开发接口,这套API提供了一整套的RESTful API,能够让利用能够通过HTTP PUT或GET命令来操作数据对象,每个对象有个本人的拜访地址。与HDFS等文件类存储采纳目录构造或多层级树形构造不同,对象存储在物理存储上个别采纳一个扁平的数据存储构造,每个对象都是一个包含元数据、数据和惟一标识ID的齐备数据形容,这样利用能够十分不便的去找到并拜访这个数据对象,在存储的治理上也绝对比较简单,尤其是大部分利用场景下数据对象都存储在远端的云服务器上。对象存储管理软件会将所有的硬盘资源形象为一个存储池,用于数据的物理化存储。绝对于文件类存储,对象存储相对来说老本更低,但绝对数据分析的性能不佳,须要配套各种剖析的缓存技术来能提供比拟好的数据分析性能。
Ceph是一个开源的对象存储我的项目,诞生于2004年,提供对象、块和文件存储,其中对象存储性能在业内十分受欢迎,在国内曾经有很多私有化云平台的对象存储生产落地案例。一个Ceph的存储集群个别包含三个局部:
Ceph存储集群服务端:在Ceph存储集群服务端架构中外围组件有Monitor服务、OSD(Object Storage Daemons)服务和Manager服务等。其中Mon服务用于保护存储系统的硬件逻辑关系,次要是服务器和硬盘等在线信息。Mon服务通过集群的形式保障其服务的可用性。OSD服务用于实现对磁盘的治理并实现真正的数据读写,通常一个磁盘对应一个OSD服务。
Ceph Clients:以library形式提供的客户端,能够用于拜访Ceph服务端,它提供了3种协定来拜访,包含对象存储的RADOSGW、块存储端的RBD以及文件存储的CephFS。
Ceph 协定:用于服务端和Client的通信协议。
因为一个分布式存储集群治理的对象数量十分多,可能是百万级甚至是千万级以上,因而OSD的数量也会比拟多,为了有好的管理效率,Ceph引入了Pool、Place Groups(PGs)、对象这三级逻辑。PG是一个资源池的子集,负责数据对象的组织和地位映射,一个PG负责组织一批对象(数据在千级以上)。同时一个PG会被映射到多个OSD,也就是由多个OSD来负责其组织的对象的存储和查问,而每个OSD都会承载大量的PG,因而PG和OSD之间是多对多的映射关系。
当用户要将数据存储到Ceph集群时,存储数据会被宰割成多个对象(Ceph的最小存储单元),每个对象都有一个惟一的id,每个对象的大小是能够配置的,默认为4MB。Ceph通过借鉴的CRUSH哈希算法,将若干个对象映射到PG上,造成一个对象与PG的逻辑组合,并依据PG所在的Pool的正本数,将数据复制到多个OSD上,保证数据的高可用。
图片来源于:https://www.wenjiangun.com/blog/952/
在集群的可扩展性上,Ceph能够做到简直线性扩大。CRUSH 通过一种伪随机的形式将数据进行散布,因而 OSD 的利用就可能精确地通过二项式建模或者惯例形式调配。无论哪一个都能够获得完满的随机过程。随着 PG 的减少,差别就降落:对于每个 OSD 100 个 PG的状况下,标准差是 10%;对于1000 个的状况下为 3%。线性的散布策略极好地将负载在集群中均衡。CRUSH 通过卸载所有的调配碎片到一个特定的 OSD 上从而来修改这样的问题。与哈希以及线性策略不同,CRUSH 同时也最小化了数据在集群扩大产生的迁徙,同时又保障了负载的均衡。CRUSH 的计算复杂度为 O(log(n))(对于有 n 个 OSD 的集群),因而只须要 10 几个微秒就能够使集群增长到好几千个 OSDs。
值得关注的是,Ceph客户端所有的读写操作都须要通过代理节点,一旦集群并发量较大,代理节点就容易成为单点瓶颈。在数据的一致性方面,Ceph只能反对数据的最终一致性。
— 小结—
本文从架构和原理介绍了高度容错性、高吞吐量的分布式文件系统HDFS,和解决海量非结构化数据存储的对象存储技术Ceph(当初各项技术倒退比拟快,可能存在技术形容跟最新技术倒退状况不太统一的状况)。那么在特定场景下,数据的疾速查问、疾速写入和可扩展性也是必不可少的,下一篇咱们将介绍搜索引擎技术和宽表存储技术。