一种基于Hadoop的海量数据实时分析处理方法

文档序号:6370908阅读:141来源:国知局
专利名称:一种基于Hadoop的海量数据实时分析处理方法
技术领域
本发明涉及云计算领域中的基于Hadoop框架的海量数据实时处理方法,更具体地,涉及在数据应用领域中,将海量数据的实时处理特性应用于数据分析与数据处理中。
背景技术
云计算已经被看做IT业的新趋势,可以粗略的定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费,可以通过Internet访问“云”中的任何资源,而不需要担心计算能力、贷款、存储、安全性和可靠性问题。
从企业角度看,日益增长的信息已经很难存储在标准关系数据库甚至数据仓库中,例如,怎样查询一个十亿行的表,怎样跨越数据中心所有服务器上的所有日志来进行一个数据查询,更为复杂的是很多数据是非结构化或者半结构话的,这就更难查询了。Hadoop是一种框架,它可以分布式地操纵大量数据,在海量数据处理上具备了很多的优势I.高容错性从设计上HDFS已经假设了各服务器节点可能宕机,或者网络可能分害I]。这些问题会导致某些服务器不可用。Hadoop通过如下手段实现了高容错性I. I心跳检测和文件复制;I. 2数据完整性检测;I. 3元数据多源备份及Log机制;I. 4集群均衡。2.高伸缩性=Hadoop集群可以从一台机器扩大到上千台机器。具备很强的应对业务变化的能力。这里的业务变化可以是几个小时之内业务量从波峰到波谷之间的转换,也可以是中长期的业务增长或者变化。3.高成熟性业界多家传统IT巨头都在Hadoop上工作,将此系统打磨得相当成熟稳定。基于Hadoop的应用,无须担忧Hadoop本身的稳定性。而且有很多相关的基于Hadoop的套件可以使用例如HBase、Hive、Zookeeper等等都可以基于Hadoop或者结合Hadoop展开运用。但是,Hadoop框架架构处理海量数据时也存在着一定的劣势,基于Hadoop的MapReduce架构以支持高容量访问为目标,反而忽略了任务处理的延迟问题,这里是一些典型的不利于实时处理的实现I. Hadoop Map Reduce架构的任务分配中心不会将信息推到服务器,而是让服务器通过心跳去申请任务。而心跳的时间间隔一般是3秒,随着服务器数增长还要增加。对实时处理的要求而言,这是相当耗费时间的工作。2. Hadoop本身是一个框架。基于框架的通用性,Map Reduce本身的代码文件集也会在HDFS (文件系统)中传递,然后到服务器上展开,通过启动新JVM进程装载并运行。这是相当耗费时间的工作。而在一个Job的运行过程中,类似的JVM进程启动停止有5、6个之多,无法适应实时处理的需求。
3. Hadoop本身是一个框架。基于框架的通用性,Map Reduce的结果也会写入HDFS中。用户只能再通过访问HDFS得到相应的结果。这又白白地耗费了一段时间。由此可见,基于以上Hadoop Map Reduce架构的特点,我们可以看出,Hadoop MapReduce适合通过批处理方式访问海量数据,但无法满足海量数据的实时处理的需求。实时商业智能建设的主要目标是支持实时决策,这就对海量数据处理的即时、快速、稳定提出了更高的要求
发明内容

本发明主要目的是基于Hadoop Map-Reduce架构中对海量数据实时性处理的特点和劣势,构建服务于商业智能软件自身的Map-Reduce框架,大大提升Hadoop平台实时运行Job的能力。完成高效信息的交换,减少实时传输和部署的时长,使整个商业智能系统对海量数据实时处理方面的能力得到一个很大的提升。更具体地,本发明涉及一种基于Hadoop的海量数据实时分析处理方法,所述方法包括1、将服务器进行联网,调配成云平台,所述云平台中至少包括Client服务器,Naming服务器,Map服务器,Reduce服务器;2、将原始数据部署到Map服务器;3、用户向Client服务器发起分析需求,当Client服务器接到客户发起的分析需求时,首先要向Naming服务器获取当前Map-Reduce状态,以便制定Job (任务);4、当Naming服务器接到Client服务器发起的获取计划需求时,根据获取到的当前的Map服务器,Reduce服务器的状态,产生一个计划表;5、当Client服务器接收到计划表后,开始生成Job (任务);6、Client服务器生成完Job (任务)后,将Reduce Task发给Reduce服务器,Map Task发给Map服务器;7、Map服务器接收到MapTask,执行该任务;8、当Reduce服务器接收到ReduceTask,执行该Task ;9、当Reduce服务器接收到Map Task返回的结果,Reduce服务器读取返回的结果里的Client Key,生成与之对应的Reduce Key,则去白板里记录已有一个MapTask完成任务了 ;KKReduce服务器将最终结果返回给Client服务器,Client服务器再将结果以可视化等方式展现给终端用户。


附图I是本发明所述的基于Hadoop的海量数据实时分析处理方法的流程图。
具体实施例方式为解决上述技术问题,本发明提供了一种基于Hadoop的海量数据实时分析处理的方法,采用的技术方案如下I.将多台服务器联网,调配成云平台。一台配置成Client服务器,一台配置成Naming服务器,一部分配置成Map服务器,一部分配置成Reduce服务器。所述Client服务器负责接收客户请求,并把分析处理需求分解,交给Map-Reduce框架处理。Client服务器自行制定Job (任务),并通知Reduce服务器和Map服务器执行Task(子任务)。所述Naming服务器负责命名工作。它知道当前有多少台Map服务器和Reduce服务器,及这些服务器的配置状况。Map服务器和Reduce服务器会定期发送各自配置情况,workload (工作量),CPU,内存等信息。所述Map服务器负责处理Map Task。它被预先部署了客户的原始数据,也被预先部署了 Map Task的代码文件集,当它接收到Client服务器发送的Map Task,可以直接执行该任务。所述Reduce服务器负责处理Reduce Task。它被预先部署了 Reduce Task的代码文件集,可以直接执行该任务。每台服务器总是开启了伺服进程,由于执行的代码文件集已经被预先部署,当接收到请求时,不用再开启/停止进程。伺服进程能够自行管理,并在线程池中执行任务。服务器之间的通讯机制采用自主研发的通讯方式。该通讯方式的特点是多路,复用,异步。通过该通讯方式提高海量数据传输交换的稳定性,减少CPU、内存的开销,提高节点间的传输效率。 2.当Client服务器接到客户发起的分析需求时,首先要向Naming服务器获取当前Map-Reduce状态,以便制定Job (任务)。3.当Naming服务器接到Client服务器发起的获取计划需求时,根据获取到的当前的Map服务器,Reduce服务器的状态,产生一个计划表。计划表包含每台服务器的配置(CPU、内存)情况,任务量,Map服务器预部署的文件信息,等等。Naming服务器把计划表返回给Client服务器。4.当Client服务器接收到计划表后,开始生成Job (任务)。该Job包含一个Client Key (票),多个 Map Task,一个 Reduce Task。Client Key是一个供消息机制使用的票。Client服务器有一个MessageBoard(消息白板)。该白板用来监听某个任务的完成状态,票就是用来注册某个任务用的唯一标识。当任务长时间没反馈,自动通知Client服务器报错。当任务执行完了,需从白板注销该票。Map Task是提供给Map服务器的子任务。该任务包含Reduce服务器的地址,需要运行的数据所对应的存储文件名,需要执行的统计任务的指令,Client Key (票),等等。Reduce Task是提供给Reduce服务器的子任务。该任务包含该Client Key (票),需要执行的统计任务的指令,Map Task的个数,等等。5. Client服务器生成完Job (任务)后,将Reduce Task发给Reduce服务器,MapTask发给Map服务器。Client服务器向可用的Reduce服务器发送Reduce Task,如果任务没有被成功送达,表示该Reduce服务器不可用,就需要找下一个Reduce服务器,直到找到可用为止,如果都不可用,返回错误提示。如果Reduce服务器可用,没宕机。Client服务器把可用Reduce服务器地址加入到Map Task,并发送给Map服务器。Cl ient服务器有自我容错的机制。如果计划表表明有五台可用的Map服务器,Client服务器只有一个MapTask,那Cli ent服务器先找优先级较高的Map服务器连接发送任务,如果该Map服务器宕机了,那就再找优先级次之的Map服务器发送任务。6.当Map服务器接收到Map Task,执行该任务。取出需要运行的数据所对应的存储文件名,通过找到文件系统找到文件,读取数据。取出需要执行的统计任务的指令,例如按照产品分组统计销售额的总和,执行该指令,获取结果。读取Reduce服务器的地址,将结果及Client Key (票)发送给Reduce服务器。7.当Reduce服务器接收到Reduce Task,执行该Task。读取Client Key,生成与之对应的Reduce Key。Reduce服务器也维护了一个Message Board(消息白板)。该白板用来监听Map Task的完成状态,票就是唯一标识。读取Map Task的个数。把Reduce Key注册到白板上,并传入Map Task的个数。假设有3个Map Task需要完成,但只返回了 2个Task的结果,当时间过长,Reduce服务器会自动通知Client服务器报错,并清除ReduceTask。如果正常时间内接收到3个Map Task的结果,也会从白板注销该票,并开始执行Reduce Task。8.当Reduce服务器接收到Map Task返回的结果,Reduce服务器读取返回的结果里的Client Key,生成与之对应的Reduce Key,去白板里记录已有一个Map Task完成任务了。当所有Map Task的结果都送达了 Reduce服务器,Reduce服务器读取所有中间结果,再取出Reduce Task上需要执行的统计任务的指令,例如按照产品分组统计销售额的总和,执行该指令,获取最终结果。 Reduce服务器将最终结果返回给Client服务器,Client服务器再将结果以可视化等方式展现给终端用户。下面结合附图I和具体实现方式对本发明进行进一步详细说明。如图I所示,将六台服务器联网,同时安装商业智能平台软件。一台Client服务器,一台配置成Naming服务器,三台Map服务器,一台Reduce服务器。I.将原始数据部署到Map服务器。通过主服务器上的数据库管理界面,连接到数据库,读取原始数据列表,再将数据列表分成3个子数据列表,分别存储到Map服务器上。例如某一销售部门的某一销售数据列表被命名为Table,包含字段为产品名,销售额,日期。通过部署,被分解成Tablel,Table2, Table3,分别存储到三台Map服务器上。这里将备份的参数设定为2,即每份数据片段会保留到两台Map服务器上。如图I所示,Tablel被存储到Map服务器A和B上;Table2被存储到Map服务器B和C上;Table3被存储到Map服务器A和C上。这个映射关系及服务器配置和当前工作量会定期汇报给Naming服务器。2.用户请求Client服务器,例如查询当年每个季度的各产品的销售额的汇总。Client服务器将商业模型转化成具体的数学计算模型,并开始制定Job (任务)。DClient服务器向Naming服务器请求任务计划,并告知要执行运算的数据列表名 Table。2) Naming服务器根据收集到的信息,准备任务计划表。通过查询,知道Table被分解成3个表Tablel,Table2, Table3。通过映射关系表,获取Tablel被存储到Map服务器A和B上,Table2被存储到Map服务器B和C上,Table3被存储到到Map服务器A和C上。通过状态表,反映出每个Map服务器的workload (工作量),CPU,内存的状态。把这些信息加入到任务计划表中去,发送给Client服务器。3)任务计划表返回到Client服务器。Client服务器开始制定Job (任务),先生成 Client Key,再生成 Reduce Task 和 Map Taskl, Map Task2, Map Task3。4) Client服务器向Reduce服务器发送Reduce Task。如果发送不成功,返回错误提示给终端用户。如果发送成功,就把响应的Reduce服务器Host地址加入到Map Task里。5)Client服务器根据任务计划表里的映射关系和状态表,来排列优先时序表。例如Tablel被存储到Map服务器A和B上,但Map服务器B的CPU和内存配置较差,那就把Map Taskl的任务先发给Map服务器A,如果该服务器宕机了,就再发给Map服务器B。依次类推,Map Task2与Map Task3也发送到合适的Map服务器上。6)Map服务器收到Map Task后执行任务,并把结果发送到Reduce服务器上。7)当Reduce服务器收到3个Map服务器发送的统计结果,Reduce服务器开始执行ReduceTask,统计计算出最终结果。8)Reduce服务器把最终结果发给Client服务器。Client服务器接收到结果,并将结果用可视化的形式呈现给用户。虽然附图和前述说明给出了本发明的实施例。但可以理解的是,本领域技术人员将理解可以将这种组件中的一个或多个组件很好地组合成单个功能组件。在替换方案中, 特定的组件可以分成多个功能组件,或反之。同时,本发明的范围并不受这些特定实例的限制。多种变化都是可能的,例如结构等上的差异,而无论其是否在说明书中被清晰地给出。本发明的范围至少与所附权利要求给出的范围一样宽。
权利要求
1. 一种基于Hadoop的海量数据实时分析处理方法,所述方法包括 1、将服务器进行联网,调配成云平台,所述云平台中至少包括=Client服务器,Naming服务器,Map服务器,Reduce服务器; 2、将原始数据部署到Map服务器; 3、用户向Client服务器发起分析需求,当Client服务器接到客户发起的分析需求时,首先要向Naming服务器获取当前Map-Reduce状态,以便制定Job ; 4、当Naming服务器接到Client服务器发起的获取计划需求时,根据获取到的当前的Map服务器、Reduce服务器的状态,产生一个计划表; 5、当Client服务器接收到计划表后,开始生成Job; 6、Client服务器生成完Job后,将ReduceTask发给Reduce服务器,Map Task发给Map服务器; 7、当Map服务器接收到MapTask时,执行该任务; 8、当Reduce服务器接收到ReduceTask时,执行该任务; 9、当Reduce服务器接收到MapTask返回的结果,Reduce服务器读取返回的结果里的Client Key,生成与之对应的Reduce Key,并去白板里记录已有ー个Map Task完成任务; 10、Reduce服务器将最終結果返回给Client服务器,Client服务器再将所述结果以可视化方式展现给終端用户。
2.根据权利要求I的基于Hadoop的海量数据实时分析处理方法,其中所述的服务器共有六台,分别被配置成一台Client服务器,一台Naming服务器,三台Map服务器,一台Reduce服务器。
3.根据权利要求I或2的基于Hadoop的海量数据实时分析处理方法,其中所述Naming服务器负责命名工作,其知道当前有多少台Map服务器和Reduce服务器,及这些服务器的配置状况;此外,所述Map服务器和Reduce服务器会定期发送各自配置情况信息。
4.根据权利要求I或2的基于Hadoop的海量数据实时分析处理方法,其中所述每台服务器均开启了伺服进程,由于执行的代码文件集已经被预先部署,当接收到请求吋,不用再开启/停止进程;且所述伺服进程能够自行管理,并在线程池中执行任务服务器之间的通o
5.根据权利要求I或2的基于Hadoop的海量数据实时分析处理方法,其中所述计划表包含每台服务器的配置情况、任务量、Map服务器预部署的文件信息。
6.根据权利要求I或2的基于Hadoop的海量数据实时分析处理方法,其中所述Client服务器向可用的Reduce服务器发送Reduce Task,如果任务没有被成功送达,表示该Reduce服务器不可用,就需要找下ー个Reduce服务器,直到找到可用的为止,如果都不可用,返回错误提示;如果所述Reduce服务器可用,则没宕机,且所述Client服务器把可用Reduce服务器地址加入到Map Task,并发送给Map服务器。
全文摘要
本发明涉及一种基于云平台的海量数据通讯系统,所述系统包括多台机器,对其进行联网以调配成云平台,所述云平台至少包括主服务器,Map服务器,Reduce服务器;其中通过所述主服务器上的数据库管理界面,连接到数据库,读取原始数据列表,再将数据列表存储到Map服务器上;当所述Map服务器执行完任务,并计算出中间结果,需要将该中间结果发送给所述Reduce服务器;当所述Reduce服务器执行完任务,将最终结果发送给所述主服务器;所述主服务器接收最终结果,并用可视化的形式呈现给用户。
文档编号G06F17/30GK102761602SQ20121018139
公开日2012年10月31日 申请日期2012年6月5日 优先权日2012年6月5日
发明者包丽霞 申请人:北京永洪商智科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1