基于Hbase的数据读写方法、装置、设备及存储介质与流程

文档序号:17397754发布日期:2019-04-13 00:57阅读:142来源:国知局
本发明涉及大数据
技术领域
:,尤其涉及一种基于hbase的数据读写方法、装置、设备及存储介质。
背景技术
::随着云计算和大规模数据时代的到来,各种类型的互联网应用层出不穷,特别是以sns(socialnetworkingservices,社交网络服务)为代表的社会网络的快速发展,传统的关系型数据库已经越来越无法满足云计算和大数据对处理海量数据、高并发读写速度、可扩展性、高可用性等方面的要求。互联网爆炸式的数据增长导致对海量数据的存储有迫切需求。传统的mysql(关系型数据库管理系统)和orcal在百万级的数据能提供很好的事务能力和读写性能,但随着数据量的增加,mysql和orcal的性能急剧下降。hbase是基于googlebigtable的开源实现,非常适合海量的数据存储,且有较好的随机读写能力。但hbase自带的复制功能经常会出现异常中断的情况,导致hbase集群中写入数据时,无法实现数据实时写入操作。技术实现要素:本发明的主要目的在于提供一种基于hbase的数据读写方法、装置、设备及存储介质,旨在解决现有的在hbase集群中写入数据时,无法实现数据实时写入操作的技术问题。为实现上述目的,本发明提供一种基于hbase的数据读写方法,所述基于hbase的数据读写方法包括步骤:当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据;在检测到主hbase集群处于异常状态时,将所述待写入数据写入到本地磁盘和备用hbase集群中,并检测所述主hbase集群是否从所述异常状态转变为正常状态;若检测到所述主hbase集群从所述异常状态转变为所述正常状态,则从所述本地磁盘中获取所述待写入数据写入所述主hbase集群中。优选地,所述基于hbase的数据读写方法还包括:在检测到当前时间为数据同步时间时,通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以及将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中。优选地,所述将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中的步骤包括:获取所述预设数据库中第一预设时长内存储的目标数据,以及获取所述主hbase集群存储的主数据和所述备用hbase集群存储的备用数据;将所述目标数据分别与所述主数据和所述备用数据对比,确定所述目标数据中与所述主数据不同的第一数据,以及确定所述目标数据中与所述备用数据不同的第二数据;将所述第一数据写入至所述主hbase集群中,以及将所述第二数据写入至所述备用hbase集群中。优选地,所述基于hbase的数据读写还包括:若侦测到读取数据的读取请求,则根据所述读取请求在所述主hbase集群中读取数据,并检测在所述主hbase集群是否成功读取到所述读取请求对应的数据;若在所述主hbase集群中未能成功读取到所述读取请求对应的数据,则在所述备用hbase集群中读取所述读取请求对应的数据,并检测在所述备用hbase集群中是否成功读取到所述读取请求对应的数据;若在所述备用hbase集群中未能成功读取到所述读取请求对应的数据,则从预设数据库中读取所述读取请求对应的数据。优选地,所述检测在所述主hbase集群是否成功读取到所述读取请求对应的数据的步骤包括:检测是否在第二预设时长内接收到所述读取请求对应的数据;若在所述第二预设时长内接收到所述读取请求对应的数据,则确定在所述主hbase集群中成功读取到所述读取请求对应的数据;若在所述第二预设时长内未接收到所述读取请求对应的数据,则确定在所述主hbase集群中没有成功读取到所述读取请求对应的数据。优选地,所述基于hbase的数据读写方法还包括:检测预设数据库中存储的数据的存储时长是否大于预设存储时长;若检测到所述存储时长大于预设存储时长,删除所述预设数据库中所述存储时长大于预设存储时长对应的数据。优选地,所述当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据的步骤之后,还包括:在检测到所述主hbase集群处于正常状态时,则调用异步线程,通过所述异步线程将所述待写入数据写入所述主hbase集群中。此外,为实现上述目的,本发明还提供一种基于hbase的数据读写装置,所述基于hbase的数据读写装置包括:获取模块,用于当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据;写入模块,用于在检测到主hbase集群处于异常状态时,将所述待写入数据写入到本地磁盘和备用hbase集群中;检测模块,用于检测所述主hbase集群是否从所述异常状态转变为正常状态;所述写入模块还用于若检测到所述主hbase集群从所述异常状态转变为所述正常状态,则从所述本地磁盘中获取所述待写入数据写入所述主hbase集群中。此外,为实现上述目的,本发明还提供一种基于hbase的数据读写设备,所述基于hbase的数据读写设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的基于hbase的数据读写程序,所述基于hbase的数据读写程序被所述处理器执行时实现如上所述的基于hbase的数据读写方法的步骤。此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于hbase的数据读写程序,所述基于hbase的数据读写程序被处理器执行时实现如上所述的基于hbase的数据读写方法的步骤。本发明通过在hbase集群中写入数据过程中,当主hbase集群处于异常状态时,先将待写入数据存储至本地磁盘和备用hbase集群中,实现了将数据实时的写入hbase集群中;在主hbase集群从异常状态转变成正常状态时,将本地磁盘中存储的待写入数据写入主hbase集群中,以便于在主hbase集群处于正常状态,以实时将待写入数据写入主hbase集群中,提高了在主hbase集群中写入数据的成功率和写入效率,并保证了主hbase集群和备用hbase集群中存储数据的一致性,达到了多活的目的。附图说明图1是本发明实施例方案涉及的硬件运行环境的结构示意图;图2是本发明基于hbase的数据读写方法第一实施例的流程示意图;图3是本发明基于hbase的数据读写方法第二实施例的流程示意图;图4是本发明基于hbase的数据读写方法第三实施例的流程示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,图1是本发明实施例方案涉及的硬件运行环境的结构示意图。需要说明的是,图1即可为基于hbase的数据读写设备的硬件运行环境的结构示意图。本发明实施例基于hbase的数据读写设备可以是pc,便携计算机等终端设备。如图1所示,该基于hbase的数据读写设备可以包括:处理器1001,例如cpu,用户接口1003,网络接口1004,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的基于hbase的数据读写设备结构并不构成对基于hbase的数据读写设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于hbase的数据读写程序。其中,操作系统是管理和控制基于hbase的数据读写设备硬件和软件资源的程序,支持基于hbase的数据读写程序以及其它软件或程序的运行。在图1所示的基于hbase的数据读写设备中,用户接口1003可用于接收写入请求和/或读取请求等;网络接口1004主要用于连接主hbase集群和备用hbase集群等,与主hbase集群和备用hbase集群等进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于hbase的数据读写程序,并执行以下操作:当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据;在检测到主hbase集群处于异常状态时,将所述待写入数据写入到本地磁盘和备用hbase集群中,并检测所述主hbase集群是否从所述异常状态转变为正常状态;若检测到所述主hbase集群从所述异常状态转变为所述正常状态,则从所述本地磁盘中获取所述待写入数据写入所述主hbase集群中。进一步地,处理器1001还可以用于调用存储器1005中存储的基于区块链的基于hbase的数据读写程序,并执行以下步骤:在检测到当前时间为数据同步时间时,通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以及将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中。进一步地,所述将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中的步骤包括:获取所述预设数据库中第一预设时长内存储的目标数据,以及获取所述主hbase集群存储的主数据和所述备用hbase集群存储的备用数据;将所述目标数据分别与所述主数据和所述备用数据对比,确定所述目标数据中与所述主数据不同的第一数据,以及确定所述目标数据中与所述备用数据不同的第二数据;将所述第一数据写入至所述主hbase集群中,以及将所述第二数据写入至所述备用hbase集群中。进一步地,处理器1001还可以用于调用存储器1005中存储的基于区块链的基于hbase的数据读写程序,并执行以下步骤:若侦测到读取数据的读取请求,则根据所述读取请求在所述主hbase集群中读取数据,并检测在所述主hbase集群是否成功读取到所述读取请求对应的数据;若在所述主hbase集群中未能成功读取到所述读取请求对应的数据,则在所述备用hbase集群中读取所述读取请求对应的数据,并检测在所述备用hbase集群中是否成功读取到所述读取请求对应的数据;若在所述备用hbase集群中未能成功读取到所述读取请求对应的数据,则从预设数据库中读取所述读取请求对应的数据。进一步地,所述检测在所述主hbase集群是否成功读取到所述读取请求对应的数据的步骤包括:检测是否在第二预设时长内接收到所述读取请求对应的数据;若在所述第二预设时长内接收到所述读取请求对应的数据,则确定在所述主hbase集群中成功读取到所述读取请求对应的数据;若在所述第二预设时长内未接收到所述读取请求对应的数据,则确定在所述主hbase集群中没有成功读取到所述读取请求对应的数据。进一步地,处理器1001还可以用于调用存储器1005中存储的基于区块链的基于hbase的数据读写程序,并执行以下步骤:检测预设数据库中存储的数据的存储时长是否大于预设存储时长;若检测到所述存储时长大于预设存储时长,删除所述预设数据库中所述存储时长大于预设存储时长对应的数据。进一步地,所述当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据的步骤之后,处理器1001还可以用于调用存储器1005中存储的基于区块链的基于hbase的数据读写程序,并执行以下步骤:在检测到所述主hbase集群处于正常状态时,则调用异步线程,通过所述异步线程将所述待写入数据写入所述主hbase集群中。基于上述的结构,提出基于hbase的数据读写方法的各个实施例。参照图2,图2为本发明基于hbase的数据读写方法第一实施例的流程示意图。本发明实施例提供了基于hbase的数据读写方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。首先,对本发明实施例所需要用到的专业名词进行解释。①hadoop:是一个能够对大量数据进行分布式处理的软件框架。hadoop包括common,hdfs(hadoopdistributedfilesystem,分布式文件系统),yarn(yetanotherresourcenegotiator,另一种资源协调者)和mapreduce四个模块,其中,common:是可支持其他模块的公共工具;hdfs是用于提供高吞吐访问性能的分布式文件系统;yarn是提供作业调度和集群资源管理的框架;mapreduce是数据并行计算框架,简称mr。②hbase:hbase是一个开源的非关系型分布式数据库(nosql),它参考了谷歌的bigtable建模,实现的编程语言为java。它是apache软件基金会的hadoop项目的一部分,运行于hdfs文件系统之上,为hadoop提供类似于bigtable规模的服务。因此,它可以容错地存储海量稀疏的数据。hbase对数据存储管理包括两方面:一是元数据的管理、二是数据的管理。其中,元数据:hbase将相应的region信息存储在meta表中,客户端的读写每次都会先读meta表找到响应region所在的服务器,进而通过rpc(remoteprocedurecall,远程过程调用)直接进行读写操作。数据:hbase的数据存储在hdfs中,是以严格的字典序、以hfile为最小文件单元存储。③sqoop:是一款开源的工具,主要用于在hadoop(hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如:mysql,oracle,postgres等)中的数据导进到hadoop的hdfs中,也可以将hdfs的数据导进到关系型数据库中。④hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql(structuredquerylanguage,结构化查询语言)查询功能,可以将sql语句转换为mapreduce任务进行运行。基于hbase的数据读写方法应用于服务器或者终端中,终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)等移动终端,以及诸如数字tv、台式计算机等固定终端。在基于hbase的数据读写方法的各个实施例中,为了便于描述,以数据读写客户端为执行主体进行阐述各个实施例。所述数据读写客户端即上文所述的数据读写设备,基于hbase的数据读写方法包括:步骤s10,当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据。当数据读写客户端接收到在hbase集群中写入数据的写入请求后,数据读写客户端获取写入请求对应的待写入数据。其中,写入请求可由用户根据具体需要而触发,如当用户在其所持终端中触发一个支付请求时,与用户所持终端存在通信连接的数据读写客户端会接收到写入与支付请求对应待写入数据的写入请求,此时,支付请求对应的待写入数据可为触发支付请求对应资金的支出账户,接收该资金的接收账户,以及该资金的金额和支付时间等。进一步地,为了保证在主hbase集群和备用hbase集群中成功写入待写入数据,在获取到待写入数据时,将待写入数据存储至预设数据库中,其中,预设数据库包括但不限于tdsql(tencentdistributedmysql,腾讯分布式数据库)、mysql(关系型数据库管理系统)和orcal(数据库的体系结构)。其中,mysql是一个关系型数据库管理系统,mysql是最流行的关系型数据库管理系统之一,在web应用方面,mysql是最好的rdbms(relationaldatabasemanagementsystem,关系数据库管理系统)应用软件。步骤s20,在检测到主hbase集群处于异常状态时,将所述待写入数据写入到本地磁盘和备用hbase集群中,并检测所述主hbase集群是否从所述异常状态转变为正常状态。当获取到待写入数据后,数据读写客户端检测主hbase集群是否处于异常状态。若检测到主hbase集群处于异常状态,数据读写客户端则将待写入数据写入到本地磁盘中,以及将待写入数据写入备用hbase集群中。其中,本地磁盘(localdisk)是指安装于同一台计算机主板上,不可随意插拔、移动的磁盘(硬盘),一般包括计算机操作系统所在分区及其他分区。在本发明实施例中,可存在至少一个备用hbase集群。在检测到主hbase集群处于异常状态后,数据读写客户端检测主hbase集群是否已从异常状态转变为正常状态。进一步地,数据读写客户端检测主hbase集群是否处于异常状态的过程为:获取主hbase集群的状态标识,若主hbase集群的状态标识为异常标识,则确定主hbase集群处于异常状态;若主hbase集群的状态标识为正常标识,则确定主hbase集群处于正常状态。在本发明实施例中,不限制状态标识的表现形式,如异常标识可设置为“00”,正常标识可设置为“11”;或者将正常标识设置为“true”,将异常标识设置为“false”。需要说明的是,当主hbase集群的zookeeper进程挂掉或者分区重组等时,可能会导致主hbase集群宕机,从而导致主hbase集群异常。进一步地,将待写入数据写入主hbase集群过程中,若检测到待写入数据写入主hbase集群中超时,则确定主hbase集群处于异常状态;若检测到待写入数据写入主hbase集群中未超时,则确定主hbase集群处于正常状态。具体地,当数据读写客户端在预设时间段内没有接收到主hbase集群发送的写入成功消息时,数据读写客户端确定主hbase集群处于异常状态;当数据读写客户端在预设时间段内接收到主hbase集群发送的写入成功消息时,数据读写客户端确定主hbase集群处于正常状态,其中,预设时间段可根据具体需要而设置,如可设置为0.5秒、2秒或者3秒等。进一步地,在检测到待写入数据写入主hbase集群中超时,和/或检测到主hbase集群的状态标识为异常标识时,可确定主hbase集群处于异常状态。数据读写客户端检测主hbase集群是否已从异常状态转变为正常状态的过程为:在主hbase集群中执行删除数据、修改数据和/或查找数据的操作指令,若成功执行该操作指令,则确定主hbase集群已从异常状态转变为正常状态;若未能成功执行该操作指令,则确定主hbase集群还处于异常状态。如当在主hbase集群中成功删除数据时,可确定主hbase集群已从异常状态转变为正常状态;当在主hbase集群中不能成功删除数据时,可确定主hbase集群还处于异常状态。进一步地,在将待写入数据写入本地磁盘过程中,为了提高写入速率,按照获取待写入数据的获取顺序,将各个待写入数据组合成一个个固定大小的文件写入到本地磁盘中。其中,固定大小可根据具体需要而设置,如可设置为20m(兆)、8m或者25m等。如若存在10个数据,固定大小为8m时,若前面3个数据的大小为8m,中间的4个数据的大小为8m,后面的3个数据的大小为8m,则将前面3个数据组合成一个a1文件,将中间的4个数据组合成一个a2文件,将后面的3个数据组合成一个a3文件,并先将a1文件写入本地磁盘中,然后将a2文件写入本地磁盘中,最后将a3文件写入本地磁盘中。进一步地,为了保证成功将待写入数据写入hbase集群中,在将待写入数据写入备用hbase集群中时,也可检测备用hbase集群是否处于异常状态。步骤s30,若检测到所述主hbase集群从所述异常状态转变为所述正常状态,则从所述本地磁盘中获取所述待写入数据写入所述主hbase集群中。若检测到主hbase集群已从异常状态转变为正常状态,数据读写客户端则调用写入线程,通过写入线程从本地磁盘中获取待写入数据写入主hbase集群中,以保证备用hbase集群和主hbase集群中的数据一致性。进一步地,若检测到主hbase集群还处于异常状态,数据读写客户端则继续检测主hbase集群是否已从异常状态转变为正常状态。进一步地,为了提高数据的写入速率,所述基于hbase的数据读写方法还包括:步骤a,在检测到所述主hbase集群处于正常状态时,则调用异步线程,通过所述异步线程将所述待写入数据写入所述主hbase集群中。进一步地,当数据读写客户端检测到主hbase集群处于正常状态时,数据读写客户端调用异步线程,通过该异步线程将待写入数据写入主hbase集群中,以及将待写入数据写入备用hbase集群中。进一步地,若不考虑将待写入数据写入hbase集群中的写入速率,数据读写客户端也可调用同步线程,通过同步线程将待写入数据写入主hbase集群和备用hbase集群中。本实施例通过在hbase集群中写入数据过程中,当主hbase集群处于异常状态时,先将待写入数据存储至本地磁盘和备用hbase集群中,实现了将数据实时的写入hbase集群中;在主hbase集群从异常状态转变成正常状态时,将本地磁盘中存储的待写入数据写入主hbase集群中,以便于在主hbase集群处于正常状态,以实时将待写入数据写入主hbase集群中,提高了在主hbase集群中写入数据的成功率和写入效率,并保证了主hbase集群和备用hbase集群中存储数据的一致性,达到了多活的目的。进一步地,提出本发明基于hbase的数据读写方法第二实施例。所述基于hbase的数据读写方法第二实施例与所述基于hbase的数据读写方法第一实施例的区别在于,参照图3,基于hbase的数据读写方法还包括:步骤s40,在检测到当前时间为数据同步时间时,通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以及将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中。当数据读写客户端检测到当前时间为预设的数据同步时间时,数据读写客户端通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以及将预设数据库中第一预设时长内存储的数据加载至主hbase集群和备用hbase集群中。其中,预设数据库为第一实施例中的预设数据库,第一预设时长可根据具体需要而设置,如可将第一预设时长可设置为一天,也可设置为3天,或者设置为每天的10点到第二天8点等。数据同步时间可根据具体需要而设置,如数据同步时间可设置为每天凌晨零点,每天早上8点,或者每个月双数日的零点,如2号、4号、6号和8号等零点。进一步地,为了保证将预设数据库中所有未加载至hive分区、主hbase集群和备用hbase集群中的数据对应加载至hive分区、主hbase集群和备用hbase集群中,在进行数据同步时,将第一预设时长设置为上次同步操作与本次同步操作之间的时间差。进一步地,为了提高将预设数据库中第一预设时长内存储的数据写入主hbase集群和备用hbase集群中的速率,所述将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中的步骤包括:步骤b,获取所述预设数据库中第一预设时长内存储的目标数据,以及获取所述主hbase集群存储的主数据和所述备用hbase集群存储的备用数据。进一步地,数据读写客户端获取预设数据库中第一预设时长内存储的数据,以及获取主hbase集群存储的数据和备用hbase集群存储的数据。在本实施例中,为了区分取预设数据库中第一预设时长内存储的数据,主hbase集群和备用hbase集群存储的数据,数据读写客户端将主hbase集群存储的数据记为主数据,将备用hbase集群存储的数据记为备用数据,将预设数据库中第一预设时长内存储的数据记为目标数据。步骤c,将所述目标数据分别与所述主数据和所述备用数据对比,确定所述目标数据中与所述主数据不同的第一数据,以及确定所述目标数据中与所述备用数据不同的第二数据。步骤d,将所述第一数据写入至所述主hbase集群中,以及将所述第二数据写入至所述备用hbase集群中。当获取到目标数据、主数据和备用数据后,数据读写客户端将目标数据分别与主数据和备用数据进行对比,以确定目标数据中与主数据不同的数据,以及确定目标数据中与备用数据不同的数据。在本实施例中,将目标数据中与主数据不同的数据记为第一数据,将目标数据中与备用数据不同的数据记为第二数据。具体地,每个数据都存在对应的数据标识,通过对比目标数据和主数据的数据标识,以及对比目标数据和备用数据的数据标识,即可确定第一数据和第二数据。在数据读写客户端确定第一数据和第二数据后,数据读写客户端将第一数据写入主hbase集群中,以及将第二数据写入备用hbase集群中,以避免相同的数据在主hbase集群和备用hbase集群中重复写入,节省了主hbase集群和备用hbase集群的存储空间。进一步地,为了提高在主hbase集群和备用hbase集群写入数据的写入速率,在数据读写客户端确定第一数据和第二数据后,数据读写客户端将第一数据批量写入主hbase集群中,以及将第二数据批量写入备用hbase集群中。如数据读写客户端可一次性将10条,或者20条第一数据写入主hbase集群中。需要说明的是,在本发明实施例中不限制步骤s40与步骤s10、步骤s20、步骤s30之间的执行先后顺序,可先执行步骤s40,然后再执行步骤s10、步骤s20和步骤s30,也可先执行步骤s10,然后执行步骤s40,最后执行步骤s20和步骤s30。本实施例通过在检测到当前时间为数据同步时间时,通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以便于对预设数据库中存储的数据进行归档;以及将预设数据库中第一预设时长内存储的数据加载至主hbase集群和备用hbase集群中,以保证主hbase集群和备用hbase集群中数据的完整性,以及主hbase集群和备用hbase集群中数据的一致性。进一步地,提出本发明基于hbase的数据读写方法第三实施例。所述基于hbase的数据读写方法第三实施例与所述基于hbase的数据读写方法第一或第二实施例的区别在于,参照图4,基于hbase的数据读写方法还包括:步骤s50,若侦测到读取数据的读取请求,则根据所述读取请求在所述主hbase集群中读取数据,并检测在所述主hbase集群是否成功读取到所述读取请求对应的数据。数据读写客户端检测是否侦测到读取数据的读取请求。若数据读写客户端侦测到读取数据的读取请求,数据读写客户端则根据该读取请求在主hbase集群中读取数据,并检测在主hbase集群中是否成功读取到该读取请求对应的数据。进一步地,所述检测在所述主hbase集群是否成功读取到所述读取请求对应的数据的步骤包括:步骤e,检测是否在第二预设时长内接收到所述读取请求对应的数据。步骤f,若在所述第二预设时长内接收到所述读取请求对应的数据,则确定在所述主hbase集群中成功读取到所述读取请求对应的数据。步骤g,若在所述第二预设时长内未接收到所述读取请求对应的数据,则确定在所述主hbase集群中没有成功读取到所述读取请求对应的数据。进一步地,数据读写客户端检测在主hbase集群中是否成功读取数据的步骤包括:检测是否在第二预设时长内接收到读取请求对应的数据。若检测到第二预设时长内接收到读取请求对应的数据,则确定在主hbase集群中成功读取到读取请求对应的数据;若检测到在第二预设时长内未接收到读取请求对应的数据,则确定在主hbase集群中没有成功读取到读取请求对应的数据。其中,第二预设时长可根据具体需要而设置,在本发明实施例中不限制第二预设时长的具体大小。检测主hbase集群是否处于异常状态的过程已在第一实施例中详细描述,在本实施例不再详细赘述。可以理解的是,当数据读写客户端调用读取线程在主hbase集群中读取数据过程中,读取线程调用失败,和/或主hbase集群处于异常状态时,都会导致在主hbase集群中不能成功读取到读取请求对应的数据。步骤s60,若在所述主hbase集群中未能成功读取到所述读取请求对应的数据,则在所述备用hbase集群中读取所述读取请求对应的数据,并检测在所述备用hbase集群中是否成功读取到所述读取请求对应的数据。步骤s70,若在所述备用hbase集群中未能成功读取到所述读取请求对应的数据,则从预设数据库中读取所述读取请求对应的数据。若检测到在主hbase集群中未能成功读取到读取请求对应的数据,数据读写客户端则在备用hbase集群中读取该读取请求对应的数据,并检测在备用hbase集群中是否成功读取到读取请求对应的数据。若在备用hbase集群中未能成功读取到读取请求对应的数据,数据读写客户端则从预设数据库中读取该读取请求对应的数据。进一步地,当数据读写客户端从预设数据库中未能成功读取到该读取请求对应的数据后,数据读写客户端则输出空值,以根据该空值提示读取请求对应用户,数据读取失败;当数据读写客户端从主hbase集群、备用hbase集群或预设数据库中读取到读取请求对应的数据后,数据读写客户端输出所读取的读取请求对应的数据,以便于读取请求对应的用户查看所读取到的数据。需要说明的是,在本发明实施例中不限制步骤s10、步骤s20、步骤s30、步骤s50、步骤s60和步骤s70之间的执行先后顺序,可先执行步骤s50、步骤s60和步骤s70,然后再执行步骤s10、步骤s20和步骤s30,也可先执行步骤s10,然后执行步骤s50、步骤s60和步骤s70,最后执行步骤s20和步骤s30。本实施例通过在侦测到读取数据的读取请求时,根据读取请求在主hbase集群中读取数据,若在主hbase集群未能成功读取到读取请求对应的数据,则在备用hbase集群中读取该读取请求对应的数据;若在备用hbase集群中未能成功读取到读取请求对应的数据,则从预设数据库中读取该读取请求对应的数据,提高了数据读取的成功率。进一步地,提出本发明基于hbase的数据读写方法第四实施例。所述基于hbase的数据读写方法第四实施例与所述基于hbase的数据读写方法第三实施例的区别在于,基于hbase的数据读写方法还包括:步骤h,检测预设数据库中存储的数据的存储时长是否大于预设存储时长。步骤i,若检测到所述存储时长大于预设存储时长,则删除所述预设数据库中所述存储时长大于预设存储时长对应的数据。数据读写客户端实时或者定时检测预设数据库中存储的数据的存储时长是否大于预设存储时长。其中,预设存储时长可根据具体需要而设置,如可将预设存储时长设置为5天、7天或者10天等。在本发明实施例中,不限制定时对应的时长。当将某个数据存储至预设数据库中时,记录该数据的存储时间,并获取当前时间,计算当前时间和存储时间之间的时间差,该时间差即为该数据的存储时长。若检测到存储时长大于预设存储时长,数据读写客户端则删除预设数据库中存储时长大于预设存储时长对应的数据;若检测到存储时长小于或者等于预设存储时长,数据读写客户端则继续检测预设数据库中存储的数据的存储时长是否大于预设存储时长。如当检测预设数据库中存储的a、b、e和g的存储时长大于预设存储时长时,数据读写客户端删除预设数据库中的a、b、e和g。需要说明的是,预设数据库中存储的数据是以热数据的形式存储的。本实施例通过在检测到预设数据库中存储的数据的存储时长大于预设存储时长时,删除预设数据库中存储时长大于预设存储时长对应的数据,以节省预设数据库的存储空间。需要说明的是,相对于mysql,本发明在hbase集群中读写数据响应速度快,mysql为严格的传统关系数据库,虽然能提供严格的事务管理能力,但在存储容量很受局限,当表级别达到百万行后,就会出现读写响应很慢的情况;相对于tidb,本发明能更好地与hadoop生态圈的结合。tidb兼容mysql,支持无限的水平扩展,具备强一致性和高可用性。tidb的目标是为oltp(onlinetransactionalprocessing)和olap(onlineanalyticalprocessing)场景提供一站式的解决方案,但与hadoop生态圈较难结合。此外,本发明实施例还提出一种基于hbase的数据读写装置,所述基于hbase的数据读写装置可选为上述的数据读写客户端,也可选内嵌在所述数据读写客户端内,所述装置包括:获取模块,用于当接收到在hbase集群中写入数据的写入请求后,获取所述写入请求对应的待写入数据;写入模块,用于在检测到主hbase集群处于异常状态时,将所述待写入数据写入到本地磁盘和备用hbase集群中;检测模块,用于检测所述主hbase集群是否从所述异常状态转变为正常状态;所述写入模块还用于若检测到所述主hbase集群从所述异常状态转变为所述正常状态,则从所述本地磁盘中获取所述待写入数据写入所述主hbase集群中。进一步地,所述基于hbase的数据读写装置还包括:加载模块,用于在检测到当前时间为数据同步时间时,通过sqoop将预设数据库中第一预设时长内存储的数据加载至hive分区中,以及将所述预设数据库中第一预设时长内存储的数据加载至所述主hbase集群和所述备用hbase集群中。进一步地,所述加载模块包括:获取单元,用于获取所述预设数据库中第一预设时长内存储的目标数据,以及获取所述主hbase集群存储的主数据和所述备用hbase集群存储的备用数据;对比单元,用于将所述目标数据分别与所述主数据和所述备用数据对比;第一确定单元,用于确定所述目标数据中与所述主数据不同的第一数据,以及确定所述目标数据中与所述备用数据不同的第二数据;写入单元,用于将所述第一数据写入至所述主hbase集群中,以及将所述第二数据写入至所述备用hbase集群中。进一步地,所述基于hbase的数据读写装置还包括:读取模块,用于若侦测到读取数据的读取请求,则根据所述读取请求在所述主hbase集群中读取数据;所述检测模块还用于检测在所述主hbase集群是否成功读取到所述读取请求对应的数据;所述读取模块还用于若在所述主hbase集群中未能成功读取到所述读取请求对应的数据,则在所述备用hbase集群中读取所述读取请求对应的数据;所述检测模块还用于检测在所述备用hbase集群中是否成功读取到所述读取请求对应的数据;所述读取模块还用于若在所述备用hbase集群中未能成功读取到所述读取请求对应的数据,则从预设数据库中读取所述读取请求对应的数据。进一步地,所述检测模块包括:检测单元,用于检测是否在第二预设时长内接收到所述读取请求对应的数据;第二确定单元,用于若在所述第二预设时长内接收到所述读取请求对应的数据,则确定在所述主hbase集群中成功读取到所述读取请求对应的数据;若在所述第二预设时长内未接收到所述读取请求对应的数据,则确定在所述主hbase集群中没有成功读取到所述读取请求对应的数据。进一步地,所述检测模块还用于检测预设数据库中存储的数据的存储时长是否大于预设存储时长;所述基于hbase的数据读写装置还包括:删除模块,用于若检测到所述存储时长大于预设存储时长,删除所述预设数据库中所述存储时长大于预设存储时长对应的数据。进一步地,所述基于hbase的数据读写装置还包括:调用模块,用于在检测到所述主hbase集群处于正常状态时,则调用异步线程;所述写入模块还用于通过所述异步线程将所述待写入数据写入所述主hbase集群中。本发明基于hbase的数据读写装置具体实施方式与上述基于hbase的数据读写方法各实施例基本相同,在此不再赘述。此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有基于hbase的数据读写程序,所述基于hbase的数据读写程序被处理器执行时实现如上所述的基于hbase的数据读写方法的步骤。本发明计算机可读存储介质具体实施方式与上述基于hbase的数据读写方法各实施例基本相同,在此不再赘述。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1