一种实现大数据实时处理的方法

文档序号:6375645阅读:1073来源:国知局
专利名称:一种实现大数据实时处理的方法
技术领域
本发明涉及计算机应用系统领域,具体涉及ー种涉及海量数据实时处理的方法。
背景技术
随着信息化的发展,企业要处理的数据爆炸式的增长,数据量都达到了 TB级,PB级,由此带来了一系列的问题。数据量的增多,系统的负载越来越大,数据的入库和查询性能随之下降。在不增加硬件成本的情况下,如何发挥系统的最大性能,使入库,查询速度最快,是许多企业面临的难题。云计算的出现为海量数据处理提供了有效地解决途径,在通常的云计算解决方案中,通过Hadoop (—种分布式系统基础架构)的HDFS (—种分布式文件系统)可以方便的实现海量数据存储,同时有效防止单点故障,避免不必要的损失。但是,在HDFS上进行数据检索时,常用的方法是开启全局捜索MapReduce (大規模数据并行运算),这需要完整过滤一遍·HDFS上存储的所有数据。在云计算中,尤其是在海量数据情况下,这样做会对系统资源造成巨大的浪费,耗费大量的时间,这显然不是一个适合投入现实生产环境的方式。

发明内容
本发明的目的在于克服现有云计算解决方案中常用数据处理方法会造成系统资源浪费,数据处理时间长的缺点,提供一种有效的海量数据实时处理方法。本发明的实现大数据实时处理方法,其数据的入库,查询,传输都是并发的,实时的
(1)实时入库以现有的HDFS为基础,在每台datanode(数据节点)上启动多线程创建索引,并行创建索引文件,索引的创建以B+树的结构生成;
(2)实时查询使用分布式计算系统,在服务器端创建并提交job(任务)进行查询,查询分为三步
A.namenode (控制节点)上进行索引过滤,由于索引文件名是按照时间创建的,根据查询条件中的时间和索引文件名匹配,筛选满足条件的索引文件;
B.将任务分发到每台datanode上,根据筛选出的索引文件和查询条件通过B+树查询,得到满足条件的数据的位置;
C.再次进行任务的分发,根据上一歩得到的数据的位置在每台机器上读取数据,并返回查询结果;
(3)实时结果传输使用jetty(—个开源的servlet容器)作为web容器,在HDFS上做数据查询的同吋,jetty轮循查询结果目录,如果不为空,则读取查询结果文件并返回给客户端,客户端继续向服务器端发送continue (继续)请求,服务器端启动多线程读取查询结果,将读取数据返回给客户端,如果返回的读取数据为空,流程结束,如果不为空,客户端继续发送continue请求;查询过程中,任何datanode查询成功,即向客户端返回数据,不需要所有datanode查询完成。
本发明的大数据实时处理方法中,数据的入库,查询,传输都是并发的,实时的。在创建任务的同时,进行过滤索引,过滤索引的同时,将过滤完的索引文件分发到datanode上面,同时datanode完成本地文件的查询,并向客户端返回数据。任何datanode的查询完成,即向用户返回查询结果。本发明方法处理过程都是并发执行的,最大限度的利用了计算机的硬件设备,高效B+结构和查询的并行执行,使查询达到了实时完成,极大地提高了查询的效率,用户执行查询操作时便能获得查询結果。


图I是基于B+树的字段索引不意 图2是jetty的查询流程 图3是数据的查询传输流程图。
具体实施例方式下面结合附图对本发明的技术方案进行详细说明
本发明的所有处理都是并发执行的,最大限度的利用了计算机的硬件设备,极大地提高了处理效率。使用户执行查询操作时便能获得查询結果。本发明包括数据的实时入库,实时查询,实时结果传输,数据的入库,查询,传输都 是并发的,实时的。I.实时入库
以现有的HDFS为基础,在每台datanode上启动多线程创建索引,并行创建索引文件。索引的创建方式如图I所示
对ー些重要字段建立索引,以B+树的结构生成,每一条新的记录只需要插入到B+树中。B+树的插入仅在叶结点上进行。每插入ー个(关键码-指针)索引项后都要判断结点中的子树棵数是否超出范围。当插入后结点中的子树棵数大于m (B+树的阶数)吋,需要将叶结点分裂为两个结点。它们的双亲结点中应同时包含这两个结点的最大关键码和结点地址。此后,问题归于在非叶结点中的插入了。在非叶结点中关键码的插入与叶结点的插入类似,非叶结点中的子树棵数的上限为m,超出这个范围也要进行结点分裂。在做根结点分裂吋,因为没有双亲结点,就必须创建新的双亲结点,作为树的新根。2.实时查询
使用分布式计算系统,首先客户端向服务器端发送get请求,服务器端创建并提交job进行查询,查询分为三步
I) . namenode进行索引过滤,由于索引文件名是按照时间创建的,根据查询条件中的时间(查询条件中必须有时间条件,开始时间和结束时间)和索引文件名匹配,筛选满足条件的索引文件。2).将任务分发到每台datanode上,根据筛选出的索引文件和查询条件通过B+树查询,得到满足条件的数据的位置。数据位置记录了存储数据所在机器(datanode)的ip和偏移量,根据ip找到机器,再根据偏移量就能找到对应的数据。3).再次进行任务的分发,根据上一歩得到的数据的位置在每台机器上读取数据,并返回查询結果,将查询结果集写到本地文件中。高效B+结构和查询的并行执行,使查询达到了实时完成。3.实时结果传输
使用jetty作为web容器,在HDFS上做数据查询的同时,jetty轮循查询结果目录,如果不为空,则读取查询结果文件并返回给客户端,客户端继续向服务器端发送continue请求,服务器端启动多线程读取查询结果,将读取数据返回给客户端,如果返回的读取数据为空,流程结束,如果不为空,客户端继续发送continue请求。查询过程中,任何datanode查询成功,即向客户端返回数据,不需要所有datanode查询完成。 图2是jetty的查询流程图,图3是数据的查询传输完整流程。使用jetty作为web容器,首先客户端向服务器端发送get请求,服务器端解析json (—种轻量级的数据交换格式)串,根据json串中的查询条件实例化job对象,提交job进行分布式查询,最后返回結果。在HDFS上做查询的同吋,jetty轮循查询结果目录,如果不为空,则读取文件并返回给客户端,客户端继续向服务端发送continue请求,服务器端启动多线程读取查询结果,将读取数据返回给客户端。如果查询结果为空并且HDFS上的查询已经结束,则返回空,流程结束。
权利要求
1.ー种大数据实时处理方法,其特征在于数据的入库,查询,传输都是并发的,实时的 (1)实时入库以现有的HDFS为基础,在每台datanode上启动多线程创建索引,并行创建索引文件,索引的创建以B+树的结构生成; (2)实时查询使用分布式计算系统,在服务器端创建并提交job进行查询,查询分为~- j_hiニ少 A.namenode上进行索引过滤,由于索引文件名是按照时间创建的,根据查询条件中的时间和索引文件名匹配,筛选满足条件的索引文件; B.将任务分发到每台datanode上,根据筛选出的索引文件和查询条件通过B+树查询,得到满足条件的数据的位置; C.再次进行任务的分发,根据上一歩得到的数据的位置在每台机器上读取数据,并返回查询结果; (3)实时结果传输使用jetty作为web容器,在HDFS上做数据查询的同吋,jetty轮循查询结果目录,如果不为空,则读取查询结果文件并返回给客户端,客户端继续向服务器端发送continue请求,服务器端启动多线程读取查询結果,将读取数据返回给客户端,如果返回的读取数据为空,流程结束,如果不为空,客户端继续发送continue请求;查询过程中,任何datanode查询成功,即向客户端返回数据,不需要所有datanode查询完成。
全文摘要
本发明公开一种大数据实时处理方法,涉及计算机应用系统领域。本发明数据的入库,查询,传输都是并发的,实时的。在分发任务的同时,进行过滤索引,过滤索引的同时,将过滤完的索引文件分发到datanode上面,同时datanode完成本地文件的查询,并向客户端返回数据。任何datanode的查询完成,即向用户返回查询结果。本发明方法处理过程都是并发执行的,最大限度的利用了计算机的硬件设备,高效B+结构和查询的并行执行,使查询达到了实时完成,极大地提高了查询的效率,用户执行查询操作时便能获得查询结果。
文档编号G06F17/30GK102841944SQ201210306420
公开日2012年12月26日 申请日期2012年8月27日 优先权日2012年8月27日
发明者张真, 王磊, 陈伟, 王胤然, 杨震宇, 周亮亮 申请人:南京云创存储科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1