摘要: 人们常常使用HDFS作为存储服务的核心,大数据的实用性和发展对于企业来讲都是很重要的。而在大数据发展之初,最主要的应用场景仍然是离线批处理场景,对存储的需求追求的是吞吐量,HDFS正是针对这样的场景而设计的,而随着技术不断的发展,越来越多的场景会对存储提出新的需求,HDFS也面临着新的挑战。
1、数据量问题
一方面随着业务的增长和新的应用接入,会给HDFS带来更多的数据,另一方面随着深度学习,人工智能等技术的发展,用户通常希望能保存更长时间的数据,以提升深度学习的效果。数据量的快速增加会使集群不断面临扩容需求,从而导致存储成本不断增加。
2、小文件问题
众所周知,HDFS的设计是针对离线批处理大文件的,处理小文件并非传统HDFS擅长的场景。HDFS小文件问题的根源在于文件的元数据信息都是维护在单点Namenode的内存中,单台机器的内存空间始终是有限的。据估算,单台namenode集群能容纳系统文件数量极限大约在1.5亿左右。实际上,HDFS平台通常作为底层存储平台服务于上层多种计算框架,多个业务场景,所以小文件问题从业务的角度也难以避免。目前也有方案例如HDFS-FederaTIon解决Namenode单点扩展性问题,但同时也会带来巨大的运维管理难度。
3、冷热数据问题
随着数据量的不断增长积累,数据也会呈现出访问热度不同的巨大差异。例如一个平台会不断地写入最新的数据,但通常情况下最近写入的数据访问频率会比很久之前的数据高很多。如果无论数据冷热情况,都采用同样的存储策略,是对集群资源的一种浪费。如何根据数据冷热程度对HDFS存储系统进行优化是一个亟待解决的问题。
从Hadoop诞生到今天也有超过10年的时间,在此期间HDFS技术本身也在不断优化演进。HDFS现有一些技术能够一定程度上解决上述一些问题。这里简要介绍一下HDFS异构存储和HDFS纠删码技术。
HDFS异构存储:
Hadoop从2.6.0版本开始支持异构存储功能。我们知道HDFS默认的存储策略,对于每个数据块,采用三个副本的存储方式,保存在不同节点的磁盘上。异构存储的作用在于利用服务器不同类型的存储介质(包括HDD硬盘、SSD、内存等)提供更多的存储策略(例如三个副本一个保存在SSD介质,剩下两个仍然保存在HDD硬盘),从而使得HDFS的存储能够更灵活高效地应对各种应用场景。
HDFS中预定义支持的各种存储包括:
ARCHIVE:高存储密度但耗电较少的存储介质,例如磁带,通常用来存储冷数据
DISK:磁盘介质,这是HDFS最早支持的存储介质
SSD:固态硬盘,是一种新型存储介质,目前被不少互联网公司使用
RAM_DISK :数据被写入内存中,同时会往该存储介质中再(异步)写一份
HDFS中支持的存储策略包括:
Lazy_persist:一个副本保存在内存RAM_DISK中,其余副本保存在磁盘中
ALL_SSD:所有副本都保存在SSD中
One_SSD:一个副本保存在SSD中,其余副本保存在磁盘中
Hot:所有副本保存在磁盘中,这也是默认的存储策略
Warm:一个副本保存在磁盘上,其余副本保存在归档存储上
Cold:所有副本都保存在归档存储上
总体上HDFS异构存储的价值在于,根据数据热度采用不同策略从而提升集群整体资源使用效率。对于频繁访问的数据,将其全部或部分保存在更高访问性能的存储介质(内存或SSD)上,提升其读写性能;对于几乎不会访问的数据,保存在归档存储介质上,降低其存储成本。但是HDFS异构存储的配置需要用户对目录指定相应的策略,即用户需要预先知道每个目录下的文件的访问热度,在实际大数据平台的应用中,这是比较困难的一点。
HDFS纠删码:
传统HDFS数据采用三副本机制保证数据的可靠性,即每存储1TB数据,实际在集群各节点上占用的数据达到3TB,额外开销为200%。这给节点磁盘存储和网络传输带来了很大的压力。
在Hadoop3.0开始引入支持HDFS文件块级别的纠删码,底层采用Reed-Solomon(k,m)算法。RS是一种常用的纠删码算法,通过矩阵运算,可以为k位数据生成m位校验位,根据k和m的取值不同,可以实现不同程度的容错能力,是一种比较灵活的纠删码算法。
常见的算法为RS(3,2)、RS(6,3)、RS(10,4),k个文件块和m个校验块构成一个组,这个组内可以容忍任意m个数据块的丢失。
HDFS纠删码技术能够降低数据存储的冗余度,以RS(3,2)为例,其数据冗余度为67%,相比Hadoop默认的200%大为减少。但是纠删码技术存储数据和数据恢复都需要消耗cpu进行计算,实际上是一种以时间换空间的选择,因此比较适用的场景是对冷数据的存储。冷数据存储的数据往往一次写入之后长时间没有访问,这种情况下可以通过纠删码技术减少副本数。
前面介绍的无论HDFS异构存储还是纠删码技术,前提都是需要用户对特定的数据指定存储的行为,就是说用户需要知道哪些数据是热点数据,哪些是冷数据。那有没有一种方法可以自动对存储进行优化呢?
答案是有的,这里介绍的SSM(Smart Storage Management)系统,它从底层存储(通常是HDFS)中获取元数据信息,并通过数据读写访问信息分析获取数据热度情况,针对不同热度的数据,按照预先制定的一系列规则,采用相应的存储优化策略,从而提升整个存储系统的效率。SSM是一个由Intel主导的开源的项目,中国移动也参与其中的研发,项目可以在Github中获取到:https://github。com/Intel-bigdata/SSM 。
SSM定位是一个存储外围优化的系统,整体上采用Server-Agent-Client的架构,其中Server负责SSM整体逻辑的实现,Agent用于对存储集群执行各种操作,Client是提供给用户的数据访问接口,通常其中包含了原生HDFS的接口。
了解更多相关设计技术信息,请点击华强旗舰电子圈(http://www.hqbuy.com/dzq/dzqsy.html)!
下一篇:RJ45中文资料详解
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308