一种多源异构行业领域大数据处理全链路解决方案。本发明在理解行业领域大数据海量性、多样性、快速性、价值性特点的基础上,根据行业领域管理决策的应用需求,设计与实现了多源异构行业领域大数据处理全链路解决方案。本解决方案首先总结归纳了行业领域大数据处理流程,然后提出了面向行业领域大数据的三层存储架构方案,又提出了面向管理决策的多层次多维度数据分析与知识发现方案,最后搭建了面向行业领域大数据的全链路数据处理平台。
1.一种多源异构行业领域大数据处理全链路解决方案,所述解决方案详细步骤如下:
第1、归纳行业领域大数据处理流程
总结现有的大数据处理平台,在传统大数据处理基本流程基础上,结合行业领域大数据的可视性和真实性特点和领域应用需求,探索出面向行业领域大数据处理的最基本流程;
第2、设计三层数据存储模型
定义1:用于选取数据存储模型的指标具体定义如下:
①.查询代价:查询代价是指在数据存储模型中对单位数据进行查询所耗费的时间;
②.插入代价:插入代价是指在数据存储模型中对单位数据进行插入操作所耗费的时间;
③.删除代价:删除代价是指在数据存储模型中删除单位数据所耗费的时间;
④.压缩效率:压缩效率是指数据压缩后的大小和压缩前的大小之比;
在选取每层数据存储模型时,每个指标对每层数据存储模型的影响程度是不一样的,通过分析这些指标对每层数据存储模型的影响大小来选取合适的数据存储工具以构建三层数据存储模型;
第2.1、设计第一层数据源层存储模型;数据源层用于存储抽取自众多外部数据源的数据;
第2.2、设计第二层中间数据层存储模型;中间数据层用于存储在行业领域日常使用中涉及的报表;中间数据层存储模型分为基础数据层表和数据集市层表;在中间数据层存储模型中,将由数据源层存储模型经过数据集成产生的表称为基础数据层表,这些内容包含更多内容,面向广泛的需求;将由基础数据层表经过ETL(Extraction,Transormation andLoading),即数据抽取、转化和装载产生的表称为数据集市层表,这些内容往往涉及某一具体领域,为某一具体部门服务;
第2.3、设计第三层结果表示层存储模型;结果表示层用于存储中间数据层经过数据统计分析或数据挖掘分析产生的结果表;
第3、提出面向管理决策的多层次多维度数据分析与知识发现方案
第3.1、构建多层次多维度分析模型;
定义2:多层次多维度分析模型被定义成一个四元组的形式,Dimension=(Subject,Time,Attributes,Rules),四元组分别是:
①.主体元(Subject),为个体、群体或全体;其中个体指的是某一具体事物,大部分情况下指的是某一特定用户;群体指的是一群事物,这些事物往往具有某些共同特征,全体指的是所有事物的全集;
②.时间元(Time),为年、月、日、小时或分钟的不同粒度,能够按照不同时间粒度进行统计分析;
③.属性元(Attributes),存在单属性行为分析和多属性行为分析;单属性分析的意义在于分析某一属性的价值,而多属性分析则侧重于分析多个属性之间的联系和在多属性共同作用下对事物的影响;
④.规则元(Rules),表示对属性元、时间元组施加的规则,这些规则是统计分析规则,或是数据挖掘算法;
第3.2、设计基于Spark的分布式决策知识发现方法;设计分布式数据挖掘算法,使之能够和分布式计算平台Spark进行交互;
第4、构建行业领域大数据处理分析平台
第4.1、数据集成实现;数据集成模块主要完成从数据源导入数据源层存储模型、将数据从数据源层存储模型通过ETL和清洗融合导入中间数据层存储模型中的基础数据层表、将数据从中间数据层的基础数据层表通过ETL导入中间数据层的数据集市层表的功能;
第4.2、数据存储模型具体实现;根据第2步设计得到的三层数据存储模型,选取数据存储工具构建三层数据存储架构;
第4.3、数据分析实现;使用基于Spark的分布式计算框架搭建数据分析模块;
第4.4、数据可视分析;采用HTML5,echarts技术进行数据可视分析;
第4.5、任务流管理;使用上下游机制和基于任务队列的生产者消费者模型并行任务流调度。
2.根据权利要求1所述的方法,其特征在于第1步所述的行业领域大数据处理流程如下:
整个行业领域大数据的处理流程定义为,在不同的采集设备、工具和系统辅助下,对多个异构行业领域数据源进行抽取与集成,再根据数据的特点进行统一存储,结合行业应用多角度需求,利用数据分析技术对存储的数据进行分析和挖掘,获取管理决策知识,并利用可视化分析方法将结果展示给用户;所述行业领域大数据处理流程具体划分为数据抽取与集成模块、数据存储模块、数据分析模块和可视分析模块,其中可视分析模块是针对行业领域大数据的可视性特点,提出的有别于一般大数据处理的解决方案模块。
3.根据权利要求1所述的方法,其特征在于第2步所述的数据源层存储模型的选取指标如下:
考虑插入数据仅会有一次且对数据的访问会更多出现在后两层数据存储模型中,压缩效率成为数据源层存储模型主要考察目标;而数据源层数据会被抽取进入ETL阶段,但其发生频率较低,故查询代价较低,在选取数据源层存储模型时查询代价将会是次要因素。
4.根据权利要求1所述的方法,其特征在于2步所述的中间数据层存储模型的选取指标如下:
考虑中间数据层存储模型的查询次数较多,查询代价将成为选取中间数据层存储模型的主要考察目标;考虑中间数据层存储模型将会每天从数据源层存储模型生成最新一天的报表,因此插入代价将会作为中间数据层存储模型选取的次要因素。
5.根据权利要求1所述的方法,其特征在于第4.1步所述的数据集成实现方法如下:
数据集成包括了数据抽取、数据转换、数据装载和数据清洗步骤;具体功能如下:
①数据抽取:包括表输入、文件输入的输入格式,具体输入格式包括MySQL、MSSQL和Oracle传统关系型数据库,MongoDB、Hbase新兴NoSQL数据库,XML半结构化数据和文本文档非结构化数据;
②数据转换:包括表连接、字段选择和记录集合并的诸多数据转换方式,完成大部分数据转换需求;首次抽取的数据不允许进行数据转换;只有当抽取的数据存储到数据源层存储模型之后才允许进行数据转换;
③数据装载:将数据抽取转换后的数据分别存储到三层数据存储模型中;三层数据存储模型对用户透明,数据装载将根据数据源的不同将数据自动归类;首次抽取的数据将归入数据源层存储模型,而来自数据源层存储模型和中间数据层存储模型的基础数据层表数据将进入中间数据层存储模型的数据集市层表;数据装载不会将数据装载到结果表示层存储模型;
④数据清洗:包括缺失值填充、噪声光华、无用属性删除、逻辑错误检查、数据标准化、数据规范化和数据离散化的常规数据清洗方法。
6.根据权利要求1所述的方法,其特征在于第4.5步所述的生产者消费者模型并行任务流调度如下:
任务队列是维护任务流的类,任务队列会根据任务执行时间和上游任务是否执行完成判断当前任务是否能够被消费者消费;生产者(Producer)负责将用户添加的任务以多线程方式插入任务队列中;消费者(Consumer)则以多线程方式从任务队列获取允许执行的任务,并交给下游执行节点执行任务。
技术领域
[0001]本发明属于大数据处理技术领域。具体涉及一种多源异构行业领域大数据处理全链路解决方案。
背景技术
[0002]随着信息技术在各行业领域深入应用,行业领域大数据极速产生和积累,例如金融领域的交易数据、电信领域的网络数据、交通运输的交通流量数据、教育领域的学生行为数据等。行业领域大数据具有明显的大数据特征,即所谓的4V特征属性:海量性(Volume)、多样性(Variety)、高速性(Velocity)、价值性(Value)。
[0003]这些数据规模庞大、种类繁多,但蕴含价值丰富,如果能从海量复杂数据中获得知识,将能够为各行业领域的活动提供智力支持,对人类的决策模式和社会经济的运行模式产生深远的影响。目前,在大数据的驱动下,各行各业都意识到迫切需要研究强大的大数据管理与处理平台、有效的数据处理技术和智能的数据分析算法,用于支撑实时数据统计、数据分析、复杂数据挖掘等应用。但大数据由采集、集成、存储、分析到产生价值,是一个复杂的过程。行业领域大数据的特征,为行业领域大数据管理与处理过程提出了诸多的挑战与困难:
[0004]1)面对跨系统分布、数据形式多样、结构各异的行业领域大数据,如何实现提出具有通用性的行业领域大数据处理流程?
[0005]2)面对数据量庞大、类型复杂,如何设计高效的数据存储架构,以满足实时快速的业务分析需求?
[0006]3)面对行业领域决策需求,如何构建多角度的数据分析模型,真正挖掘出大数据中蕴含的价值?
[0007]4)如何搭建全链路多源异构行业领域大数据处理平台,将行业领域大数据处理流程、高效存储架构、数据分析模型进行实践?
[0008]综上所述,信息爆炸时代的到来,大数据的研究价值非常巨大。随着数据管理、数据挖掘、云计算等研究技术的快速发展,许多有效的数据集成、数据融合、数据存储、分布式计算、数据分析技术纷纷涌现,为多源异构行业领域大数据处理的研究提供了理论基础和技术支持。在此背景下,针对行业领域大数据特征,研究多源异构数据集成,研究多层级存储架构,研究面向管理决策的多层次多维度数据分析,搭建全链路多源异构行业领域大数据处理平台,具有重要的研究意义和应用价值。
发明内容
[0009]本发明的目的是解决如何管理规模庞大、种类繁多的行业领域大数据以及如何从其中获取知识的问题,在理解行业领域大数据海量性、多样性、快速性、价值性特点的基础上,根据行业领域管理决策的应用需求,对多源异构领域大数据处理关键技术进行深入研究,包括数据清洗融合、数据存储、深度分析等问题,设计并实现了多源异构行业领域大数据处理全链路解决方案。
[0010]本发明提供的多源异构行业领域大数据处理全链路解决方案详细步骤包括:
[0011]第1、归纳行业领域大数据处理流程
[0012]总结现有的大数据处理平台,在传统大数据处理基本流程基础上,结合行业领域大数据的可视性和真实性特点和领域应用需求,探索出面向行业领域大数据处理的最基本流程;
[0013]整个行业领域大数据的处理流程定义为,在不同的采集设备、工具和系统辅助下,对多个异构行业领域数据源进行抽取与集成,再根据数据的特点进行统一存储,结合行业应用多角度需求,利用数据分析技术对存储的数据进行分析和挖掘,获取管理决策知识,并利用可视化分析方法将结果展示给用户;行业领域大数据的处理流程可以划分为数据抽取与集成模块、数据存储模块、数据分析模块和可视分析模块。
[0014](1)数据抽取与集成模块
[0015]行业领域大数据的数据源多种多样,例如通过设备实时采集的数据、不同用途的运营式系统产生的数据,要想处理大数据,首先要从不同数据源抽取所需的数据。由于数据来源广泛、结构各异且数据间可能存在不一致,数据抽取后必须对异质多源数据进行数据集成,包括清洗脏数据、数据类型转换等传统数据清洗数据转换方法,并针对领域大数据独有的真实性特点,提供数据融合功能以解决数据冲突,从而保证数据的完整性、一致性和正确性,提高数据的质量。
[0016](2)数据存储模块
[0017]大数据处理过程中,需要按照一定的标准对各类数据进行统一存储管理。在行业领域大数据处理流程中,存在原始数据、数据清洗、融合、转换生成的中间数据、数据分析及用于可视化展示的结果数据,它们的数据类型、数据规模、数据用途不尽相同。本发明考虑构建三层级行业领域数据统一存储框架,以满足不同层级不同规模不同用途数据存储的需求。
[0018](3)数据分析模块
[0019]数据分析是整个行业领域大数据处理流程的核心,是大数据价值特性的体现。大数据中知识价值密度低,知识覆盖方面广泛,需要按照一定的方式对数据进行全方面的分析。在大数据背景下传统数据统计和数据挖掘算法无法及时处理海量数据,分布式计算框架在二十世纪的前十年发挥关键作用,但随着时间的推移也出现了性能瓶颈。本发明考虑基于新一代分布式计算框架Spark构建多层次多维度数据分析模型,以满足大数据背景下的数据分析。
[0020](4)可视分析模块
[0021]行业领域大数据处理不仅要完成数据分析任务,还需要将数据分析结果进行直观体现。可视分析针对行业领域大数据的可视性特点,通过可视分析技术,将文字数据转换为直观易操作的图表,为决策提供更清晰的印象。本发明考虑基于Html5和Echarts.js结合的可视分析技术,构建提供数据选择、数据列选择、代码自动生成、代码可编辑的可视分析模块,以满足行业领域大数据背景下可视分析的需要。
[0022]第2、设计三层数据存储模型
[0023]获取行业领域原始数据之后,还应对其进行清洗、融合以及挖掘,故行业领域大数据分析需要多级存储,以满足包括指标数据、部门决策数据、数据分析基础数据和原始数据的存储、管理和计算。
[0024]定义1:用于选取数据存储模型时需要考虑的几项指标具体定义如下:
[0025]①.查询代价:查询代价是指在数据存储模型中对单位数据进行查询所耗费的时间;
[0026]②.插入代价:插入代价是指在数据存储模型中对单位数据进行插入操作所耗费的时间;
[0027]③.删除代价:删除代价是指在数据存储模型中删除单位数据所耗费的时间;
[0028]④.压缩效率:压缩效率是指数据压缩后的大小和压缩前的大小之比;
[0029]在选取每层数据存储模型时,每个指标对每层数据存储模型的影响程度是不一样的,通过分析这些指标对每层数据存储模型的影响大小来选取合适的数据存储工具以构建三层数据存储模型。
[0030]第2.1、设计第一层数据源层存储模型
[0031]为更完善的保存领域数据,本发明提出数据源层存储模型,用于存储从行业领域内众多外部数据源获取的源数据。数据源层存储模型中的数据量很大,这些数据中主要为结构化数据,例如普通的流水数据,这类数据往往存储于数据库中,比如SQL Server、MySQL,其作为数据库中的表,具有查询容易,结构清晰的特点。行业领域大数据背景下的数据也包括了非结构化数据和半结构化数据,比如网站系统产生的日志文件,或者管理系统中的图片文件。这些数据往往以文本文件或者XML文件格式存储,其特点为结构化程度低,挖掘难度大。
[0032]数据源层数据,更多作为历史数据进行保存,并不作为日常数据分析访问使用,由于数据源层是整个存储模型的初始节点,一点数据修改或丢失将造成不可逆后果。因此,其存在生命周期长,访问频率低,数据价值密度低,数据丢失不可复现等特点。
[0033]第2.2、设计第二层中间数据层存储模型
[0034]中间数据层存储模型用于存储从数据源层存储模型经过一次或多次数据集成产生的用于分析的报表,这些报表经过了一次数据清洗和数据融合,一次或多次数据ETL,数据知识密度更大,数据格式更加统一,这样的数据对日常的数据分析与数据挖掘提供了强有力的支撑。中间数据层存储模型将由数据源层存储模型经过数据集成产生的报表归入基础数据层表,将由基础数据层表经过ETL产生的下游报表成为数据集市层表。基础数据层表是数据源层存储模型经过数据集成产生的临时表,用于支持日常数据分析;数据集市层表是基础数据层表经过ETL产生的深入领域某一具体子域,用于支持某一具体方向的分析。
[0035]通过基础数据层表和数据集市层表的互动,使得中间数据层存储模型减少了对数据源层存储模型的依赖,一次抽取,多次使用,使得日常数据分析集中于中间数据层存储模型。中间数据层存储模型的数据可根据需求,每天或每小时从数据源层存储模型抽取最新的数据,并完成从基础数据层表上游根节点到数据集市层表下游叶子节点的依次产出,进而循环获取最新数据,更新数据挖掘分析的数据,获取更加即时的结果。
[0036]中间数据层存储模型的数据具有数据可以复现、访问频率高、上下游关系复杂、具有一定的生命周期的特点。由于中间数据层存储模型的数据源自数据源层,一旦出现数据丢失,可以重新执行数据集成过程以恢复数据,其数据丢失可以复现。中间数据层存储模型的数据往往访问频率很高,因为不仅当前表的所有下游表需要访问当前表的数据,可能数据挖掘分析中也需要访问当前表的数据。中间数据层存储模型的表往往存在较为复杂的上下游关系,在每天的新表生成阶段,下游表需要等待上游表产出才能运行。中间数据层存储模型的数据具有一定的生命周期,其生命周期往往有数据分析的需求决定,如果数据分析每天需要访问之前7天的数据,那么该表的生命周期就可以定为7-8天,当生命周期结束时应当对数据予以删除。这样既能满足数据分析的需要,也能减少存储产生的消耗。
[0037]第2.3、设计第三层结果表示层存储模型
[0038]中间层的数据依然是大数据,往往在GB、TB级别。常用的数据挖掘和数据分析结果往往具有高度的知识汇聚特性,其内容更多是具有高阶统计结果意义或者针对类簇进行汇总的数据。这些数据的大小往往很小,在KB、MB级别。
[0039]结果表示层存储模型用于存储上述(中间数据层存储模型)经过数据统计分析和数据挖掘分析产生的结果表,这些结果粒度大,知识密度高,用于支撑领域内日常分析和决策。
[0040]结果表示层存储模型的数据具有访问频率高、数据量小的特点。结果表示层存储模型数据往往在很多地方会得到引用,比如生成结果展示报表、比如产生折线图等实时、伪实时图表。每次作图和显示图表都会构成一次数据访问,其数据量级和数据访问频率量级和报表分析层均产生了非常显著的差别。
[0041]第3、提出面向管理决策的多层次多维度数据分析与知识发现方案
[0042]本发明介绍了一种多层次多维度的分析模型并给出其形式化定义,除此之外还设计了分布式决策知识发现方法。
[0043]第3.1、构建多层次多维度分析模型;
[0044]定义2,多层次多维度分析模型可以被定义成一个四元组的形式,Dimension=(Subject,Time,Attributes,Rules),四元组分别是:
[0045]①.主体元(Subject),为个体、群体或全体;其中个体指的是某一具体事物,大部分情况下指的是某一特定用户;群体指的是一群事物,这些事物往往具有某些共同特征,全体指的是所有事物的全集;
[0046]②.时间元(Time),为年、月、日、小时或分钟的不同粒度,能够按照不同时间粒度进行统计分析;
[0047]③.属性元(Attributes),存在单属性行为分析和多属性行为分析;单属性分析的意义在于分析某一属性的价值,而多属性分析则侧重于分析多个属性之间的联系和在多属性共同作用下对事物的影响;
[0048]④.规则元(Rules),表示对属性元、时间元组施加的规则,这些规则可以是统计分析规则,也可以是数据挖掘算法;
[0049]在实际应用中,根据主题元和行为元的不同粒度,分为六个层次,分别为个体单属性分析、个体多属性分析、群体单属性分析、群体多属性分析、全体单属性分析、全体多属性分析。四组变量的变化方式是相似的,均具有上钻和下取的功能,上钻表示将粒度变大,考察更凝练的信息,下取则表示将粒度变小,聚焦更为具体的知识。如主体维度可以有个体上升为不同的群体,最终变为全体,而属性则可以有单属性变为多属性,规则可以根据不同的属性组合选取更合适的规则。
[0050]第3.2、设计基于Spark的分布式决策知识发现方法。设计分布式数据挖掘算法,使之能够和分布式计算平台Spark进行交互;
[0051]Spark是UC Berkeley AMP实验室开源的通用并行框架,是针对Hadoop的不足提出的新型分布式计算框架。Spark更好地利用内存,不再将Map结果全部写回硬盘,而是通过内存进行操作,这一方式减少了大量的IO代价,使得在大部分情况下,Spark比Hadoop都要快很多。Spark通过弹性分布式数据存储(RDD)保存文件,RDD是Spark对分布式文件的抽象,是带分区的记录集合。RDD通过简单的API支持大量操作,如map、sort、count等,能够满足数据处理需求。Spark通过Spark Streaming支持流式数据处理。
[0052]本发明设计了包括协同过滤、关联规则、降维、分类与回归和聚类分析五个算法领域功能十四种分布式数据挖掘算法。同时支持用户自定义算法,用户可以上传以jar包格式封装好的代码,并通过算法调用页面将参数传入后台。
[0053]第4、构建行业领域大数据处理分析平台
[0054]本平台集成了典型的数据ETL、清洗与融合技术,支持本发明提出的三级数据存储和多层次多维度数据分析,并提出了数据可视分析方法以及任务流管理方案。
[0055]第4.1、数据集成实现
[0056]数据集成模块主要完成从数据源导入数据源层、将数据从数据源层通过ETL和清洗融合导入中间数据层存储模型中的基础数据层表、将数据从中间数据层存储模型的基础数据层表通过ETL导入中间数据层存储模型的数据集市层表的功能。
[0057]第4.2、数据存储模型具体实现;根据第2步设计得到的三层数据存储模型,选取数据存储工具构建三层级的数据存储架构;
[0058]考虑Hbase的数据压缩效果,本发明选取Hbase作为数据源层存储模型数据存储;考虑MongoDB在大数据量数据访问时突出的性能,选取MongoDB作为中间数据层存储模型数据存储;考虑MySQL在小数据量频繁访问上的优势,选取MySQL作为结果表示层存储模型数据存储。
[0059]第4.3、数据分析实现;使用基于Spark的分布式计算框架搭建数据分析模块;
[0060]Spark作为新兴的分布式计算框架,其基于内存的运算方式使其较传统分布式计算框架Hadoop有着显著性能提升。数据分析模块分为两个部分,数据统计分析和数据挖掘分析。
[0061]其中,数据统计分析基于SparkSQL,通过java语言与三级存储架构中的中间数据层存储模型建立连接,将用户需求由图形化语言转换为SparkSQL语言,完成对数据的求和、求平均值、求方差以及计算数据条目等基本的数据统计需求。
[0062]数据挖掘分析则集成包括前文列举的GBDT决策树算法和FISM关联规则算法在内的共14种分布式数据挖掘算法,涉及协同过滤、关联规则、降维、分类与回归和聚类分析五个算法领域。同时数据挖掘分析支持用户自定义算法,用户可以上传以jar包格式封装好的代码,并通过算法调用页面将参数传入后台。
[0063]算法结构图如图2所示。
[0064]第4.4、数据可视分析;采用HTML5,echarts技术进行数据可视分析;
[0065]可视分析模块基于echarts实现,echarts是百度提供的javascript图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库Zrender。本可视分析模块在集成了echarts这些功能的基础上提供了数据输入接口,自动将用户选择数据同步到echarts图表中,降低了可视分析功能使用门槛,同时保留了用户编码模块,给用户更多的自由发挥的空间。主要工作流程如图3所示。
[0066]第4.5、任务流管理;使用上下游机制和基于任务队列的生产者消费者模型并行任务流调度;
[0067]本行业领域大数据分析平台支持任务流管理,图4给出了本平台任务流管理流程图,根据任务流管理流程,用户可以对已有任务进行管理,包括立即开始任务、预约开始任务以及删除任务。同时,用户可以创建新任务;用户可以自定义新任务的执行时间;可以指定前置任务:新任务必须在该前置任务完成之后执行,一般前置任务为上游任务,这样可以根据上游任务的完成情况执行下游任务;并且设置任务类型:任务类型包括数据抽取、数据清洗和融合以及数据统计和挖掘,对于不同类型的任务,用户可以自定义任务的步骤,并需要配置相应的参数;最后,保存任务,任务即在用户设定的时间内执行。
[0068]本平台支持基于任务队列的生产者消费者并行任务流调度,如图5所示。其中任务队列是维护任务流的类,任务队列会根据任务执行时间和上游任务是否执行完成判断当前任务是否可以被消费者消费。生产者(Producer)负责将用户添加的任务以多线程方式插入任务队列中。消费者则以多线程方式从任务队列获取允许执行的任务,并交给下游执行节点执行任务
[0069]本发明的优点和积极效果
[0070]本发明提出了面向行业领域大数据的多层级存储架构方案,满足了行业领域大数据管理决策时对原始数据、基础数据、部门决策数据和最终指标数据的需求;本发明还设计了<主体,时间,属性,规则>四元组形式的多层次多维度分析模型,为自底向上的全面数据分析提供了理论支撑。
[0071]本发明所构建的多源异构行业领域大数据处理全链路解决方案能够从模式复杂的海量异构数据中发觉知识,为社会、政治、经济、文化等领域的管理决策提供强大的数据支持,改变领域内部运转方式,提高领域内部运转效率。
附图说明
[0072]图1是多源异构行业领域大数据处理全链路解决方案运作图;
[0073]图2是大数据平台数据分析部分算法架构图;
[0074]图3是可视化分析的主要工作流程;
[0075]图4是任务流管理流程图;
[0076]图5是基于生产者和消费者模型的任务流调度;
[0077]图6是MongoDB与HBase之间批量插入的性能对比;
[0078]图7是多层次多维度分析模型;
[0079]图8是多层次多维度分析模型演变实例;
[0080]图9是学生上网流量模型;
[0081]图10是个人上网流量24小时趋势;
[0082]图11是学生上网兴趣爱好分布;
[0083]图12是上海交大人员在11时的分布图;
[0084]图13是数据存储架构图;
[0085]图14是可视分析数据选择示意图;
[0086]图15是IDP2平台可视分析示意图;
[0087]图16是IDP2平台任务流示意图。
具体实施方式
[0088]本发明的具体实施过程分为了四个实施阶段,以下是四个实施阶段的详细实施过程。
[0089]第1步、归纳行业领域大数据处理流程
[0090]大数据类型多种多样、来源广泛,如物联网大数据、社交网络大数据、互联网大数据、行业领域大数据、多媒体大数据等,它们的应用需求和数据类型不尽相同,但最基本的大数据处理流程较为一致。本发明在传统大数据处理基本流程基础上,结合行业领域大数据的可视性和真实性特点和领域应用需求,探索出面向行业领域大数据处理的最基本流程,如图1所示。
[0091]整个行业领域大数据的处理流程可以定义为,在不同的采集设备、工具、系统辅助下,对多个异构行业领域数据源进行抽取与集成,再根据数据的特点进行统一存储,结合行业应用多角度需求,利用数据分析技术对存储的数据进行分析和挖掘,获取管理决策知识,并利用可视化分析方法将结果展示给用户。上述处理流程可划分为数据抽取与集成、数据存储、数据分析、可视分析。
[0092]①数据抽取与集成
[0093]数据抽取与集成分为数据ETL、数据清洗和数据融合问题。
[0094]1)数据ETL
[0095]数据ETL(Extraction,Transormation and Loading)指的是,数据抽取、转化和装载。数据ETL的核心是数据转化,也就是将既有数据转化为目标数据,继而将目标数据应用于数据挖掘和数据分析中。数据抽取是从数据源获取既有数据的过程,数据装载是转存目标数据的过程。因此,数据ETL,是通过数据抽取、转化和装载,完成将数据源的既有数据经过加工,转化为目标数据并保存的数据处理过程。
[0096]2)数据清洗
[0097]多源异构数据以不同的格式存储在不同的数据源中,分离的数据存储带来信息的片段性,即单个或几个数据中所体现的信息是不完整的、片面的,会在分析时导致决断失误、线索中断等问题。数据清洗的目的是找出数据中存在的错误、缺失、冗余或异常,改正它们,以提高数据的质量。
[0098]在多源异构数据时代,衡量数据的指标包括一致性、正确性和完整性。而在实际操作中,数据可能因为在不同时间的录入导致数据不一致,也可能因为难以获取、录入错误、转移数据失误而导致数据缺失,影响数据的正确性,也会因为各种直接或者间接的原因导致数据错误。为了提升数据源的质量,以保证后续数据分析和数据挖掘过程有意义,进行多源异构数据清洗至关重要。
[0099]3)数据融合
[0100]数据融合是多源异构数据处理背景下的新兴课题。数据融合主要解决多数据源中数据值的准确性的问题,通过数据挖掘方法,从存在数据冲突的多个数据源中选取更真实可信的数值填充到融合结果中,又称冲突解决、真值发现。数据融合的前身是目标值填充,数据融合通过更加深入的研究,提供更准确快速地目标值填充方案。数据融合的目标则是知识融合,希望通过将多个数据源的数据更好地评估,获得最准确的最真实的数据,将数据集中的不仅是数据,还包括知识,融合在一起。
[0101]②数据存储
[0102]在行业领域大数据处理流程中,存在原始数据、数据清洗、融合、转换生成的中间数据、数据分析及用于可视化展示的结果数据,它们的数据类型、数据规模、数据用途不尽相同。故应该设计一个多层级数据存储模型来存放行业领域大数据处理流程中的各类数据。
[0103]③数据分析
[0104]数据分析是整个行业领域大数据处理流程的核心,是大数据价值特性的体现。大数据中知识价值密度低,知识覆盖方面广泛,需要按照一定的方式对数据进行全方面的分析。在大数据背景下传统数据统计和数据挖掘算法无法及时处理海量数据,分布式计算框架在二十世纪的前十年发挥关键作用,但随着时间的推移也出现了性能瓶颈。本发明考虑基于新一代分布式计算框架Spark构建多层次多维度数据分析模型,以满足大数据背景下的数据分析。
[0105]④可视分析
[0106]行业领域大数据处理不仅要完成数据分析任务,还需要将数据分析结果进行直观体现。可视分析针对行业领域大数据的可视性特点,通过可视分析技术,将文字数据转换为直观易操作的图表,为决策提供更清晰的印象。本发明考虑基于Html5和Echarts.js结合的可视分析技术,构建提供数据选择、数据列选择、代码自动生成、代码可编辑的可视分析模块,以满足行业领域大数据背景下可视分析的需要。
[0107]第2步、设计三层数据存储模型
[0108]根据三层数据存储模型中各个存储层级的选取标准,本发明选取了新兴分布式NoSQL数据库的文档型数据库代表MongoDB和列存数据库代表Hbase作为候选,通过测试这些数据库对数据源层和中间数据层数据特点的契合度,选择对数据源层和中间数据层数据支持最好的数据库存储引擎作为各自的存储方案。在具体选取数据存储模型时需要分别考虑查询代价、插入代价、删除代价和/或压缩效率等几项指标,具体定义见发明内容部分定义1。
[0109]实验采用真实数据和随机数据结合的方式对两者性能进行对比实验。真实数据来源于上海交大EMC数据集中的trade数据表、net_traffic数据表和weather数据表,数据量分别为7,915,289条、12,736,407条和79,980条。其数据结构如表(1)、表(2)和表(3)所示:
[0110]表(1)trade表
[0111]
[0112]表(2)net_traffic表
[0113]
[0114]表(3)Weather表
[0115]
[0116]实验针对系统实际使用情况设计了如下几个测试实例:
[0117]1)存储代价测试,插入weather表和net_traffic表数据,统计占用存储空间大小;
[0118]2)批量插入测试,每插入1万条做一次耗时记录;
[0119]3)索引单点查询,根据单属性索引进行单点查询;
[0120]在存储代价测试中,源文件分别为5MB大小的weather表和2.7GB大小的net_traffic。实验结果见表(4),可以看出,5MB大小的weather在MongoDB和Hbase下分别占用了28MB和48MB,2.7GB的net_traffic表则分别占用4.7GB和7.2GB。但Hbase作为列存数据库有着强大的数据压缩算法,在对列簇进行snappy压缩后,Hbase下weather表和net_traffic表分别仅占用9.1MB和2.4GB,数据压缩效果分别达到了18.8%和30.2%。
[0121]表(4)存储代价测试结果
[0122]
[0123]图6展示了MongoDB和HBase之间批量插入的性能对比结果。横坐标为插入记录数(万条),纵坐标为插入最新1万条数据所花的时间(毫秒)。图中时间花费高的表示MongoDB,时间花费低的表示HBase。从总体上来说,可以看出Hbase在批量插入时在平均插入时间上明显优于MongoDB,并且MongoDB在插入过程中每插入一定量的数据就会出现一次耗时代价峰值,这和MongoDB分片机制中存储策略有关。
[0124]上述实验结果表明,Hbase和MongoDB在压缩前,数据占用比文本文件更大的存储量,并且Hbase的数据压缩效果更好。MongoDB是读效率更高的数据库引擎,而Hbase是写效率更高的数据库引擎。
[0125]基于以上分析,可以得出,MongoDB是增删查较为均衡的引擎,其提供二级索引,更适合访问读多于写入模式下的数据模式。本发明最终选择MongoDB作为中间数据层的存储引擎。Hbase优秀的写入特性和数据压缩比证明了其在分布式存储上的优势,其更适合大数据量的存储。本发明最终选择Hbase作为数据源层的存储引擎。而结果表示层由于数据量很小,故选取了关系型数据库MySQL。
[0126]第3步、提出面向管理决策的多层次多维度数据分析与知识发现方案
[0127]第3.1、多层次多维度分析模型
[0128]在领域大数据时代,数据中蕴含着大量的知识。如何去发现并分析大数据中存在的知识,使其更好地服务于数据拥有者,成为了重要的课题。本发明提出了多层次多维度分析模型,帮助用户更清晰、更全面的分析数据中蕴含的知识。
[0129]本发明将多层次多维度分析模型定义成一个四元组的形式,Dimension=(Subject,Time,Attributes,Rules)。其详细定义见定义2。
[0130]根据本模型提出的四元组,本发明的模型可以用在实际应用中,根据主体元和行为元的不同粒度,分为六个层次,分别为个体单属性分析、个体多属性分析、群体单属性分析、群体多属性分析、全体单属性分析、全体多属性分析。
[0131]本模型共包含四组变量,分别是主体、时间、属性和规则。四组变量的变化方式是相似的,均具有上钻和下取的功能,上钻表示将粒度变大,考察更凝练的信息,下取则表示将粒度变小,聚焦更为具体的知识。如主体维度可以由个体上升为不同的群体,最终变为全体,而属性则可以由单属性变为多属性,规则可以根据不同的属性组合选取更合适的规则。在图7中的例子里,选取了消费数据集,数据集共五列,分别为消费者,消费时间,消费去向,消费金额和去向代码。在主体选取为个体,时间规定为小时,规则暂时不选取的情况下,图中展示了由个体单属性到个体多属性的变化趋势,对应的分析则可以是个体每天的消费去向分析,规则可以选取为统计求平均,就可以得到日均消费去向。同理,可以得到日均消费金额和日均消费去向类别。在完成个体单属性分析后,进而进行个体双属性组合分析,如图中可知进行了消费去向个人日均消费金额分析、去向对应类别及其个人消费习惯解析和去向类别个人消费金额习惯分析。最终可以进行个人消费习惯的全面建模。
[0132]在完成个人消费习惯建模后,可以选择不仅分析个人,进而分析群体,如毕业生的消费习惯与常人的异同。如图8所示,由个体单属性出发,可以进行群体单属性分析,例中为毕业生人数随时间变化分析,毕业生人均消费金额分析,毕业生消费去向类别分析。进而分析毕业生群体的消费习惯等。具体分析类型由规则决定,以上分析选取了相应的统计分析模型,而本模型支持数据挖掘算法的选择,如可以分析全体学生不同消费去向间的关联规则,得出哪几种消费更倾向于前后出现,更精确的定位学生的需求,为学生的生活更好地服务。
[0133]以下将通过一组多层次多维度分析实例,例证该模型的有效性。
[0134]实例采用真实数据例证模型有效性。真实数据来源于上海交大EMC数据集中的消费信息表数据表、用户特征表和网络数据表。数据量分别为7,915,289条、8,000条、和12,736,407条。其数据结构表(1)、表(5)和表(2)所示:
[0135]表(5)用户特征表
[0136]
[0137]依据多层次多维度分析模型,本发明从个人单属性出发,分析学生个人的流量习惯,通过对比个人习惯与普通人的差别,确认其为离群点。在实际分析中以流量中位数作为参考,分析个人上网流量24小时趋势,模型如图9。结果显示如图10所示,某博士和某硕士与普通人有显著差别,进而发现该硕士上网时间和流量均较多,需引起重视的结论。
[0138]从个人单属性出发,依次进行了个人多属性分析和群体单属性分析。基于个人多属性层,对每个用户进行用户画像,发掘用户性别、年龄、入学年份对上网行为、消费行为的影响。基于群体单属性层,本发明进行了兴趣爱好分析,得出男女生的上网兴趣爱好,如图11.a和图11.b所示,发现了男生的技术宅倾向和女生的消费倾向存在显著差异。
[0139]多层次多维度分析模型的提出,对领域大数据分析提供了指导。由上节举例可知,数据分析从个体单属性出发,解析单属性中存在的知识,以及其与个体、时间之间的关系。在完成一个或多个个体单属性分析后,可以由点及面,分析更多属性和更多主体给数据分析带来的变化,本着控制变量的原则,优先进行个体多属性分析和群体单属性分析。个体多属性分析负责完成用户画像,而群体单属性分析则意在判断各个属性对当前群体的影响力。同理,当完成个体和群体分析后,将主体上钻为粒度更大的全体,或者将单属性上钻为粒度更大的多属性,可以进一步揭示更多宏观的知识。
[0140]当确定主体元和属性元后,可以对时间进行上钻和下取,通过调整粒度进行时序分析。在时间元确定后,规则元的选择显得至关重要。主体、时间、属性确定了分析哪种事务,而规则的选取则确定了如何分析。规则包括数据统计方法,如求和、求平均值等,也包括了数据挖掘方法,如关联规则,聚类分析。规则对数据格式,尤其是数据是否连续有着严格的要求,根据已选中的主体、时间和属性的数据格式,可以轻松排除大部分规则,而剩余的较少的规则降低了数据分析的难度。
[0141]多层次多维度分析模型是一种带有明确方向的分析,从点出发,由点及面,步步深入,是一种自底向上的分析模式。多层次多维度分析模型是一种有明确方向和剪枝方式的穷举,一个有明确方向的穷举可以避免数据分析师在海量的数据和繁复的属性之间的迷失。完备的分析模型,可以得出更为全面的分析,避免因为疏忽而漏掉较为重要的分析角度。
[0142]第3.2、分布式决策知识发现方法
[0143]本发明设计了包括协同过滤、关联规则、降维、分类与回归和聚类分析五个算法领域功能十四种分布式数据挖掘算法。同时支持用户自定义算法,用户可以上传以jar包格式封装好的代码,并通过算法调用页面将参数传入后台。
[0144]第4步、构建行业领域大数据处理分析平台
[0145]本发明在研究数据集成方法的基础上提出数据存储模型和数据分析模型,并构建行业领域大数据处理平台(Industry data processing platform,简称IDP2)。IDP2平台基于Spark计算框架,集成了典型的数据ETL、清洗与融合技术,支持本发明提出的三级数据存储和多层次多维度数据分析,并提出了数据可视分析方法以及任务流管理方案。
[0146]第4.1、数据集成实现
[0147]数据集成模块主要完成数据抽取、数据清洗、数据融合、数据转化和数据装载。考虑三级存储架构,即数据源层、中间数据层和结果表示层,数据集成模块主要完成从数据源导入数据源层、将数据从数据源层通过ETL和清洗融合导入中间数据层中的基础数据层、将数据从中间数据层的基础数据层通过ETL导入中间数据层的数据集市层的功能。
[0148]数据ETL领域相关工具已经较为成熟,IDP2平台通过良好的基于WEB的用户操作界面捕获用户需求,将用户的数据抽取、转换和装载需求以XML配置文件形式存入数据库的数据流中,再通过调用开源ETL工具Kettle的API,将配置文件内容传入Kettle中。Kettle中集成了众多基于JDBC的数据库连接模式,其根据配置文件参数生成相应的数据库操作语句,完成数据的抽取、转换和装载。具体调用命令如下:
[0149]"C:\Program Files\Java\jdk1.7.0_51\bin\java.exe"″-Xmx512m"″-XX:MaxPermSize=256m"″-Djava.library.path=libswt\win64"″-DKETTLE_HOME="″-DKETTLE_REPOSITORY="″-DKETTLE_USER="″-DKETTLE_PASSWORD="″-DKETTLE_PLUGIN_PACKAGES="″-DKETTLE_LOG_SIZE_LIMIT="″-DKETTLE_JNDI_ROOT="-jar launcher\pentaho-application-launcher-5.3.0.0-213.jar-lib..\libswt\win64-mainorg.pentaho.di.pan.Pan/file C:\\kettle\\orderf2c299c6-908f-47a0-8da5-86369a5c92d4.xml
[0150]Kettle集成了大部分数据集成功能,常用的如下所示:
[0151]数据抽取:包括表输入、文件输入等输入格式,具体输入格式包括MySQL、MSSQL、Oracle等传统关系型数据库,MongoDB、Hbase等新兴NoSQL数据库,XML等半结构化数据和文本文档等非结构化数据。
[0152]数据转换:包括表连接、字段选择、记录集合并等诸多数据转换方式,完成大部分数据转换需求。从外部数据源抽取的数据不允许进行数据转换。
[0153]数据装载:将数据抽取转换后的数据存储三级存储中。三级存储对用户透明,数据装载将根据数据源的不同将数据自动归类。从外部数据源抽取的数据将归入数据源层,而从数据源层和中间数据层的基础数据层数据将进入中间数据层的数据集市层表。数据装载不会将数据装载到结果表示层。
[0154]数据清洗:包括缺失值填充、噪声光华、无用属性删除、逻辑错误检查、数据标准化、数据规范化和数据离散化等常规数据清洗方法。
[0155]IDP2平台的数据集成模块的功能需求主要完成数据从数据源装载入源数据层,以及将数据源层的数据经过数据ETL和数据清洗融合装载入中间数据层的基础数据层,和将中间数据层的基础数据层数据经过ETL和清洗融合进行转化并装载入中间数据层的数据集市层中。
[0156]Kettle作为开源ETL工具,并未集成多源异构数据处理中必须的数据融合算法。因此IDP2平台对Kettle工具进行了封装,并增加了基于聚类的数据融合相关算法。平台集成了CRM算法,该算法通过数据真值与估计值的残差加权求和,逐步调整数据权重,该算法证明了数据权重计算是可收敛的,并以最后数据权重加权后的真值作为最终返回值。数据融合算法的加入,对多数据源的数据有效性进行了有效评估,通过数据融合算法对源数据进行处理,选取更接近真值的数值作为最终评价标准,保证了数据源的正确性。
[0157]第4.2、数据存储实现
[0158]本发明提出基于数据源层、中间数据层和结果表示层的三层数据存储模型。为实现底层存储模型对上层应用的透明,本发明引入了数据通道概念。
[0159]数据通道是系统中数据传输的唯一途径。IDP2系统中的通道DataChannel类维护数据传输工作,通过DataChannel维护所有数据存取的API。DataChannel的提出约束了数据传输的渠道,通过维护、优化DataChannel可以更好地规范化数据传输、提升数据传输效率、降低数据传输延迟,保证了多源异构数据存取的高效稳定。
[0160]数据通道实现底层存储对用户请求的透明。数据通道将用户对数据的请求根据用户的操作映射到不同的数据存储管理服务,数据源层数据管理、中间数据层数据管理和结果表示层数据管理则根据这些请求将用户的请求读取或写入的数据映射到数据服务器中。数据通道的提出使得用户无需知晓数据处于数据源层、中间数据层或者结果表示层,用户通过提供数据库名和数据表名,系统会自动匹配其存储层次,通过相应API获取相应层次的数据。数据存储架构图如图13所示。
[0161]在数据通道的基础上,根据实验结果,考虑Hbase的数据压缩效果,本发明选取Hbase作为数据源层数据存储;考虑MongoDB在大数据量数据访问时突出的性能,选取MongoDB作为中间数据层数据存储;考虑MySQL在小数据量频繁访问上的优势,选取MySQL作为结果表示层数据存储。
[0162]第4.3、数据分析实现
[0163]Spark作为新兴的分布式计算框架,其基于内存的运算方式使其较传统分布式计算框架Hadoop有着显著性能提升。IDP2基于Spark框架搭建了数据分析模块,表(6)展示了IDP2基于1个Master节点和3个worker节点的Spark集群配置。
[0164]表(6)Spark集群的配置
[0165]
[0166]数据分析模块分为两个部分,数据统计分析和数据挖掘分析。
[0167]其中,数据统计分析基于SparkSQL,通过java语言与三级存储架构中的中间数据层建立连接,将用户需求由图形化语言转换为SparkSQL语言,完成对数据的求和、求平均值、求方差以及计算数据条目等基本的数据统计需求。
[0168]数据挖掘分析则集成包括GBDT决策树算法和FISM关联规则算法在内的共14种分布式数据挖掘算法,涉及协同过滤、关联规则、降维、分类与回归和聚类分析五个算法领域。同时数据挖掘分析支持用户自定义算法,用户可以上传以jar包格式封装好的代码,并通过算法调用页面将参数传入后台。IDP2平台数据分析部分功能架构图如图2所示。
[0169]数据分析提供输入数据的格式转换功能,支持数值型数据和离散型数据的转换。但数据分析不鼓励这种行为,数据转换工作应在ETL中完成。
[0170]数据分析提供良好的结果转换功能,为上述所有算法提供契合可视分析格式的转换功能,将数据分析的结果存入结果表示层,为后续可视分析提供良好的支持。
[0171]第4.4、数据可视分析
[0172]作为领域大数据集成存储分析平台,IDP2不仅支持数据集成功能和分布式数据分析功能,还进一步提供了基于HTML5的网页端可视分析模块。本数据可视分析模块无需用户编码,用户仅需要进行简单的数据源选择,图表选择,数据列选择就可以生成直观、生动、可交互、可高度个性化定制的报表。
[0173]可视分析模块流程如下。首先,用户根据需要选择数据源:可选数据源为数据文件或者上层的数据分析挖掘任务的执行结果。然后,用户选择具体的数据内容作为生成图表的数据源,选择要生成的图表类型,即可产生对选取的数据源的可视化分析结果。用户可以根据自己的需要,保存生成的可视化结果。
[0174]可视分析模块基于echarts实现,echarts是百度提供的javascript图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类库Zrender。本可视分析模块在集成了echarts这些功能的基础上提供了数据输入接口,自动将用户选择数据同步到echarts图表中,降低了可视分析功能使用门槛,同时保留了用户编码模块,给用户更多的自由发挥的空间。可视化分析的主要工作流程如图3所示。
[0175]为提升用户体验,IDP2平台可视分析模块做了如下优化:
[0176]直观性优化:在用户选取数据源和数据列时,可视分析模块提供数据预览功能,在选取数据表类型后,用户可以直观的看到数据预览,并可直接选中需要的列,后台将根据用户选择的数据列自动生成图表。模块对数据显示进行了优化,不会因为数据列过多或者行过多而造成溢出。如图14所示,点击第一列和第三列,代表选中了这两列的数据。
[0177]代码编辑功能:可视分析模块支持自动生成图表,并支持用户自定义代码功能。用户编辑代码功能更大限度的给予了用户自由度,用户可以查看自动生成的代码,并按照语法进行编辑,最后通过“运行”按钮执行代码,实际效果如图15所示。
[0178]第4.5、任务流关键技术
[0179]第4.5.1任务流管理模块
[0180]IDP2平台支持任务流管理,图4给出了IDP2平台任务流管理流程图,根据IDP2任务流管理流程,用户可以对已有任务进行管理,包括立即开始任务、预约开始任务以及删除任务。同时,用户可以创建新任务;用户可以自定义新任务的执行时间;可以指定前置任务:新任务必须在该前置任务完成之后执行,一般前置任务为上游任务,这样可以根据上游任务的完成情况执行下游任务;并且设置任务类型:任务类型包括数据抽取、数据清洗和融合以及数据统计和挖掘,对于不同类型的任务,用户可以自定义任务的步骤,并需要配置相应的参数;最后,保存任务,任务即在用户设定的时间内执行。
[0181]任务流的关键就在于上下游机制,上下游机制的提出使得任务不再是孤立的任务,而是一个包含上游输入和下游访问的流式机制。任务流是有向无环图,DP2会根据任务流调度技术完成任务流中任务的执行。图16显示了包含9个任务的任务流,其中根节点为任务1,其它任务需等待任务1完成后执行。任务1包含3个子节点,当任务1完成后,三个子节点会被唤醒,如果子节点已经到达执行时间,会被任务流调度机制中的消费者带走并执行。任务8需要等待任务6和任务7完成后执行。在创建任务时平台会检验任务流是否成立,并拒绝会导致死锁的任务配置。
[0182]第4.5.2任务流调度技术
[0183]IDP2平台支持基于任务队列的生产者消费者并行任务流调度,如图5所示。其中任务队列是维护任务流的类,任务队列会根据任务执行时间和上游任务是否执行完成判断当前任务是否可以被消费者消费。生产者(Producer)负责将用户添加的任务以多线程方式插入任务队列中。消费者(Consumer)则以多线程方式从任务队列获取允许执行的任务,并交给下游执行节点执行任务。
[0184]生产者支持多线程,当用户提交任务时,IDP2平台会生成一个Producer任务保存当前任务,如果当前时刻任务队列已被其它线程锁定,生产者会睡眠直到被任务队列唤醒。
[0185]任务队列会维护所有待执行的任务列表,任务会以时间倒序排序,最接近执行的任务会被放在第一位。任务队列按照一定时间间隔检查任务是否到达执行时间,如果达到执行时间则会检查任务前置任务是否完成。由于任务队列按照时间排序,对任务的遍历在遇到未到执行时间的任务则会跳出当前遍历。如果任务执行时间已到且任务前置任务已完成,则会唤醒消费节点,消费节点如果当前没有任务,会消费该任务,并调用执行节点执行该任务。
[0186]消费者支持多线程,在平台启动时会启动多个消费者线程,如果有任务应该执行,任务队列会唤醒这些消费者线程,消费者线程如果当前无任务,会消费该任务。消费者负责提取任务,并将任务交给下游执行节点执行,消费者本身并不执行任务。
[0187]通过上述基于任务队列的生产者消费者并行任务流调度,IDP2保证了任务流的稳定执行。