为什么道熵分布式存储是Hadoop与Spark大数据分析的更佳选择?
前言
Hadoop与Spark是常见的大数据分析框架,在机器学习、在线广告、推荐系统、搜索引擎 、海量数据挖掘等领域有着非常广泛的应用。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop实现了一个分布式文件系统HDFS。HDFS有高容错性的特点,可部署在x86服务器硬件上;而且它提供高吞吐量来访问应用程序的数据,适合有着超大数据集的应用程序。
Hadoop的框架包含:HDFS、MapReduce、Yarn、Hbase等核心组件。其中HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算,Yarn负责集群的资源管理和调度, 使多种计算框架可以运行在一个集群中,其中包括支持Spark;Hbase则是一个建立在HDFS之上,可以进行随机访问的存取和检索数据的NoSQL 数据库(即非关系型数据库)。
Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark拥有MapReduce所具有的优点,可将运行中间输出结果保存在内存中,因此Spark性能以及运算速度远高于MapReduce。Spark可以使用hadoopHDFS作为存储后端,并代替MapReduce而弥补MapReduce计算能力不足的问题。
HDFS分布式文件系统的缺陷
HDFS迄今已经过10多年的发展,广泛应用于大数据架构Hadoop与Spark框架中,来解决海量文件的存储需求。随着数据量的进一步增长,以及对于数据使用方式的多样化需求,HDFS架构的局限性逐渐被放大,其中,HDFS的集群管理节点NameNode在大规模场景很容易成为瓶颈,注意表现在以下几个方面:
1
元数据的扩展性较差:
HDFS集群管理节点NameNode是一个中央元数据服务节点,文件系统的元数据以及块位置关系全部在内存中,对内存的要求非常高,而内存大小也限制了集群扩展性。此外,NameNode的堆分配巨大,京东的NameNode需要360GB的堆大小,对GC的要求比较高,例如字节跳动把NameNode修改成C++版本,以求提高分配、释放内存的性能,但开发和维护C++版本的NameNode需要规模不小的专业团队。
2
块汇报风暴:
HDFS块大小默认128M,启动几百PB数据量的集群时,NameNode需要接受所有块汇报才可以退出安全模式,因此启动时间会达数小时。当集群全量块汇报、下线节点、balance集群存储,也会对集群元数据服务的性能造成影响,这些问题的根本原因都是DataNode需要把所有块汇报给NameNode。
3
全局锁导致性能差:
HDFS NameNode 有一把FSNamesystem全局锁,每个元数据请求时都会竞争这把锁。同时FSNamesystem内部的FSDirectory(Inode树)还存在一把单独的锁,用来保护整棵树以及BlockMap的访问和修改。因此HDFS不支持多用户并发写入,同一个文件在同一时刻只能由一个客户端写入,不允许多个线程同时写,导致小文件性能较差。
此外,HDFS还存在存储使用效率低的弊端。生产环境中HDFS通常采用三副本实现数据保护,存储的空间效率低于1/3,导致硬件成本与能耗成本偏高。
为什么道熵分布式存储是替换HDFS的更佳选择?
道熵分布式存储是分布式技术与磁盘阵列技术相融合的新一代分布式存储平台。它采用双重RAID架构,即节点内RAID与跨节点分布式两副本相结合,将磁盘阵列的本地恢复特性与分布式扩展特性融合,既有磁盘阵列的高可靠、高容错特点,又同时具有分布式横向扩展的优势。道熵分布式存储支持所有主流存储协议和接口,包含FC、iSCSI/iSER、NFS、Samba、Openstack Cinder、VMware VAAI、K8s CSI、S3、FTP、SFTP等,以及高并发POSIX文件系统等。通过使用高并发POSIX分布式文件系统来替代传统的HDFS具有以下优势:
1
计算与存储分离
在大数据早期,网络的带宽相对比较小,Hadoop采用计算和存储耦合的架构。然而存储和计算耦合在一个集群中,不可避免会存在一些问题:在不同的大数据处理中,需要不同的存储空间和计算能力配比,使得机器的选型会比较复杂和纠结;当存储空间或计算资源不足时,只能同时对两者进行扩容,导致扩容的经济效率比较低(另一种扩容的资源被浪费了);另外,在云计算场景下,不能实现真正的弹性计算,因为计算集群中也有数据,关闭闲置的计算集群会丢失数据。
随着网络的高速发展,以及大数据计算框架如Spark的出现,使得数据本地化已经不再重要。使用道熵高并发POSIX分布式文件系统来替代传统的HDFS,在性能、经济性、以及弹性能力等指标上超过了传统的计算存储耦合架构。
2
弹性扩展元数据服务
与HDFS采用单活动元数据服务器不同,道熵分布式存储采用弹性扩展元数据服务,即可同时部署多个活跃的元数据服务(MDS) 守护进程,共同承担元数据负载。其工作原理是将文件系统树分割成子树,每个子树可以交给特定的MDS进行权威管理,从而达到了随着元数据服务器数量的增加,集群性能可随之进行线性扩展;每个子树都是基于元数据在给定目录树中的热动态创建的,一旦创建了子树,它的元数据就被迁移到一个未加载的MDS,后续客户端对先前授权的MDS的请求被转发。弹性扩展元数据服务带来以下优势:多个活跃的 MDS 有利于性能提升;多个活跃的MDS 可以实现MDS负载均衡;多个活跃的MDS 可以实现多租户资源隔离。
3
纠删码提升存储使用效率
HDFS采用三副本实现数据保护,存储的空间效率低于1/3 。道熵分布式存储推荐使用4+2、8+3、或10+3纠删码实现数据保护与业务高可用,存储空间效率可提升到70%;对于非音频视频文件,通过开启数据压缩功能,存储空间效率可提升到150%甚至更高。
4
大容量自适应智能缓存
道熵分布式存储在每个节点实现了DRAM + 大容量固态硬盘两级自适应智能缓存加速功能,通过针对工作负载动态变化的自适应算法,识别出系统中的“热数据”,即最近时常读取的数据以及历史中读取频率高的数据,将最热的数据缓存在低延迟的DRAM中,而将次热的数据保存在大容量固态硬盘,从而获得90%以上的Cache命中率,大幅度提升小文件读写性能。
5
吞吐带宽可达80GB/s
在一个10个机架、20PB总容量规模的存储系统中,道熵分布式存储最高吞吐带宽可达80GB/s。其中,共用40个节点,5个monitor,2400个7200转机械硬盘作为数据盘,160个1.6TB NVMe盘作为元数据存储;每个节点配置双端口 100Gb/s RoCE网卡,并使用4台leaf 与2台spine 100Gb 交换机。
6
提升磁盘寿命
7
数据完整性校验与自动化运维
一个合格的存储系统须具备高度容错能力,不仅仅限于能够在线更换故障或老旧部件,需要同时满足几个方面的要求:高可靠性的数据存储基础、对数据错误具有自愈能力、正常运行和自愈过程均对前端应用无性能影响。而满足这些要求的一个最基本的前提条件是系统必须具备完善的数据完整性校验。
道熵分布式存储对每个数据块产生一个256比特的强校验码,并与该数据分离保存;每次读取的时候,首先将数据块与校验码分别读出,并检查校验码与数据是否匹配,否则启动数据自动修复过程。完善的数据完整性校验与节点内数据自修复是道熵分布式存储能够实现高度自动化运维的关键技术。
8
全闪存
存储领域最常见的一个误区就是以为全闪存的成本很高。真实的情况是,如果考虑总拥有成本,即考虑数据中心耗电量、散热成本、以及配电用电成本,全闪存分布式存储系统的总使用成本与使用传统机械硬盘存储基本相当。考虑到全闪存分布式存储系统在小文件读写性能方面要高出数十倍甚至百倍,全闪存分布式存储更合适作为Hadoop与Spark大数据分析的后端存储。
总结
随着数据量的增长,以及对于数据使用方式的多样化,传统的文件系统无论在性能、使用成本、还是灵活性等方面,都无法满足当今大数据分析与人工智能对数据挖掘与训练的需求。道熵分布式存储作为分布式技术与磁盘阵列技术相融合的新一代分布式存储平台,采用双重RAID架构,即节点内RAID与跨节点分布式两副本相结合,将磁盘阵列的本地恢复特性与分布式扩展特性融合,既拥有磁盘阵列的高可靠、高容错特点,又同时具备分布式横向扩展的优势,将成为替换HDFS文件系统的更优选择。
关于道熵
About us
作为信息化领域国家高新技术企业,南京道熵信息技术有限公司是行业内领先的磁盘阵列、分布式存储、超融合与混合云的专业厂商与技术服务商。道熵秉承"万无一失、方为存储"的产品理念,持守"Do Right Thing (做正确的事)、Pursue Excellence (追求卓越) 、 Help Others Succeed (成就他人) "企业信仰,为用户构建安全可靠的新一代数据存储系统、超融合与混合云解决方案。