数据分析系统及数据分析方法

文档序号:6375667阅读:623来源:国知局
专利名称:数据分析系统及数据分析方法
技术领域
本发明涉及数据分析技术领域,尤其涉及一种数据分析系统及数据分析方法。
背景技术
近几年,由于数据在互联网领域的持续增长,各公司都面临海量数据的处理需求。部门内的数据分析主要为公司各部门运维服务,数据分析主要基于各部门的服务器(Server)产生的日志来进行分析,如apache日志、nginx日志等,目的是基于这些日志对用户访问、数据流量在时间维度、产品线维度、域名维度等有明确的量化数据,从而为公司服务器运维管理、流量分配、预估等提供建议。例如对某产品线的nginx日志进行收集,收集到日志后,需要对日志进行清洗,例如,按照每5分钟进行初步合并,并统计所有未来需要的字段数据,可能包含的有点击量、
下载数据字节。同时需要按照多个维度进行统计,如按照产品线、域名,按照产品线、服务器ip等维度进行统计,该阶段涉及的数据量很大。最终用户可以基于这些数据拿到某天详细的数据访问量曲线图,或者是某天、某小时的点击或带宽。也可以得到不同维度的下载速度数据等等。现有技术的基于关系型数据库进行数据分析的过程,通常包括以下环节日志收集、日志数据获取和初步处理、数据拆分入库、子表数据合并、数据库外聚合、数据展现等环节。具体地,数据分析服务器在接收到从日志中获取的待分析数据后,先使用数据检查脚本程序对数据进行检查及格式化处理,然后做初步处理(如5分钟清洗处理,这个环节会将每行日志合并到每个所在的5分钟中(每小时包含12个5分钟,5分钟一个分析点)),然后在此基础上再使用其他异构脚本程序做其他的中间分析,这中间需要涉及到对关系型数据库的分表、拆表及合并,同时还需要考虑关系型数据库在千万级数据量下的处理速度,从而采用对于数据库集群的均衡方案,并从不同服务器上的数据库中拉取数据再使用其他的完成指定需求的脚本程序进行聚合。经过复杂的多层处理环节,最终统计出数据,并展示数据。然而,随着网站规模及用户量的持续增长,数据量激增,现有技术的数据分析过程中通过复杂的分表、拆表、合并得出具体的分析结果,其技术实现流程复杂,需要专门的维护人员进行维护。而且,如果需要增加新的业务分析需求,则需要增加新的分析脚本,不利于扩展。综上所述,现有技术的数据分析方法,因其需要对关系型数据库进行复杂的分表、拆表、合并等操作,实现流程复杂且不易维护;并且,现有技术的数据分析方法不利于扩展新的业务分析需求。

发明内容
本发明的实施例提供了一种数据分析系统及数据分析方法,提供一种不基于关系型数据库的数据分析方法,从而简化数据分析流程,便于维护。根据本发明的一个方面,提供了一种数据分析系统,包括待调度任务生成模块,用于根据预先定义的任务参数将收集的数据生成待调度的任务;待调度任务存储模块,用于存储所述待调度任务生成模块生成的待调度的任务;任务调度模块和任务处理模块,所述任务调度模块从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理 模块;所述任务处理模块根据所述任务中的分析需求生成相应的类结构化查询语言Hive SQL语句向基于分布式计算Hadoop的数据仓库服务器发送;在接收到所述服务器返回的数据后完成对所述任务的数据分析。其中,所述任务调度模块具体包括主任务调度组件和从任务调度组件;所述主任务调度组件用于从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块;所述从任务调度组件用于在所述主任务调度组件退出运行或者无法正常运行后,从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块。进一步,所述系统还包括主优先级队列单元和从优先级队列单元;以及所述主任务调度组件还用于加载待调度的任务到调度栈后,将所述调度栈中任务执行时间到达的任务封装到优先级对象中,并将所述优先级对象发送到所述主优先级队列单元;所述主优先级队列单元用于接收到优先级对象后,将该优先级对象的优先级与所述主优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果对该优先级对象进行排序;所述从优先级队列单元用于定时保持其数据与所述主优先级队列单元中的数据
的一致。较佳地,所述从任务调度组件还用于在所述主任务调度组件退出运行或者无法正常运行后,加载待调度的任务到调度栈,将所述调度栈中任务执行时间到达的任务封装到优先级对象中,并将所述优先级对象发送到所述从优先级队列单元;所述从优先级队列单元还用于接收到优先级对象后,将该优先级对象的优先级与所述从优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果对该优先级对象进行排序。较佳地,所述系统还包括任务管理模块,用于接收定义的任务参数,并将所述任务参数发送给所述待调度任务生成模块。根据本发明的另一个方面,还提供了一种数据分析方法,包括待调度任务生成模块根据预先定义的任务参数将收集的数据生成待调度的任务后存储到待调度任务存储模块;任务调度模块从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块;所述任务处理模块根据所述任务中的分析需求生成相应的类结构化查询语言Hive SQL语句向基于分布式计算Hadoop的数据仓库服务器发送;在接收到所述服务器返回的数据后完成对所述任务的数据分析。较佳地,在所述根据加载的任务的任务类型调用相应的任务处理模块之前,还包括所述任务处理模块将加载的任务封装到任务处理线程中;以及所述调用相应的任务处理模块具体为所述任务处理线程在运行过程中根据所述任务的任务类型调用相应的任务处理模块。其中,所述任务调度模块从所述待调度任务存储模块加载待调度的任务具体为所述任务调度模块将待调度的任务加载到调度栈;以及在所述任务调度模块将加载的任务封装到任务处理线程之前,还包括所述任务调度模块监测所述调度栈中各待调度的任务的任务执行时间;从调度栈中取出任务执行时间到达的任务。较佳地,在所述从调度栈中取出任务执行时间到达的任务之后,还包括所述任务调度模块将从所述调度栈中取出的任务转换为任务实例,并将转换的任务实例封装为优先级对象,该优先级对象的优先级是根据该任务的任务属性确定的;所述任务调度模块将所述优先级对象发送到优先级队列模块;所述优先级队列模块在接收到优先级对象后,根据该优先级对象的优先级与所述优先级队列模块中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象进行排序;所述任务调度模块从所述优先级队列模块中获取优先级最高的优先级对象;并初始化一个任务处理线程,将获取的优先级对象中的任务实例传至该任务处理线程中;以及,所述调用相应的任务处理模块具体为该任务处理线程调用与所述任务实例中的任务的任务类型相应的任务处理模块。进一步,在所述该任务处理线程调用与所述任务实例中的任务的任务类型相应的任务处理模块后,还包括所述任务调度模块若确定出所述任务实例中的任务的任务类型为顺序任务类型,则从所述待调度任务存储模块中获取跟随该任务的其它任务;所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块。其中,所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块具体包括所述任务调度模块针对所述其它任务中的每个并行任务,并行初始化携带各并行任务的任务处理线程,由各并行初始化后的任务处理线程分别调用相应的任务处理模块。或者,所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块具体包括所述任务调度模块针对跟随该任务的其它任务中的下层级任务,在该任务处理完毕后,初始化携带所述下层级任务的任务处理线程,由该任务处理线程调用相应的任务处理模块。本发明实施例由于在数据分析系统的底层利用Hadoop系统(如Hive Server中安装的基于Hadoop的组件Hive)来进行数据分析,而在数据分析系统的上层则以任务调度模块来实现对任务的统筹管理,以及提供更为人性化的、更为方便的交互管理模式,从而既可以利用Hadoop系统进行数据分析而避免了繁杂的对关系型数据库的分表、拆表、合并等操作,简化了数据分析流程,又提供了更为方便地对任务进行调度、管理的系统。


图I为本发明实施例的数据分析系统结构示意图;图2为本发明实施例的数据分析系统进行数据分析的方法流程图;图3为本发明实施例的JobPiOcessor线程在运行过程中任务处理模块所进行的处理的流程图;图4为本发明实施例的任务调度模块和优先级队列模块中的一种具体内部结构
示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。本发明的发明人考虑到利用Hadoop (分布式计算)系统来进行数据分析。Hadoop是目前最流行最成熟的海量级数据处理系统,具有极高的稳定性、扩展性、健壮性。其中,HDFS (Hadoop Distributed File System,分布式文件系统)组件可以保证数据的冗余存储,并且易于扩展。MapReduce (映射化简)组件利用易于扩展的TaskTracker (任务跟踪者)来增强对海量数据的分析能力,理论上讲分析能力可以无限扩展,特别适合离线数据的分析。可以支持海量数据的存储及分析。Hive技术使用Hive SQL(类SQL)方式来提交分析需求,其在内部可以将Hive SQL (Structured Query Language,结构化查询语言)转换成为一个或几个MR (MapReduce的简称)任务并按一定顺序提交到组件Jobtracer。类SQL的方式可以提供方便的数据集成、特殊查询以及建立在Hadoop文件上的大规模数据分析,使得分析人员无需再去写复杂的MR任务就可以完成分析需求。但是直接使用Hadoop 提供的客户端 APKApplication Program Interface,应用程序接口)开发任务,需要复杂的开发工作,不利于任务提交;同时Hadoop没有提供对任务进行统一的调度,对实现新增需求不具有扩展性,对于需求处理中任务相关的监控、优先级处理、结果数据统一处理等同样缺少支持。基于上述分析,本发明实施例提供的技术方案中,在底层以Hadoop组件(HDFS\MapReduce\Hive)为基础,构建了一种数据分析系统。如图I所示,本发明实施例的数据分析系统中包括待调度任务生成模块101、待调度任务存储模块102、任务调度模块103、任务处理模块104。本发明实施例的数据分析系统进行数据分析的方法流程,如图2所示,包括如下步骤S201 :待调度任务生成模块101根据用户定义的任务参数生成待调度的任务,并将生成的待调度的任务存储到待调度任务存储模块102中。具体地,各服务器在收集了数据后发送给待调度任务生成 模块101。待调度任务生成模块101根据用户预先定义的任务参数,将收集的数据生成待调度的任务。其中,用户定义的任务参数中包含存储路径,待调度任务生成模块101根据存储路径将生成的待调度的任务存储到待调度任务存储模块102中。待调度任务存储模块102具体可以是用以存储待调度任务生成模块101所生成的待调度的任务的数据库,该数据库可以存储在专用于存储待调度的任务的服务器中。一般而言,待调度任务存储模块102中存储的待调度的任务,其任务类型都为计划任务类型,即待调度任务存储模块102中存储的待调度的任务都为计划任务。S202 :任务调度模块103从待调度任务存储模块102中加载待调度任务。任务调度模块103从待调度任务存储模块102中获取待调度任务。较佳地,任务调度模块103从待调度任务存储模块102中加载待调度的任务到调度栈;并定时监测调度栈中各待调度的任务的任务执行时间,从调度栈中取出任务执行时间到达的任务进行调度、处理;即任务调度模块103在确定调度栈中某个待调度的任务的任务执行时间到达后,从调度栈中取出该任务,对其进行调度、处理;具体过程为任务调度模块103通过任务转换器,将该任务转换为一个具有时间特性的任务实例(jobtrace)。任务调度模块103还根据该任务的任务属性,比如任务类型、名称、运行时间,所有者等,确定该任务的优先级。事实上,对于不同的任务属性预先设置了相应的优先级,也就是说,任务属性与优先级的对应关系被预先设置,任务调度模块103根据预先设置的对应关系,确定该任务的优先级,并根据确定的优先级,将jobtrace封装为优先级对象,该优先级对象为一个可比较优先级的对象,即该优先级对象的一个属性为优先级属性;可以据此优先级属性对优先级对象进行优先级的比较。任务调度模块103还为该优先级对象生成一个唯一的对象标识(uuid标识)。上述的优先级对象实现自java中Comparable接口,其中包装了jobtrace对象,并有uuid标识及优先级属性。进一步,本发明实施例的数据分析系统中还可包括优先级队列模块105。任务调度模块103将该优先级对象发送到优先级队列模块105。优先级队列模块105在接收到优先级对象后,将该优先级对象的优先级与优先级队列模块105中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象按照优先级进行排序操作。具体地,优先级队列模块105可以根据该对象的方法public int compareTo(Object ο) {}实现优先级对象的优先级排序。S203 :任务调度模块103将获取的任务封装到任务处理(JobProcessor)线程中。较佳地,任务调度模块103从优先级队列模块105中获取优先级最高的优先级对象,并根据获取的优先级对象中的任务的任务类型调用相应的任务处理模块104进行数据分析任务调度模块103中的任务获取(JobTaker)线程,从优先级队列模块105中获取优先级最高的优先级对象,并初始化一个JobProcessor线程,将获取的优先级对象中的任务实例jobtrace传至该JobProcessor线程中,该JobProcessor线程调用任务处理模块104,从而将任务携带于JobProcessor线程中。较佳地,任务处理模块104可以是多个,多个任务处理模块104可以并行处理多个任务。并且,不同的任务处理模块104可以对应不同的任务类型。各任务处理模块直接对应不同的业务模型。在数据分析平台中,任务类型可分为load (数据加载)类型、transform(数据转换)类型、acquire (数据获取)类型等,各模型可以负责一种类型,用户可以灵活组合几种任务模型完成分析需求。在任务处理阶段,系统会根据任务所属的任务类型自动将任务发至对应的任务处理模块来处理,从而保障任务的正确处理。

JobProcessor线程在运行过程中,根据封装(携带)在其内的任务的任务类型,确定对应的任务处理模块104,并调用该任务处理模块104完成该待调度任务的处理过程。此外,任务调度模块103还可在判断出JobPiOcessor线程中的任务的任务类型为顺序任务类型后,任务调度模块103获取跟随该任务的其它任务。具体地,任务调度模块103可以直接从待调度任务存储模块102中获取跟随该任务的其它任务。任务调度模块103针对跟随该任务的每个其它任务,分别初始化一个JobProcessor线程进行携带,由各JobPiOcessor线程分别调用相应的任务处理模块进行数据分析、任务处理。具体地,任务调度模块103对于获取的跟随该任务的其它任务中、与该任务为同一层级的任务(本文简称并行任务),采用并行执行策略任务调度模块103并行初始化若干个JobProcessor线程,各并行初始化的JobProcessor线程分别携带各并行任务,由各并行初始化后的JobPiOcessor线程分别调用相应的任务处理模块104进行数据分析、任务处理。任务调度模块103对于获取的跟随该任务的其它任务中、为该任务下一层级的任务(本文简称下层级任务),采用层级序列执行策略任务调度模块103在任务处理模块104处理完毕该任务后,再初始化携带下层级任务的JobProcessor线程,由该JobProcessor线程调用相应的任务处理模块104进行数据分析、任务处理。S204 :任务处理模块104负责处理JobProcessor线程中的任务,对该任务进行数据分析。具体地,任务处理模块104接收到任务调度模块103发送的JobProcessor线程后,运行该JobProcessor线程。JobProcessor线程向Hive Server (服务器)发送相应的Hive SQL请求,任务处理模块104获得Hive Server返回数据,从而完成对该任务的数据分析处理;任务处理模块104对返回的数据进行处理,比如进行记录、统计、显示等。其中,Hive Server为基于Hadoop的数据仓库服务器。JobProcessor线程在运行过程中,任务处理模块104所进行的具体处理流程,如图3所示,包括如下步骤S301 :JobProcessor线程根据其携带的任务中的分析需求,生成相应的Hive SQL语句。S302 :JobProcessor线程调用任务处理模块104中的任务执行(Job Executor)线程,并将Hive SQL语句发送给Job Executor线程。任务处理模块104中包括有任务执行(Job Executor)线程、连接(Connector)线程和结果处理(Result Processor)线程。S303 Job Executor线程发送连接请求给Connector线程。S304 :Connector线程在接收到Job Executor线程发送的连接请求后,采用JDBC (Java Data Base Connectivity, java 数据库连接)连接技术与 Hive Server 建立连接。S305 :连接建立后,Connector线程向Job Executor线程返回可用连接。S306 Job Executor线程根据返回的可用连接向Hive Server发送Hive SQL请求。S307 :如果Job Executor线程接收到Hive Server返回的数据后,将返回的数据发送给Result Processor线程进行处理。Hive Server接收到Job Executor线程发送的执行Hive SQL的请求后,进行相应的数据分析操作,如将Hive SQL转换成为一个或几个MR任务并按一定顺序提交到MapReduce,并接收MAPREDUCE返回的数据,并将MapReduce返回的数据向Job Executor线程返回。由于Hive Server根据接收的Hive SQL请求进行数据分析,返回结果数据为本领域技术人员所熟知的技术此处不再赘述。由于Hive Server中安装有基于Hadoop的组件Hive。Hive使用类SQL方式来提交分析需求,其在内部可以将Hive SQL转换成为一个或几个MR任务并按一定顺序提交到MapReduce。类SQL的方式使得分析人员无需再去写复杂的MR任务就可以完成分析需求。而MapReduce可以根据分析需求进行数据分析,返回结果数据;从而,数据分析过程中避免了繁杂的对关系型数据库的分表、拆表、合并等操作,简化了数据分析流程,便于开发人员对系统的维护。Result Processor线程对Hive Server返回的数据进行处理,例如进行数据记录、显示、提供下载。Hive Server返回数据均是各任务最终的结果,目前为了支持数据冗余存储及良好扩展,任务数据直接存储在HDFS上。用户可以根据任务Id通过系统提供的下载接口下载数据。S308:如果Job Executor线程在设定时间段内没有接收到Hive Server返回的数据,向Connector线程返回执行失败结果;Connector线程向Job Executor线程返回不同的可用连接。如果Job Executor线程在向Hive Server发送Hive SQL请求后,在设定时间段内没有接收到Hive Server返回的数据,贝U表明任务执行失败Job Executor线程向Connector线程返回执行失败结果;Connector线程根据Job Executor线程发送的执行失败结果重新连接另外的Hive Server,在与另外的Hive Server连接成功后,向JobExecutor线程返回该另外的Hive Server的连接,即不同于上次的可用连接。进一步,本发明实施例提供的数据分析系统中还包括有服务器监控恢复模块(图中未标)。如果上述的Connector线程在与Hive Server建立连接的过程中,连接失败,则将连接失败结果发送给服务器监控恢复模块;
如果上述的Job Executor线程在向Hive Server发送Hive SQL请求后,在设定时间内没有接收到Hive Server返回的数据,贝U表明任务执行失败,JobExecutor线程将任务失败结果发送给服务器监控恢复模块。服务器监控恢复模块对接收的各种失败结果,如连接失败结果或任务失败结果,进行严重性判断;若判断为严重的失败结果,则将与该失败结果相关的Hive Server的失败次数加I ;iHive Server的失败次数达到设置的最大计数值(MaxCount),则重启该HiveServer。并且,Job Executor线程再次请求Connector线程,返回其它不同的可用连接。对于待调度任务存储模块102中的计划任务,可以采用上述S201-S204的步骤进行处理,而对于任务类型为非计划任务类型的任务,如点击类的任务,在用户点击该任务后,任务调度模块103即调度该任务执行。任务调度模块103调度该任务执行的步骤包括任务调度模块103将该任务封装到JobProcessor线程中,将JobProcessor线程发送给相
应的任务处理模块104进行任务处理。较佳地,如果在用户点击该任务后,任务调度模块103确定当前正在运行的总任务数(即通过JobPiOcessor线程发送给任务处理模块104的任务的总数)低于限额,则正常执行该任务将该任务封装到JobProcessor线程中,将JobProcessor线程发送给相应的任务处理模块104进行任务处理。否则,任务调度模块103建议用户稍后再试。为进一步保证任务调度的可靠性,较佳地,如图4所示,上述的任务调度模块103中可以包括主任务调度组件401和从任务调度组件402。在通常的情况下,由主任务调度组件401从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块进行数据分析、任务处理;如果主任务调度组件401出现意外而退出运行或者无法正常运行,则从任务调度组件402负责完成上述主任务调度组件完成的任务,即在主任务调度组件退出运行或者无法正常运行时,由从任务调度组件402从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块进行数据分析、任务处理;进一步,上述的优先级队列模块105中可以包括主优先级队列单元403和从优先级队列单元404。在通常的情况下,主任务调度组件401从所述待调度任务存储模块加载待调度的任务到调度栈后,将调度栈中任务执行时间到达的任务封装到优先级对象中,并将优先级对象发送到主优先级队列单元403 ;主优先级队列单元403接收到优先级对象后,将该优先级对象的优先级与主优先级队列单元403中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象按照优先级进行排序。从优先级队列单元则定时保持其数据与主优先级队列单元中的数据的一致性。主任务调度组件401从主优先级队列单元403中获取优先级最高的优先级对象,根据获取的优先级对象中的任务的任务类型调用相应的任务处理模块进行数据分析主任务调度组件401初始化一个JobPiOcessor线程,将获取的优先级对象携带于该JobProcessor线程,由该JobProcessor线程调用相应的任务处理模块进行数据分析、任务处理。如果主任务调度组件401出现意外而退出运行或者无法正常运行,则从任务调度组件402从所述待调度任务存储模块加载待调度的任务到调度栈后,将调度栈中任务执行时间到达的任务封装到优先级对象中,并将优先级对象发送到从优先级队列单元404 ;从优先级队列单元404接收到优先级对象后,将该优先级对象的优先级与从优先级队列单元404中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象按照优先级进行排序。从任务调度组件402从从优先级队列单元404中获取优先级最高的优先级对象,并初始化一个JobProcessor线程,将获取的优先级对象携带于该JobProcessor线程,由该JobPiOcessor线程调用相应的任务处理模块进行数据分析、任务处理。即通常情况下,由主任务调度组件完成上述步骤S202-S204中任务处理模块104进行的操作,此处不再重复赘述。而在步骤S202中,主任务调度组件将优先级对象发送到优先级队列模块105具体为主任务调度组件将优先级对象发送到优先级队列模块105中的主优先级队列单元,而主优先级队列单元在接收到优先级对象后,根据该优先级对象的
优先级与优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象按照优先级在主优先级队列中进行排序操作。从优先级队列单元则定时保持其数据与主优先级队列单元中的数据的一致性。在步骤S203中,主任务调度组件从优先级队列模块105中获取最高优先级的优先级对象具体为主任务调度组件从优先级队列模块105的主优先级队列单元中获取最高优先级的优先级对象。如果主任务调度组件出现意外而退出运行或者无法正常运行,则从任务调度组件负责完成上述主任务调度组件完成的任务,即在主任务调度组件退出运行或者无法正常运行时,由从任务调度组件从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块进行数据分析、任务处理;也就是由从任务调度组件完成上述步骤S202-S204中任务处理模块104进行的操作。更优地,任务调度模块103中还可以包括通用任务调度组件405。如果主任务调度组件和从任务调度组件都出现意外而退出运行或者无法正常运行,则通用任务调度组件405负责完成上述主任务调度组件完成的任务,即完成上述步骤S202-S204中任务处理模块104进行的操作。如果主优先级队列单元出现意外而退出运行或者无法正常运行,则主任务调度组件、或从任务调度组件、或通用任务调度组件在将优先级对象发送到优先级队列模块105时,具体为将优先级对象发送到优先级队列模块105中的从优先级队列单元,而从优先级队列单元在接收到优先级对象后,根据该优先级对象的优先级与优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象按照优先级在从优先级队列中进行排序操作。主任务调度组件、或从任务调度组件、或通用任务调度组件从优先级队列模块105中获取最高优先级的优先级对象时,则具体为从优先级队列模块105的从优先级队列单元中获取最高优先级的优先级对象。在实际应用中,可以是主任务调度组件和主优先级队列单元安装在一个服务器中,从任务调度组件和从优先级队列单元安装在另一个服务器中;或者,主任务调度组件和主优先级队列单元、从任务调度组件和从优先级队列单元都安装在一个服务器中,具体实施方案可视负载情况而定。进一步,本发明实施例提供的数据分析系统还可包括任务管理模块、模板管理模块、任务监控模块、报表服务模块、Category (分类)管理模块、基础分析服务管理模块、函数库管理模块、Restful API模块、账号管理模块、任务测试及审核模块。任务管理模块,用以提供计划任务与非计划任务的管理功能,用户通过任务管理模块可以进行任务计划的创建、修改、删除等。即任务管理模块接收用户定义的任务参数。该模块是系统前端最重要模块,包含了任务建立、计划绑定、任务启动、停止等操作。用户通过该模块建立的计划、任务等会保存入数据库。对于一个计划任务,任务与用户选定的某个计划建立联系。在用户启动某个计划任务后,任务管理模块通过RPC (Remote ProcedureCall,远程过程调用)将用户定义的任务参数提交到待调度任务生成模块101,待调度任务生成模块101会将任务和计划绑定,根据用户定义的任务参数生成待调度的任务并进行存储。模板管理模块为用户提供自定义任务模板及管理功能。 任务监控模块,用以监控Hadoop MapReduce集群及各任务处理模块104中任务执行进度及完成情况,并进行实时显示。报表服务模块,用以对Hadoop MapReduce集群运行任务情况进行统计;如将每10分钟作为一个点,统计集群上运行的任务数、map数、reduce数,运行任务耗费的IO资源等
坐寸οCategory管理模块,用以为用户提供查看存储在Hadoop HDFS集群上的数据并提供统计数据大小服务及数据下载的服务。数据分析平台为了支持对用户数据的权限管理,数据被分成不同的业务领域,每个领域称之为一个category,用户只可对拥有权限的category进行操作。基础分析服务管理模块,用以将常用数据分析需求分别以一个个基础服务的形式进行存储,并支持灵活扩展,方便用户在创建新的任务计划时使用。函数库管理模块,目前主要面向Hive,提供用以进行Hive分析时需要使用的 UDF (User-Def ined-Function,用户定义功能)、UDAF (User-Defined AggregationFuncation,用户定义集合体功能)等函数库,供用户分析时使用;REST (REpresentational State Transfer,表述性状态转移)API 模块,其向用户开放服务接口,支持用户使用REST API向系统请求分析服务。账号管理模块,用以管理用户使用数据分析系统的账号及权限验证。任务测试及审核模块,用以将待审核任务发到数据分析系统进行测试运行,并根据测试结果提供测试报告。上述数据分析系统中的各模块可以安装于同一服务器中,也可以安装于不同的服务器中,具体安装方案可视负载情况而定。本发明实施例由于在数据分析系统的底层利用Hadoop系统(如Hive SERVER中安装的基于Hadoop的组件Hive)来进行数据分析,而在数据分析系统的上层则以任务调度模块来实现对任务的统筹管理,以及提供更为人性化的、更为方便的交互管理模式,从而既可以利用Hadoop系统进行数据分析而避免了繁杂的对关系型数据库的分表、拆表、合并等操作,简化了数据分析流程,又提供了更为方便地对任务进行调度、管理的系统。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如R0M/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种数据分析系统,包括 待调度任务生成模块,用于根据预先定义的任务参数将收集的数据生成待调度的任务; 待调度任务存储模块,用于存储所述待调度任务生成模块生成的待调度的任务; 任务调度模块和任务处理模块,所述任务调度模块从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块; 所述任务处理模块根据所述任务中的分析需求生成相应的类结构化查询语言HiveSQL语句向基于分布式计算Hadoop的数据仓库服务器发送;在接收到所述服务器返回的数据后完成对所述任务的数据分析。
2.如权利要求I所述的系统,其特征在于,所述任务调度模块具体包括主任务调度组件和从任务调度组件; 所述主任务调度组件用于从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块; 所述从任务调度组件用于在所述主任务调度组件退出运行或者无法正常运行后,从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块。
3.如权利要求2所述的系统,其特征在于,还包括优先级队列模块,其中 所述任务调度模块还用于加载待调度的任务到调度栈后,将所述调度栈中任务执行时间到达的任务封装到优先级对象中,将所述优先级对象发送到优先级队列模块; 所述优先级队列模块用于接收到优先级对象后,将该优先级对象的优先级与所述优先级队列模块中其它优先级对象的优先级进行比较,根据比较结果对该优先级对象进行排序; 所述任务调度模块还用于从所述优先级队列模块中获取优先级最高的优先级对象,并根据获取的优先级对象中的任务的任务类型调用相应的任务处理模块进行数据分析。
4.如权利要求3所述的系统,其特征在于,所述优先级队列模块具体包括主优先级队列单元和从优先级队列单元;以及 所述主任务调度组件还用于加载待调度的任务到调度栈后,将所述调度栈中任务执行时间到达的任务封装到优先级对象中,并将所述优先级对象发送到所述主优先级队列单元; 所述主优先级队列单元用于接收到优先级对象后,将该优先级对象的优先级与所述主优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果对该优先级对象进行排序; 所述主任务调度组件还用于从所述主优先级队列单元中获取优先级最高的优先级对象,并根据获取的优先级对象中的任务的任务类型调用相应的任务处理模块进行数据分析; 所述从优先级队列单元用于定时保持其数据与所述主优先级队列单元中的数据的一致。
5.如权利要求4所述的系统,其特征在于, 所述从任务调度组件还用于在所述主任务调度组件退出运行或者无法正常运行后,加载待调度的任务到调度栈,将所述调度栈中任务执行时间到达的任务封装到优先级对象中,并将所述优先级对象发送到所述从优先级队列单元;并从所述从优先级队列单元中获取优先级最高的优先级对象,并根据获取的优先级对象中的任务的任务类型调用相应的任务处理模块进行数据分析; 所述从优先级队列单元还用于接收到优先级对象后,将该优先级对象的优先级与所述从优先级队列单元中其它优先级对象的优先级进行比较,根据比较结果对该优先级对象进行排序。
6.如权利要求1-5任一所述的系统,其特征在于,还包括 任务管理模块,用于接收定义的任务参数,并将所述任务参数发送给所述待调度任务生成模块。
7.一种数据分析方法,包括 待调度任务生成模块根据预先定义的任务参数将收集的数据生成待调度的任务后存储到待调度任务存储模块; 任务调度模块从所述待调度任务存储模块加载待调度的任务,并根据加载的任务的任务类型调用相应的任务处理模块; 所述任务处理模块根据所述任务中的分析需求生成相应的类结构化查询语言HiveSQL语句向基于分布式计算Hadoop的数据仓库服务器发送;在接收到所述服务器返回的数据后完成对所述任务的数据分析。
8.如权利要求7所述的方法,其特征在于,在所述根据加载的任务的任务类型调用相应的任务处理模块之前,还包括 所述任务处理模块将加载的任务封装到任务处理线程中;以及所述调用相应的任务处理模块具体为所述任务处理线程在运行过程中根据所述任务的任务类型调用相应的任务处理模块。
9.如权利要求8所述的方法,其特征在于,所述任务调度模块从所述待调度任务存储丰吴块加载待调度的任务具体为 所述任务调度模块将待调度的任务加载到调度栈;以及 在所述任务调度模块将加载的任务封装到任务处理线程之前,还包括 所述任务调度模块监测所述调度栈中各待调度的任务的任务执行时间;从调度栈中取出任务执行时间到达的任务。
10.如权利要求9所述的方法,其特征在于,在所述从调度栈中取出任务执行时间到达的任务之后,还包括 所述任务调度模块将从所述调度栈中取出的任务转换为任务实例,并将转换的任务实例封装为优先级对象,该优先级对象的优先级是根据该任务的任务属性确定的; 所述任务调度模块将所述优先级对象发送到优先级队列模块; 所述优先级队列模块在接收到优先级对象后,根据该优先级对象的优先级与所述优先级队列模块中其它优先级对象的优先级进行比较,根据比较结果自动对该优先级对象进行排序; 所述任务调度模块从所述优先级队列模块中获取优先级最高的优先级对象;并初始化一个任务处理线程,将获取的优先级对象中的任务实例传至该任务处理线程中;以及,所述调用相应的任务处理模块具体为 该任务处理线程调用与所述任务实例中的任务的任务类型相应的任务处理模块。
11.如权利要求10所述的方法,其特征在于,在所述该任务处理线程调用与所述任务实例中的任务的任务类型相应的任务处理模块后,还包括 所述任务调度模块若确定出所述任务实例中的任务的任务类型为顺序任务类型,则从所述待调度任务存储模块中获取跟随该任务的其它任务; 所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块。
12.如权利要求11所述的方法,其特征在于,所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块具体包括 所述任务调度模块针对所述其它任务中的每个并行任务,并行初始化携带各并行任务的任务处理线程,由各并行初始化后的任务处理线程分别调用相应的任务处理模块。
13.如权利要求11所述的方法,其特征在于,所述任务调度模块针对跟随该任务的每个其它任务,分别初始化一个任务处理线程进行携带,由各任务处理线程分别调用相应的任务处理模块具体包括 所述任务调度模块针对跟随该任务的其它任务中的下层级任务,在该任务处理完毕后,初始化携带所述下层级任务的任务处理线程,由该任务处理线程调用相应的任务处理模块。
全文摘要
本发明公开了一种数据分析系统及数据分析方法。所述系统包括待调度任务生成模块,用于根据预先定义的任务参数将收集的数据生成待调度的任务;待调度任务存储模块,用于存储生成的待调度的任务;任务调度模块,用于加载待调度的任务,并根据任务类型调用相应的任务处理模块;任务处理模块,用于根据任务中的分析需求生成相应的Hive SQL语句向基于Hadoop的数据仓库服务器发送;在接收到服务器返回的数据后完成对任务的数据分析。由于在数据分析系统的底层利用Hadoop系统进行数据分析,而在数据分析系统的上层则以任务调度模块来实现对任务的统筹管理,从而既可以利用Hadoop系统简化了数据分析流程,又提供了更为方便地对任务进行调度、管理的系统。
文档编号G06F9/46GK102880503SQ201210307198
公开日2013年1月16日 申请日期2012年8月24日 优先权日2012年8月24日
发明者王 锋, 漆兴, 赵国贤, 王志强 申请人:新浪网技术(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1