结合RDBMS和Hadoop云存储的两级存储方法

文档序号:6365204阅读:248来源:国知局
专利名称:结合RDBMS和Hadoop云存储的两级存储方法
技术领域
本发明涉及海量小文件的高效存储、管理领域,尤其涉及一种结合RDBMS和Hadoop的海量结构化数据高效存储方法。
背景技术
进入二十一世纪以来,由于信息的爆炸式增长,海量结构化数据的应用服务越来越多,其典型的应用包括微博、即时通讯工具信息、手机短信及复杂系统日志等。这样的服务往往存在如下的特点
(1)数据具备结构化特征,其结构相对简单;
(2)数据生成速度非常快,毎秒生成数万条甚至数十万条;若以传统文件形式存储,将形成海量小文件。(3)数据存量非常大,记录超过数千万条、上亿条,甚至数十亿条;
(4)数据往往是“一次存储、多次应用”,对数据的读取和查询的实时性要求比较高。对于这些应用服务,怎样有效地组织管理这些海量数据,从中找到有效的信息,及时监控系统中的重要信息,以及对这些信息进行数据挖掘、支持业务决策,已成为业务系统建设的迫切需求。数据管理的发展历史表明,存储管理结构化数据的最有效手段就是利用关系型数据库管理系统(RDBMS)。但是另外一方面,如果数据库中累积的数据量太大,数据的IO性能就会下降,其应对大量多并发、低延时访问需求的能力自然受到影响。因此,面对上述存储服务需求,RDBMS面临严重挑战。同吋,长期积累的海量数据的高效、安全存储则是RDBMS根本无法胜任的。云存储是为了应付高速成长的数据量与带宽需求而产生的新形态存储系统,是解决海量数据存储的最有效手段。云存储的关键部件是分布式文件系统,目前,最有名三个的例子是谷歌文件系统(GoogleFS), Hadoop分布式文件系统(HDFS, Hadoop distributedfile system)和亚马逊的简单存储服务(S3)。其中,HDFS是GoogleFS的开源实现,是ー种具有高度容错性质的分布式文件系统模型,可以部署在支持JAVA运行环境的普通机器或虚拟机上,能够提供高呑吐量的数据访问,非常适合部署云存储平台。HDFS米用Master/Slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(Namespace)以及客户端对文件的访问。Datanode是数据节点,即hadoop中数据的实际存储位置。集群中的Datanode —般是ー个节点ー个,负责管理它所在节点上的存储。HDFS的这种单名称节点的设计极大地简化了文件系统的结构,然而也因此引发了 HDFS的小文件存储效率低问题。小文件是指文件大小小于HDFS上块(默认为64MB)大小的文件。这样的文件会给Hadoop的扩展性和性能带来严重问题。首先,HDFS中的每个目录和文件的元数据信息都存放在Namenode节点的内存中,通常,每个目录和块大约会各自占用150字节的内存空间,如果系统中存有I亿个小文件(指那些比HDFS数据块(默认为64MB)小得多的文件),则将消耗Namenode节点30G内存空间,这样Namenode内存容量严重制约了集群的扩展。其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如果访问大量小文件,需要不断的从ー个datanode跳到另ー个datanode,严重影响性能。最后,处理大量小文件速度远远小于处理同等大小的大文件分块的速度。每ー个小文件要占用ー个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。对于Hadoop小文件问题,解决问题的主流思想是将小文件合并组合为大文件。具体分两种实现方案(I)设计ー种通用工具(比如MapReduce作业)交给用户,让用户自己姆隔一段时间将小文件打包成大文件,当前Hadoop本身提供了几个这样的工具,包括Hadoop Archive (HAR, Hadoop 提供了 shell 命令),Sequence File (Hadoop 没有提供 shell 命令)和CombineFileInputFormat (Hadoop没有提供shell命令)。例如,利用HAR技术实现小文件的合井,从而提高了 HDFS中元数据的存储效率。(2)针对具体的应用而提出的文件组合方法,从系统层面解决HDFS小文件问题。基本思路是根据具体应用的特点,在原有HDFS基础上添加ー个小文件处理模块,模块将很多小文件合并成ー个大文件,然后为这些小文件建立索引,以便进行快速存取和访问。上述两种方案的ー个共同特点就是要建立小文件索引,如果文件超小(小于1KB),那么合并后的大文件内将包含很多的小文件,这样索引表的维护和查找将会严重将影响系统性能。简而言之,Hadoop架构广泛应用于构建各种大規模、高性能的云存储系统,但是其默认的分布式文件系统(HDFS)是为处理大文件而设计,处理小文件性能低下。对小文件需要合并处理,并且合并需要另外开发工具以及建立索引机制。关系型数据库(RDBMS)是管理结构化数据最有效的手段之一,但数据量的増加后,系统的效率就会严重下降,并且无法提供安全、高效的存储管理。

发明内容
针对上述存在的技术问题,本发明的目的是提供一种结合RDBMS和Hadoop的海量结构化数据高效存储方案。本发明的技术方案为ー种结合RDBMS和Hadoop云存储的两级存储方法,前端采用RDBMS系统,后端采用Hadoop云端;前端收集结构化数据的小文件并存储在RDBMS系统的数据库中,当数据库的容量到达一定数量后,将数据库文件整体作为大文件并写入Hadoop云端存储,同时清空数据库,数据库继续接受新数据的写入。而且,数据库收集结构化数据时的小文件时,采用基于时间和基于数据源两种策略建立数据表。而且,根据访问需求,从Hadoop云端获取数据库文件并附加到本地的RDBMS系统时,具体实现方式如下,
步骤1,根据访问者提供的信息确定需求的数据库文件的名称,所述信息包括数据源和时间;
步骤2,根据数据库文件的名称启动Hadoop文件访问;
步骤3,访问获取的数据库文件提交给RDBMS系统管理。
本发明前端利用轻量级数据库面向用户,实现结构化数据的收集、提供用户访问、同时实现小数据文件的集聚合并成大文件;后端采用Hadoop云存储海量数据库大文件,同时提供对大文件的高效存储管理。因此,本发明具有以下优点和积极效果
I)利用轻量级的关系型数据库满足结构化数据的高效写入和大規模并发访问访问需求的同时,RDBMS还使海量小文件自动合并成大文件,避免了开发小文件合并工具的不便。2)利用Hadoop云存储实现海量大数据库文件的高效存储不仅避免了 Hadoop本身的缺陷,而且可以充分利用云存储的优势 实现高效存储、管理。3)只要数据满足结构化的要求就可以使用本方案高效存储,具有一定的普遍性。


图I是本发明实施例的数据收集示意图。图2是本发明实施例的数据读取示意图。图3是本发明实施例的数据库ニ维冗余存储方案图。图4是实验中的单用户读取性能图。图5是实验中的多数据源短时间跨度的数据访问时间示意图。图6是实验中的单数据源长时间跨度数据访问时间示意图。图7是实验中的多用户并发访问性能图。
具体实施例方式 本发明基本技术思路是综合利用RDBMS和Hadoop的优势来解决问题——采取前端数据库和后端云存储相结合的方式存储。一方面,将具备结构化特征的小文件中的数据存储在数据库中(前端),另ー方面,数据库的容量到达一定数量后,将数据库文件整体写入Hadoop云端(后端)存储,同时清空数据库继续接受新数据的写入。因此,Hadoop存储的就都是经过RDBMS收集合并的大文件,而RDBMS管理的则始终是ー个轻量级的数据库,两者的优势都得到运用而各自的劣势则可以避免。以下结合附图和实施例详细说明本发明技术方案。实施例在前端采用RDBMS系统,后端采用Hadoop云端;前端收集结构化数据的小文件并存储在RDBMS系统的数据库中,当数据库的容量到达一定数量后,将数据库整体作为大文件并写入Hadoop云端存储,同时清空数据库,数据库继续接受新数据的写入。为了使数据库保持轻量级而进行数据库文件整体替换,替换操作实质是将收集到一定量数据的数据库作为大文件存储到Hadoop云存储端,同时使用存储前端继续使用空的结构相同的数据库收集新数据。根据数据库整体的大小来确定整体替换的时机,这样可使整体的IO性能最优。本领域技术人员可以采用计算机软件模块化设计技术,设计数据库文件替换控制模块,来完成前端的替换工作。RDBMS和Hadoop属于现有技术,具体实施时,将模块加载到RDBMS系统即可。如图I所示,本发明提供的结合RDBMS和Hadoop的海量结构化数据高效存储方案中数据收集(写入)步骤如下
1.1用户利用用户接ロ层上传数据文件,同时用户接ロ层负责将文件中的信息写入RDBMS0如图中的第1、2歩多个用户,记为存储用户I、存储用户2···存储用户N,都可以采用同样的方式上传数据文件。存储用户I上传的小文件经过用户接ロ层,上传到RDBMS系统的数据库。用户接ロ层是ー个基于TCP/IP或其他方式的通信模块,实施时可以采用Web服务器的一个专用逻辑部件。Web服务器是向用户提供信息服务的现有技术常用手段,本发明不予赘述。I. 2数据库文件替换控制模块根据替换控制策略(主要依据是数据量大小)使用空的数据库文件替换收集到数据的数据库文件,将收集到数据的数据库文件通过HDFS客户端整体写入云端存储(图中的第3歩)。图中的用户接ロ层和存储业务处理层在物理上统一于存储服务器中。每个存储服务器可以响应多个存储用户,在大規模的数据存储服务时存储服务器可以根据应用规模设置多台,每台都分别设置用户接ロ层和存储业务处理层即可。为了使系统能从容应对不同类型的访问需求,本发明进一歩提供数据库设计策略一种数据库ニ维冗余存储策略,即数据库收集结构化数据时,采用基于时间和基于数据源两种策略建立数据表。基于时间的数据库满足短时间跨度多数据源的数据访问需求。基于数据源的数据库满足长时间跨度少量数据源的数据访问需求。參见图3,数据库ニ维冗余存储原理说明如下
本发明提出采用基于时间和基于数据源两种策略建立数据表,即采用“时间”数据库和“数据源”数据库进行存储。在同一个存储服务器的数据库管理系统中可以管理多个数据库。“时间”数据库以“时间”(具体时间长短依据数据量以及Hadoop系统中的网络速度而定)组织数据的存储,设定时间的数据收集完后(即收集时间到后),一次性分散冗余存储到各自的“数据源”数据库(图中的“数据源”数据库1、“数据源”数据库2··· “数据源”数据库n),再整体存储到云端。“数据源”数据库按照数据源来组织数据的存储,例如10万个数据源可分200个“数据源”数据库来存储,每个数据库存储约500数据源一定时间段(例如ー个月)内的数据后整体写入云端存储。为保障系统性能,需要存储服务器配备大容量的内存和高速固态硬盘(SSD)。“时间”数据库的写入操作频繁,数据库文件较小,直接装载到内存。“数据源”数据库的数据量大(因为其时间跨度大),存储到本地系统配置的SSD (固态硬盘)中。同时,考虑到“时间”数据库的安全性,要为其建立镜像保护机制,保留“时间”数据库镜像。为便于提取存储的数据,本发明提供了根据访问需求,从Hadoop云端获取数据库文件并附加到本地的RDBMS系统时,具体实现方式如下,
步骤1,根据访问者提供的信息确定需求的数据库文件的名称,所述信息包括数据源和时间;
步骤2,根据数据库文件的名称启动Hadoop文件访问;
步骤3,访问获取的数据库文件提交给RDBMS系统管理。然后RDBMS系统可以从数据库文件中取出小文件,提供给访问者。除响应访问需求外,还可以设定主动缓冲机制RDBMS系统根据系统内存储服务器的缓存容量、云端存储的各数据库文件的活性以及系统内当前的数据库文件的总大小(已经从云端取出装载到存储服务器缓存中的数据库的总大小),动态的调整附加到RDBMS系统中的数据库文件的名称和数量。数据库文件的活性是指他的访问热度,如果一段时间、内用户需要的数据都是来自ー个数据库,那么就说这个数据库的活性很高。根据系统内存储服务器的缓存容量和系统内当前的数据库文件的总大小,可以知道RDBMS系统还可以容纳的数据量。这样可以主动把那些最热的数据库大文件从云端中取出放在存储服务器的缓存中,以提高系统的效率。本领域技术人员可以采用计算机软件模块化设计技术,设计存储文件名映射及数据库附加模块,来完成上述步骤的工作。结合图2,本发明提供的结合RDBMS和Hadoop的海量结构化数据高效存储方案中数据访问(读取)步骤如下
2. I用户的数据访问请求提交至Web服务器,Web服务器通过执行Web服务,根据访问者提供的数据源、时间等信息要求相应的存储服务器(有多台存储服务器时,需要进行相关的存储服务器映射操作)提供数据。(图中的第I歩)
2.2如数据在存储服务器的内存,则转到2. 4,否则将需求信息发给图中的“存储文件 名映射及数据库附加模块”(图中的第2歩)。该模块实现两方面功能“存储文件名映射”的功能是根据访问者提供的数据源、时间等信息确定其云端数据库大文件的名称;“数据库附加”的功能是1.启动Hadoop文件访问;2.根据存储服务器的缓存容量、数据库文件的活性以及当前的数据库文件的总大小,动态的调整附加到RDBMS中的数据库名称和数量。2. 3 “存储文件名映及数据库附加模块”启动Hadoop文件访问操作流程(图中的第3歩),文件接收完毕后作为新的数据库附加到本地RDBMS。2.4 RDBMS提供数据给Web服务器(图中的第4步),从而响应用户需求。为便于理解本发明效果,以下结合图4至图7,通过以下实验为例说明本存储方案的先进性和实用性。实验环境和测试项目1台 DELL PowerEdge T410 (配置为CPU 2A* Intel XeonE5606 2.13GHz,内存8 GB DDR3,硬盘SATA 500 GB)服务器构成Hadoop云存储环境中的 NameNode ;4 台戴尔 OptiPlex 380 MT (配置为CPU Intel 奔腾双核 E5800 3200MHz,内存4 GB DDR3,硬盘SATA 500 GB)构成Hadoop云存储环境中的DataNode ;操作系统均为Ubuntu Server 9. 04,Hadoop版本为O. 20. 2。JDK版本I. 6. 0_23。网络环境为千兆以太网。I台戴尔OptiPlex 380 MT (配置为CPU Intel奔腾双核E5800 3200MHz,内存16GB DDR3,硬盘 SSD 146 GB)作为存储服务器,安装 Windows Sever2003、SQL Sever2005 以及Hadoop客户端。实验平台模拟ー个有10万个小文件数据源的“数字城市”项目,平均每个数据源每隔I小时产生ー个新的数据,每条新数据平均大小O. 5KB,数据量约为1.2 GB/天。如果各个数据源的数据以“天”为单位进行文件式存储,则每天产生的大小约为12KB的文件10万个。若将每条数据都存入关系型数据库(RDB),则每天数据库新增的数据记录240万行。实验主要包括写入和读出两种测试,读取包括数据库文件大小对读取性能影响测试、单用户两种典型模式读取以及多用户并发读取四种测试。写入测试
写入操作包含两种对比测试,ー是直接写入Hadoop,ニ是按照本设计方案写入内存数据库中。写入Hadoop的测试文件大小为均为12 KB,文件共10万个,总大小约为I. 2GB。写入数据库的总数据为I. 2GB,单条记录的大小为O. 5KB,数据库中共有20张表,所有文件信息提取结构化数据后平均写到20张表中(每表记录数约为12万行)。并行写入采用单点多进程(每个进程分配的文件数目大致相等)的方式模拟写入。经过10次测试,测试结果平均值如下表所示。从表中数据看,本文方案的写入时间相比原始Hadoop系统有极大优势。同时,对1000个并行写入请求,系统亦可轻松应对。写入操作测试结果表
权利要求
1.一种结合RDBMS和Hadoop云存储的两级存储方法,其特征在于前端采用RDBMS系统,后端采用Hadoop云端;前端收集结构化数据的小文件并存储在RDBMS系统的数据库中,当数据库的容量到达一定数量后,将数据库文件整体作为大文件并写入Hadoop云端存储,同时清空数据库,数据库继续接受新数据的写入。
2.如权利要求I所述结合RDBMS和Hadoop云存储的两级存储方法,其特征在于数据库收集结构化数据时的小文件时,采用基于时间和基于数据源两种策略建立数据表。
3.如权利要求I或2所述结合RDBMS和Hadoop云存储的两级存储方法,其特征在于根据访问需求,从Hadoop云端获取数据库文件并附加到本地的RDBMS系统时,具体实现方式如下, 步骤1,根据访问者提供的信息确定需求的数据库文件的名称,所述信息包括数据源和时间; 步骤2,根据数据库文件的名称启动Hadoop文件访问; 步骤3,访问获取的数据库文件提交给RDBMS系统管理。
全文摘要
本发明提供一种结合RDBMS和Hadoop云存储的两级存储方法,其特征在于前端采用RDBMS系统,后端采用Hadoop云端;前端收集结构化数据的小文件并存储在RDBMS系统的数据库中,当数据库的容量到达一定数量后,将数据库整体作为大文件并写入Hadoop云端存储,同时清空数据库,数据库继续接受新数据的写入。本发明利用轻量级的关系型数据库满足结构化数据的高效写入和大规模并发访问访问需求的同时,RDBMS还使海量小文件自动合并成大文件,避免了开发小文件合并工具的不便;利用Hadoop云存储实现海量大数据库文件的高效存储不仅避免了Hadoop本身的缺陷,而且可以充分利用云存储的优势实现高效存储、管理。只要数据满足结构化的要求就可以使用本发明技术方案高效存储,具有一定的普遍性。
文档编号G06F17/30GK102646121SQ20121004131
公开日2012年8月22日 申请日期2012年2月23日 优先权日2012年2月23日
发明者刘小俊, 徐正全, 潘少明 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1