一种基于Hadoop的大数据实时处理系统的制作方法

文档序号:11155595阅读:298来源:国知局
一种基于Hadoop的大数据实时处理系统的制造方法与工艺

本发明涉及计算机技术领域,具体涉及一种基于Hadoop的大数据实时处理系统。



背景技术:

随着信息化的发展,企业要处理的数据呈爆炸式的增长,数据量都达到了超大规模(例如从TB级到PB级),由此带来了一系列的问题。数据量的增多,系统的负载越来越大,数据的入库和查询性能随之下降。在不增加硬件成本的情况下,如何发挥系统的最大性能,使入库和查询的速度最快,是许多企业面临的难题。

云计算的出现为海量数据处理提供了有效地解决途径,在通常的云计算解决方案中存在基于Hadoop的框架设计,Hadoop中包括:分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。通过Hadoop的HDFS可以方便的实现海量数据存储,同时有效防止单点故障,避免不必要的损失。但是,在HDFS上进行数据检索时,常用的方法是开启全局搜索MapReduce,即需要进行大规模数据的并行运算,这需要完整过滤一遍HDFS上存储的所有数据。在云计算中,尤其是海量数据的情况下,现有技术中在HDFS上使用MapReduce进行全局搜索会对系统资源造成巨大的浪费,耗费大量的时间。



技术实现要素:

本发明的目的在于提供一种基于Hadoop的大数据实时处理系统,用于提高数据查询的效率,快速响应客户端的查询请求。

为了达到上述目的,本发明采用这样的如下技术方案:

本发明提供一种基于Hadoop的大数据实时处理系统,所述基于Hadoop的大数据实时处理系统包括:客户端、实时传输中间件、分布式文件系统HDFS,其中,

所述HDFS包括:控制节点namenode和多个数据节点datanode;

所述控制节点,用于在所述多个数据节点上启动多线程,实时的创建需要入库的多个数据分别对应的索引,并将多个索引按照创建时间保存在多个索引文件中;

所述客户端,用于通过所述实时传输中间件向所述HDFS发送数据获取get请求;

所述实时传输中间件,用于将所述客户端发送的数据获取请求转发给所述控制节点;

所述控制节点,用于根据所述客户端发送的数据获取请求创建查询任务,所述查询任务包括:目标数据所满足的查询条件,所述查询条件包括:查询时间条件;根据所述查询条件中的查询时间条件和所述多个索引文件进行匹配,筛选出满足所述查询时间条件的索引条件;将所述查询任务分发到所述多个数据节点上,根据所述筛选出的索引文件和所述查询条件查询所述多个数据节点,从而得到满足所述查询条件的数据的位置;再次向所述多个数据节点分发所述查询任务,根据所述满足所述查询条件的数据的位置在所述多个数据节点上读取数据,当所述多个数据节点中任何一个数据节点查询成功时,返回查询结果;

所述实时传输中间件,用于按照预置的轮询周期轮询查询结果目录,如果所述查询结果目录不为空,则读取所述查询结果目录中的查询结果文件并返回给客户端;

所述客户端,用于通过所述实时传输中间件实时的获取到所述查询结果文件。

采用上述技术方案后,本发明提供的技术方案将有如下优点:

本发明实施例提供的基于Hadoop的大数据实时处理系统中,可以实现对大数据实时处理,在大数据实时处理系统中可以实现数据的入库,查询,传输都是并发的,且是实时的。本发明实施例中在创建查询任务的同时,进行过滤索引,过滤索引的同时可以将过滤完的索引文件分发到datanode上面,同时datanode完成本地文件的查询,并向客户端返回查询结果。并且本发明实施例中任何datanode的查询完成,都可以通过实时传输中间件的周期轮询机制快速的向客户端返回查询结果。本发明实施例中,在HDFS内的数据查询处理过程都是并发执行的,最大限度的利用了计算机的硬件设备,使查询达到了实时完成,极大地提高了查询的效率,用户执行查询操作时便能获得查询结果,提高数据查询的效率,快速响应客户端的查询请求。

附图说明

图1为本发明实施例提供一种基于Hadoop的大数据实时处理系统的组成结构示意图;

图2为本发明实施例提供基于jetty的查询流程示意图。

具体实施方式

本发明实施例提供了一种基于Hadoop的大数据实时处理系统,用于提高数据查询的效率,快速响应客户端的查询请求。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

以下分别进行详细说明。

本发明基于Hadoop的大数据实时处理系统的一个实施例,可以实现在分布式系统基础架构上完成数据的快速实时查询。本发明实施例可以克服现有技术中的云计算解决方案中常用数据处理方法会造成系统资源浪费,数据处理时间长的缺点,提供一种有效的海量数据实时处理方法。本发明实施例中数据的入库,查询,传输都是并发的、实时的。请参阅图1所示,本发明提供的基于Hadoop的大数据实时处理系统,包括:客户端、实时传输中间件、分布式文件系统(Hadoop Distributed File System,HDFS),其中,

HDFS包括:控制节点(namenode)和多个数据节点(datanode);

控制节点,用于在多个数据节点上启动多线程,实时的创建需要入库的多个数据分别对应的索引,并将多个索引按照创建时间保存在多个索引文件中;

客户端,用于通过实时传输中间件向HDFS发送数据获取get请求;

实时传输中间件,用于将客户端发送的数据获取请求转发给控制节点;

控制节点,用于根据客户端发送的数据获取请求创建查询任务,查询任务包括:目标数据所满足的查询条件,查询条件包括:查询时间条件;根据查询条件中的查询时间条件和多个索引文件进行匹配,筛选出满足查询时间条件的索引条件;将查询任务分发到多个数据节点上,根据筛选出的索引文件和查询条件查询多个数据节点,从而得到满足查询条件的数据的位置;再次向多个数据节点分发查询任务,根据满足查询条件的数据的位置在多个数据节点上读取数据,当多个数据节点中任何一个数据节点查询成功时,返回查询结果;

实时传输中间件,用于按照预置的轮询周期轮询查询结果目录,如果查询结果目录不为空,则读取查询结果目录中的查询结果文件并返回给客户端;

客户端,用于通过实时传输中间件实时的获取到查询结果文件。

本发明实施例中,基于Hadoop实现HDFS,HDFS有高容错性的特点,HDFS可以提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序,HDFS放宽了POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

其中,实时传输中间件设置在客户端和HDFS之间,客户端和HDFS之间的交互通过实时传输中间件来完成,例如查询请求的转发和查询结果的转发等。在本发明的一些实施例中,实时传输中间件,具体为:使用jetty作为网络(web)容器。jetty是一个开源的servlet容器作为web容器,它为基于Java的web容器,例如JSP和servlet提供运行环境,servlet(server applet),全称Java Servlet,用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态Web内容。

在本发明实施例中,HDFS内包括有控制节点和多个数据节点,数据节点是数据存储单元,底层接口传输过来的需要可以存储在数据节点上,当客户端需要从HDFS读取数据时,可以从HDFS内的数据节点上读取到。本发明实施例中的控制节点可以分为主控制节点和备控制节点,从而通过主备模式保证HDFS能够及时响应客户端的请求。本发明实施例中,HDFS内的多个数据节点执行查询任务是独立的,各个数据节点查询反馈也是独立实现,只要有任何数据节点查询完成,都可以通过实时传输中间件向客户端反馈查询结果,不需要所有数据节点查询完毕后再统一反馈查询结果,因此具有很高的数据查询效率。

本发明实施例提供的基于Hadoop的大数据实时处理系统中,可以实现对大数据实时处理,在大数据实时处理系统中可以实现数据的入库,查询,传输都是并发的,且是实时的。本发明实施例中在创建查询任务的同时,进行过滤索引,过滤索引的同时可以将过滤完的索引文件分发到datanode上面,同时datanode完成本地文件的查询,并向客户端返回查询结果。并且本发明实施例中任何datanode的查询完成,都可以通过实时传输中间件的周期轮询机制快速的向客户端返回查询结果。本发明实施例中,在HDFS内的数据查询处理过程都是并发执行的,最大限度的利用了计算机的硬件设备,使查询达到了实时完成,极大地提高了查询的效率,用户执行查询操作时便能获得查询结果,提高数据查询的效率,快速响应客户端的查询请求。

在本发明的一些实施例中,控制节点,具体用于按照B+树的结构实时的创建需要入库的多个数据分别对应的索引;以及,

控制节点,具体用于根据筛选出的索引文件和查询条件通过B+树查询多个数据节点,从而得到满足查询条件的数据的位置。

其中,本发明实施例中基于Hadoop的大数据实时处理系统可以实现数据的实时入库。以现有的HDFS为基础,在每台datanode上启动多线程创建索引,并行创建索引文件。对一些重要字段建立索引,以B+树的结构生成,每一条新的记录只需要插入到B+树中。B+树的插入仅在叶结点上进行。每插入一个(关键码-指针)索引项后都要判断结点中的子树棵数是否超出范围。当插入后结点中的子树棵数大于m(B+树的阶数)时,需要将叶结点分裂为两个结点。它们的双亲结点中应同时包含这两个结点的最大关键码和结点地址。此后,问题归于在非叶结点中的插入了。在非叶结点中关键码的插入与叶结点的插入类似,非叶结点中的子树棵数的上限为m,超出这个范围也要进行结点分裂。在做根结点分裂时,因为没有双亲结点,就必须创建新的双亲结点,作为树的新根。

在本发明的一些实施例中,客户端,还用于继续向HDFS发送数据获取继续请求;

HDFS,还用于通过控制节点响应据获取继续请求,从多个数据节点中启动多线程获取数据获取继续请求对应的查询结果;

实时传输中间件,还用于按照预置的轮询周期读取到数据获取继续请求对应的查询结果,并返回给客户端。

本发明实施例中,实时传输中间件可以使用jetty作为web容器,在HDFS上做数据查询的同时,jetty轮循查询结果目录,如果不为空,则读取查询结果文件并返回给客户端。客户端继续向HDFS端发送数据获取继续(continue)请求,控制节点启动多线程读取查询结果,通过jetty将读取到的查询结果返回给客户端,如果返回的读取数据为空,流程结束,如果不为空,客户端继续发送continue请求。查询过程中,任何datanode查询成功,即向客户端返回数据,不需要所有datanode查询完成。

如图2所示,为发明实施例中jetty的查询流程图,使用jetty作为web容器,首先客户端向HDFS端发送get请求,控制节点端解析json串,json是一种轻量级的数据交换格式,根据json串中的查询条件实例化job对象,提交job进行分布式查询,最后返回结果。在HDFS上做查询的同时,jetty轮循查询结果目录,如果不为空,则读取文件并返回给客户端,客户端继续向HDFS端发送continue请求,控制节点端启动多线程读取查询结果,将读取数据返回给客户端。如果查询结果为空并且HDFS上的查询已经结束,则返回空,流程结束。在其中任何一个步骤,若产生失败则返回,例如异常、请求错误、索引文件夹不存在等情况。

在本发明的一些实施例中,客户端,还用于实时传输中间件发送结束请求;

实时传输中间件,还用于接收到客户端发送的结束请求之后,停止轮询查询结果目录。

其中,若客户端向实时传输中间件发送结束请求,则实时传输中间件不再向客户端返回查询结果,从而实现对客户端的及时响应,减少对传输资源的占用,提高资源使用效率。

在本发明的一些实施例中,控制节点,具体用于得到满足查询条件的数据的位置之后,根据满足查询条件的数据的位置确定目标数据所在数据节点的互联网协议IP地址和偏移量,根据IP找到存储目标数据的数据节点,再根据偏移量从存储目标数据的数据节点中查找到目标数据。

本发明实施例中基于Hadoop的大数据实时处理系统可以实现实时查询:使用分布式计算系统,在控制节点端创建并提交查询任务(job)进行查询,查询分为如下过程:首先在控制节点上进行索引过滤,由于索引文件的名称是按照时间创建的,根据查询条件中的查询时间条件和索引文件的名称进行匹配,筛选满足条件的索引文件。将查询任务分发到每台datanode上,根据筛选出的索引文件和查询条件通过B+树查询,得到满足条件的数据的位置,再次进行任务的分发,根据上一步得到的数据的位置在每台机器上读取数据,并返回查询结果。高效B+结构和查询的并行执行,使查询达到了实时完成。其中,数据的位置记录了存储数据所在机器(datanode)的IP地址和偏移量,根据IP地址找到机器,再根据偏移量就能找到对应的数据。

在本发明的一些实施例中,查询时间条件,包括:查询开始时间和查询结束时间,其中,查询条件中必须有查询时间条件,即可以获取客户端设置的查询开始时间和查询结束时间,从而可以按照客户端的数据获取请求来执行查询任务,按照该查询开始时间启动查询任务,按照该查询结束时间结束查询任务。

本发明实施例中所有处理都是并发执行的,最大限度的利用了计算机的硬件设备,极大地提高了处理效率。使用户执行查询操作时便能获得查询结果。本发明包括数据的实时入库,实时查询,实时结果传输,数据的入库,查询,传输都是并发的、实时的。本发明实施例提供的大数据实时处理系统中,数据的入库,查询,传输都是并发的,实时的。在创建任务的同时,进行过滤索引,过滤索引的同时,将过滤完的索引文件分发到datanode上面,同时datanode完成本地文件的查询,并向客户端返回数据。任何datanode的查询完成,即向用户返回查询结果。本发明方法处理过程都是并发执行的,最大限度的利用了计算机的硬件设备,高效B+结构和查询的并行执行,使查询达到了实时完成,极大地提高了查询的效率,用户执行查询操作时便能获得查询结果。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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