一种基于SSD和HDD混合存储系统的RDD持久化方法与流程

文档序号:11285659阅读:388来源:国知局
一种基于SSD和HDD混合存储系统的RDD持久化方法与流程

本发明涉及数据处理技术领域,尤其涉及一种基于ssd和hdd混合存储系统的rdd持久化方法。



背景技术:

在现有的大数据时代,面对海量数据,如何在有效的时间内管理、分析并提取有价值的信息,成为人们亟需解决的问题。然而,无论是规模、种类还是结构,大数据对人们驾驭数据的能力提出了巨大挑战。

spark是目前高效且在产业界被广泛使用的大数据计算框架,是通用、快速的大规模数据处理引擎。首先,spark提供了统一的解决方案,可以用于交互式查询、实时流处理、机器学习等复杂任务;其次,spark通过弹性分布式数据集(resilientdistributeddataset,简称rdd)划分阶段和任务,通过高效的有向无环图(directedacyclicgraph,简称dag)执行引擎优化子任务执行顺序,并通过基于内存的计算大幅提升数据处理效率;第三,spark数据管理依赖于hdfs、hive等多种数据源,并且集群模式下的spark实现了横向扩展,支持大规模数据的处理。rdd是spark区别于其他大数据计算框架最重要的概念,它是一种具有高度容错机制的、只读的分布式数据集。spark应用程序中,每一个rdd会被分成多个分区,且spark以分区为单位对rdd进行各种操作。持久化(persist)rdd分区数据到内存或硬盘实现了对计算任务中间结果的缓存,以供后续迭代任务直接读取中间结果,避免了重复计算,大幅提升了数据处理效率。另外,持久化数据到硬盘,打破了内存容量不足对数据集规模的限制,使得spark处理大数据游刃有余。

但是目前初始rdd数据集按照随机比例进行分割,spark所提供的持久化框架根据依据此比例将数据持久化到不同的存储介质中,无法实现按需持久化。



技术实现要素:

本发明旨在解决现有技术中的无法实现按需持久化技术问题,提供一种能无法实现按需持久化的基于ssd和hdd混合存储系统的rdd持久化方法。

本发明的实施例提供一种基于ssd和hdd混合存储系统的rdd持久化方法,所述方法包括以下步骤:

rdd模块将rdd模块中的块标识和rdd模块中数据的预设持久化级别传递给块管理器;

所述块管理器将所述块标识和预设持久化级别传递给磁盘块管理器;

所述磁盘块管理器将所述预设持久化级别传递给设备适配器;

所述设备适配器接收数据的预设持久化级别和读取配置文件中两个目录管理变量,根据数据的预设持久化级别进行预设持久化级别和对应目录管理变量中临时文件目录匹配,并将匹配得到的临时文件目录返回给所述磁盘块管理器;

所述磁盘块管理器根据所述块标识得到文件名,并根据匹配得到的临时文件目录和所述文件名得到数据存储地址,并将所述数据存储地址返回至所述块管理器;

所述块管理器根据所述数据存储地址对rdd模块中的数据在ssd或hdd中进行存储。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。

本发明的技术方案与现有技术相比,有益效果在于:根据预设持久化级别将所述数据存储地址对rdd模块中的数据在ssd或hdd中进行存储,以实现spark应用程序的按需持久化。

附图说明

图1是本发明分布式计算系统一种实施例的结构示意图。

图2是本发明分布式计算系统的数据处理方法一种实施例的流程图。

图3是本发明基于ssd和hdd混合存储系统的rdd持久化方法一种实施例的流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

具体的,固态硬盘(solid-statedrive,简称ssd)的出现为提升存储系统性能带来了新的机遇,ssd具有低功耗、低延迟、体积小等优点。与传统企业级硬盘(harddiskdrive,简称hdd)通过移动机械臂来寻址方式不同,ssd完全构建于半导体芯片上,因此具有随机访问性能。然而,由于ssd容量成本过高、寿命有限等不足,完全使用ssd替换hdd会大幅提升产业成本。为了合理利用ssd的高性能和hdd的低廉价格等优势,基于ssd和hdd混合存储的异构数据中心得到人们普遍研究和应用。

本发明一个实施例的分布式计算系统,如图1所示,包括spark平台模块1和混合存储模块2,所述混合存储模块2包括ssd单元21和与hdd单元22,所述spark平台模块1分别与所述ssd单元21和hdd单元22连接;

所述spark平台模块1利用大数据处理框架spark作为计算引擎,将处理得到的数据送至所述ssd单元21或者所述hdd单元22进行存储,所述spark平台模块1还用于接收查询指令,并从所述ssd单元21或者所述hdd单元22取与查询指令对应的数据后输出。

通过所述spark平台模块分别与所述ssd单元和hdd单元连接,以使处理得到的数据送至所述ssd单元或者所述hdd单元进行存储,可以实现数据的精确映射和保存。

在具体实施中,所述spark平台模块1包括与所述ssd单元21对应的第一api(applicationprogramminginterface,应用程序编程接口)和与所述hdd单元对应的第二api,所述spark平台模块1通过第一api与所述ssd单元21连接,所述spark平台模块1通过第二api与所述hdd单元22连接,以进行数据传输。所述spark平台模块1通过第一api和第二api,可以将混合存储系统的结构特征展示给用户。而存储介质的选择是通过调用第一api或第二api接口来实现,即选择在所述ssd单元21或是所述hdd单元22中进行存储通过调用第一api或第二api接口来实现。

在具体实施中,所述ssd单元21作和所述hdd单元22为同层持久化存储单元。所述处理得到的数据具体包括rdd分区数据。所述spark平台模块还用于根据预设的分区比例值将rdd分区数据持久化到所述ssd单元或所述hdd单元中。

在具体实施中,所述spark平台模块1还用于根据rdd分区数据的热度将rdd分区数据持久化到所述ssd单元或所述hdd单元中。由于ssd的i/o带宽和降低访问延迟可以被有效地提升。而hdd仍然能为那些对存储性能要求较低的数据提供大量的存储效率。另外大量的数据被数据中心收集并捕获后,并不经常被访问,称之为冷数据,约占全球数据的90%。而剩余的10%的数据被收集并捕获后,会经常性的被访问,称之为热数据。显然,将全部的数据都存储在高性能、低延迟的存储设备是不合理的,成本是极为昂贵的。因此,根据rdd分区数据的热度,实现对ssd单元21和hdd单元22以合理的方式进行组合,通过构建混合存储系统可以带来性能的大幅提升,同时保障成本可控。

在具体实施中,所述分布式计算系统还包括连接所述混合存储模块的容量监控模块,所述容量监控模块用于对所述混合存储模块的剩余容量进行监控,并在剩余容量小于预设阈值时输出报警信号。也就是说,分布式计算系统还可包括连接混合存储模块2的容量监控模块,容量监控模块用于对混合存储模块2的剩余容量进行监控,并在剩余容量小于预设阈值时输出报警信息。预设阈值的具体取值可根据混合存储模块2的容量大小决定,输出报警信息可以是控制扬声器发声或控制报警灯闪烁等。在混合存储模块2的剩余容量过低时进行报警,提醒工作人员及时对存储数据进行转移或更换存储硬盘等,以提高数据存储可靠性。

本发明还提供一种实施例的分布式计算系统的数据处理方法,如图2所示,所述数据处理方法包括以下步骤:

步骤s21,所述spark平台模块通过大数据处理框架spark作为计算引擎,将处理得到的数据送至所述ssd单元或者所述hdd单元进行存储;

步骤s22,所述spark平台模块接收查询指令,并从所述ssd单元或者所述hdd单元获取与查询指令对应的数据后输出。

通过所述spark平台模块分别与所述ssd单元和hdd单元连接,以使处理得到的数据送至所述ssd单元或者所述hdd单元进行存储,可以实现数据的精确映射和保存。

在具体实施中,所述数据处理方法还包括以下步骤通过容量监控模块对所述混合存储模块的剩余容量进行监控,并在剩余容量小于预设阈值时输出报警信息。预设阈值的具体取值可根据混合存储模块2的容量大小决定,输出报警信息可以是控制扬声器发声或控制报警灯闪烁等。在混合存储模块2的剩余容量过低时进行报警,提醒工作人员及时对存储数据进行转移或更换存储硬盘等,以提高数据存储可靠性。

在具体实施中,所述spark平台模块1包括与所述ssd单元21对应的第一api(applicationprogramminginterface,应用程序编程接口)和与所述hdd单元对应的第二api,所述spark平台模块1通过第一api与所述ssd单元21连接,所述spark平台模块1通过第二api与所述hdd单元22连接,以进行数据传输。所述spark平台模块1通过第一api和第二api,可以将混合存储系统的结构特征展示给用户。而存储介质的选择是通过调用第一api或第二api接口来实现,即选择在所述ssd单元21或是所述hdd单元22中进行存储通过调用第一api或第二api接口来实现。

在具体实施中,所述ssd单元21作和所述hdd单元22为同层持久化存储单元。所述处理得到的数据具体包括rdd分区数据。所述spark平台模块还用于根据预设的分区比例值将rdd分区数据持久化到所述ssd单元或所述hdd单元中。

在具体实施中,所述spark平台模块1还用于根据rdd分区数据的热度将rdd分区数据持久化到所述ssd单元或所述hdd单元中。由于ssd的i/o带宽和降低访问延迟可以被有效地提升。而hdd仍然能为那些对存储性能要求较低的数据提供大量的存储效率。另外大量的数据被数据中心收集并捕获后,并不经常被访问,称之为冷数据,约占全球数据的90%。而剩余的10%的数据被收集并捕获后,会经常性的被访问,称之为热数据。显然,将全部的数据都存储在高性能、低延迟的存储设备是不合理的,成本是极为昂贵的。因此,根据rdd分区数据的热度,实现对ssd单元21和hdd单元22以合理的方式进行组合,通过构建混合存储系统可以带来性能的大幅提升,同时保障成本可控。

在具体实施中,通过调用rdd.persist(storagelevel.ssd_only)实现持久化该rdd分区数据,同时设置分区数据的预设持久化级别为ssd_only。持久化该rdd的操作由rdd.iterator方法开启,图3所示内容为rdd数据的持久化流程。另外,要持久化rdd分区数据,需要具备两个条件:分区数据+地址,分区数据已经保存在rdd模块中,而地址需要通过计算获取,地址=路径/文件名,路径已经保存到配置文件中,需要根据分区数据的预设持久化级别映射配置文件获取,而文件名需要根据块标识生成。

本发明提供一种实施例的基于ssd和hdd混合存储系统的rdd持久化方法,所述持久化方法是基于优化后的spark框架以实现对rdd分区数据的持久化,所述持久化方法包括以下步骤:

rdd模块将rdd模块中的块标识和rdd模块中数据的预设持久化级别传递给块管理器;

所述块管理器将所述块标识和预设持久化级别传递给磁盘块管理器;

所述磁盘块管理器将所述预设持久化级别传递给设备适配器;

所述设备适配器接收数据的预设持久化级别和读取配置文件中两个目录管理变量,根据数据的预设持久化级别进行预设持久化级别和对应目录管理变量中临时文件目录匹配,并将匹配得到的临时文件目录返回给所述磁盘块管理器;

所述磁盘块管理器根据所述块标识得到文件名,并根据匹配得到的临时文件目录和所述文件名得到数据存储地址,并将所述数据存储地址返回至所述块管理器;

所述块管理器根据所述数据存储地址对rdd模块中的数据在ssd或hdd中进行存储。

本发明根据预设持久化级别将所述数据存储地址对rdd模块中的数据在ssd或hdd中进行存储,以实现spark应用程序的按需持久化。也就是说,当预设持久化级别为ssd_only时,将rdd模块中的数据在ssd中进行存储,当预设持久化级别为hdd_only时,将rdd模块中的数据在hdd中进行存储。

具体的,如图3所示,所述持久化方法的步骤如下:

步骤1,所述rdd模块通过iterator方法调用块管理器blockmanager的doputiterator方法将rdd模块中的块标识blockid和rdd模块中数据的预设持久化级别传递给块管理器blockmanager;

步骤2,所述块管理器blockmanager的doputiterator方法调用磁盘块管理器的getfile方法,将rdd模块中的块标识blockid和rdd模块中数据的预设持久化级别传递给磁盘块管理器diskblockmanager;

步骤3,所述磁盘块管理器diskblockmanager的getfile方法调用设备适配器的getaccuratedir方法将所述预设持久化级别传递给设备适配器deviceadapter;

步骤4,所述设备适配器deviceadapter读取配置文件中两个目录管理变量,具体的,所述两个目录管理变量包括ssd目录管理变量和hdd目录管理变量;

步骤5,所述设备适配器deviceadapter根据数据的预设持久化级别进行预设持久化级别和对应目录管理变量中临时文件目录匹配,也就是说所述设备适配器deviceadapter可以从上层获取预设持久化级别,可以从下层获取配置文件比如ssd目录管理变量和hdd目录管理变量,可以完成预设持久化级别与临时文件目录,也就是说,getaccuratedir方法读取配置文件,其中配置文件包括两个变量为ssd目录管理变量和hdd目录管理变量,然后根据接收到的预设持久化级别匹配上述两个变量。如果预设持久化级别是ssd_only,则匹配ssd目录管理变量;如果预设持久化级别是hdd_only,则匹配hdd目录管理变量,此时得到了rdd数据持久化的具体存储地址,然后将该地址返回给所述磁盘块管理器diskblockmanager;

步骤6,将匹配得到的临时文件目录返回给所述磁盘块管理器diskblockmanager,也就是说,匹配得到的临时文件目录中包含具体存储地址,然后将该地址返回给所述磁盘块管理器diskblockmanager;

步骤7,所述磁盘块管理器diskblockmanager根据所述块标识blockid得到文件名filename,并根据匹配得到的临时文件目录和所述文件名得到数据存储地址,也就是说,具体地址+filename就是rdd数据存储到磁盘的完整地址即数据存储地址,其中filename=“rdd_”+index,index是一个数字索引,按照顺序递增,而数据存储地址=目录/文件名,另外临时文件目录也就是保存路径;

步骤8,所述磁盘块管理器diskblockmanager将所述数据存储地址返回至所述块管理器blockmanager;

步骤9,所述块管理器blockmanager获得rdd的数据存储地址后,调用块存储模块diskstore的writefunc方法,完成数据的存储任务。

在具体实施中,所述rdd持久化方法还包括以下步骤;

判断rdd模块中数据的热度是否大于第一预设值;

如果是,所述rdd模块中数据的预设持久化级别为ssd_only;

如果否,所述rdd模块中数据的预设持久化级别为hdd_only。

即根据rdd分区中数据的热度,进行数据的预设持久化级别的设置以实现对ssd单元21和hdd单元22以合理的方式进行组合,通过构建混合存储系统可以带来性能的大幅提升,同时保障成本可控。

也就是说,通过优化的spark持久化框架,实现spark数据的按需持久化。进而,用户可调用优化后的spark框架所提供的面向ssd持久化的api将高热度rdd的分区数据持久化到ssd中,由此有效地提升spark性能。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述图3中方法的步骤。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1