张海涛 薛 翔
1(云南中烟工业有限责任公司 云南 昆明 650231)2(大连达硕信息技术有限公司 辽宁 大连 116023)
大数据背景下,数据驱动烟草业务发展已成为普遍共识[1-2],大数据分析技术在烟草研发领域的应用已成为研究热点,诸多理论研究成果应运而生[3-6]。同时,也产生了许多应用于烟草领域的数据云平台的研究与开发。例如:邹暾等[7]针对烟草业务特点,设计灵活可快速部署的烟草企业云平台架构;陈力等[8]构建私有云平台,整合烟草企业相关软、硬件资源,解决业务系统分散独立、整合难的问题;张君等[9]借助云平台,重构烟草企业创新流程;李益文[10]利用云平台服务,实现通省级烟草基础资源的多层级、统一管理调度。
上述研究是大数据分析技术在烟草领域应用的有益探索,但目前行业内,整合烟草研发业务多源异构数据进行烟草研发业务分析的成功案例较少。究其原因,烟草研发业务广泛的特点,导致烟草研发数据体量大、类型繁杂、存储分散的问题,精通卷烟研发业务的行业专家难以利用上述庞杂的数据有效挖掘价值,最终影响大数据分析技术在研发体系中的应用成效。
针对烟草研发体系的业务、数据、用户的特点,采用分层技术架构,构建面向用户的烟草研发体系大数据云平台,封装数据采集与存储,规范数据管理,简化数据分析流程,让烟草研发体系的“非数据专家用户”更专注于烟草研发业务本身,避免用户直面复杂的大数据分析技术和庞杂的烟草研发原始数据,降低用户大数据分析技术要求,是让烟草研发人员实现利用数据驱动烟草研发业务的重要探索和尝试。
要实现让烟草研发体系的“非数据专家用户”能够便捷地使用数据驱动烟草研发业务,需要大数据平台向下能够汇聚、处理繁杂的研发体系数据,向上能够提供简便的数据分析应用与接口服务。因此,平台总体采用分层架构,为顶层“非数据专家用户”提供简便的数据分析应用与接口服务,同时封装底层的数据汇聚、数据存储、主题数据服务等功能模块以及算法库与分析服务。以此,避免用户直面繁杂的研发体系数据,同时降低用户对大数据分析的技术要求。
平台分层结构设计如图1所示。
图1 平台总体架构图
平台的总体分层架构包含如下特征:
1) 基础资源层采用Hadoop开源分布式架构,整合烟草企业现有硬件资产。
2) 中间服务层包括数据自动汇聚、数据存储管理、主题数据服务、数据分析服务4大模块,自动采集烟草研发相关数据,实现繁杂数据的存储管理,梳理数据间血缘关系与提供主题化规范数据服务,提供机器学习算法库与分析服务。
3) 应用服务层灵活组合下层数据服务与分析服务,设计拖拽式的数据分析工具,简化数据分析与挖掘服务;构建全面restful接口,提供数据支撑和服务。
4) 平台采用分层模式,通过上层应用对底层服务的封装,避免用户直面复杂的大数据分析技术和繁杂的烟草研发数据,降低用户的大数据分析技术要求。
基于上述分层架构,实现面向业务用户的数据分析需求。
数据自动汇聚、主题数据服务与数据分析编排器,能够实现数据采集自动化、数据管理规范化与数据分析操作简便化,是简化用户大数据分析操作的关键功能。
平台管理员可根据数据源、数据类型特点,选择全量与增量接入的方式创建数据采集任务。该平台的调度管理服务会根据每个任务所设计好的处理过程和计划时间按规则分别进行调度,将数据接入平台。
数据自动汇聚功能的技术架构如图2所示。
图2 数据自动采集功能技术架构图
该平台利用Airflow作为整体的流程调度引擎。任务通过下发的方式注册到zookeeper上,并由部署在多个节点上监听的Spark服务进行实际的ETL操作。待抽取任务结束,Airflow会再次推送一个统计任务给Spark服务,以供后续分析和BI直接使用。
其中,Airflow是一款由Airbnb公司开源的,利用Python编写的可编程、调度和监控的工作流平台(http://airflow.apache.org/),同时其也是Apache基金会的顶级项目(Hadoop、Spark、Hive等都在其列)。实际部署中,平台针对云南中烟技术中心的实际需求,对Airflow进行了定制化开发,即进行了汉化和本地时区转化,新增了部分适配服务以便能更好地和数据中心进行整合。
数据抽取的过程支持全量同步和增量更新。利用Spark的资源优势和针对不同数据源的自适配,该平台可以高效地进行数据的抽取工作。依据所开发的统一且可配置的抽取流程逻辑,平台可以简便地配置一个或批量新增多个接入流程。
数据抽取规则如下:
当全量接入时,平台从内部自行进行当前数据和已有数据的比对,从而获取本次抽取数据的增量情况。同时,增量数据并入已有的数据集。全量抽取规则流程如图3所示。
图3 全量抽取规则
当增量接入时,根据原始数据的时间戳/序列号获取新数据,并接入到当前数据集内。增量抽取规则流程如图4所示。
图4 增量抽取规则
数据抽取的结果以parquet的格式存储在Hive内,存储媒介采用hudi。hudi是由Uber公司开源并在2019年年初成为Apache基金会孵化项目的一个SparkHive组件库(https://hudi.apache.org/)。利用hudi的特性,该平台可以针对存储在Hive上的数据进行可靠并且高效的更新、删除操作。同时也让这些数据支持了回滚和存储点等一些关系型数据库的特性。与此同时,hudi也源生支持SparkSQL,这让整个平台中数据的使用更加便捷。
其中,hudi的存储采用了名为COPY ON WRITE的模式。它是一种注重读取效率的数据存储模式,其具体的实现机理是针对存储在HDFS上的每个Parquet文件以“文件名_顺序号_时间戳.parquet”的形式命名。数据在存储时已排好序,当新数据到来时会先检索文件的位置,之后复制原始文件的数据并与新数据做整合,生成的新文件的文件名一致,时间戳更新为当前时间,这样便保留了更新前数据的快照和更新后的新文件。读取数据的时候,hudi会根据指定的时间来筛选过滤所需要的文件,从而达到获取指定时间数据快照的目的。
通过上述设计和技术实现,能够便捷地设置采集任务,定制化地设置采集方式和采集计划,同时,也可通过不同时间的数据快照实现数据比对功能,从而能够实时查看数据采集情况。对于云南中烟研发数据多源异构、来源繁杂的特点,可以通过上述功能实时查看不同来源的数据采集情况,从而定制化地设定采集任务。
除进行比对外,还可以通过统计任务对抽取数据的结果增量进行多维度的统计,包括数据的增量情况、空值率(每个空值行数占当前列总行数的比率)、健康度(所有列非空值率的)、字段饱和比(一个表列都有值的个数/所有列的个数)、数据集中度(总数排名前20的表的总数占总体的比率)等。
相应的统计数据可提供到云南中烟其他业务系统中进行展现,如图5和图6所示。
图5 统计数据展现示例一
图6 统计数据展现示例二
主题数据服务功能可自动梳理不同源数据间血缘,挖掘原始数据至主题数据的映射关系,避免“业务专家”用户直面繁杂的原始数据,便于用户理解、使用和管理繁杂的烟草研发数据。
主题数据服务功能技术架构如图7所示。
图7 主题数据管理功能技术架构图
血缘梳理模块根据用户选定主题,基于数据表字段信息,从数据库和数据表两个层次梳理不同源数据间血缘关系,构建分层数据血缘关系拓扑图。
逻辑映射模块根据数据血缘关系,将繁杂的烟草研发体系原始数据映射至紧扣主题、关系清晰的主题数据,将原始数据权限规则转换为主题数据权限规则。
在数据权限上,该平台引用了Ranger(https://ranger.apache.org/)作为整个大数据平台的权限管理服务。在平台的构建过程中, Hive数据库与平台的用户体系(认证)挂钩,利用Ranger的数据权限的功能(可针对到库、表、字段甚至行一级别),管理者可以很好地控制平台用户的数据使用权限,对应用户只能看到被分配的数据,并且可对敏感数据进行加密或者去除,保障了数据资产的安全性。
通过数据主题服务,能够将烟草研发业务中的如原料、配方、材辅料等某一主题相关的数据从来源繁杂、多源异构的状态,转化为标准、统一的主题数据,从而便于“非数据专家用户”理解及使用。
平台提供了可视化的数据编排工具,用户可以根据自己的需求以及逻辑使用编排器提供的组件自由组合和处理数据。这样的设计可以有效地降低用户对大数据分析技术的要求,简化大数据分析过程的操作,使得“非数据专家用户”也能便捷地使用该服务。
图8为通过编排器生成的一个主题数据的流程图。编排器上的每个节点为针对数据进行的一个细粒度的操作,编排器在执行时会将这些节点组合起来形成一个有向无环的流程图,并发送给Spark成为各自的算子。在编排器的任务执行时,Spark会调用相应数据与分析算法运行数据分析处理逻辑,返回分析处理结果在可视化编辑层展示。
图8 数据编排器示例图
经过分析处理后的结果会以Parquet的形式回存到数据平台内部,并可以在前台构建成为数据缓存或者可视化组件的数据源,用以提供后续再编排或者实际用户的分析使用。
数据分析编排器整体技术框架如图9所示。
图9 数据分析编排器整体技术框架
数据编排器与前置的功能紧密结合,同时,构建编排来源的输入节点与来源数据的变化直接挂钩。除了可以自己制定任务编排的执行计划时间以外,当某个数据汇聚的任务结束或者已有的主题数据重新生成的时候,平台会对任何引用了对应数据的编排任务进行自动更新,并重启该任务刷新已有的输出结果。数据分析编排工具的底层在输出到主题数据的同时也会自动构建主题的血缘关系,以达到自动化构建映射关系的目的。
数据分析编排器可让“非数据专家用户”便捷地实现数据的分析及图形化编排,对于云南中烟的研发数据体系,用户即可对原料、配方、材辅料等某一主题的数据进行编排分析,也可实现对多个主题数据的交叉编排分析,从而为真正实现数据驱动研发业务提供了应用基础。
以云南中烟烟草研发体系数据为例,构建满足上述功能的大数据分析云平台,自动汇聚原料综管、精益研发、烟叶配方、主数据管理等13个信息系统,共计259亿余条数据,梳理物料管理、实验室管理等主题业务的数据血缘关系并构建相应主题数据库,完成“实验室数据分析”“物料管理优化”“原料库存结构优化”等多个业务场景的大数据分析应用。
以“实验室数据分析”应用为例,对面向用户的云南中烟烟草研发体系大数据云平台的应用流程与应用结果进行实例验证。
“实验室数据分析”应用实例(简称“应用实例”),综合各类型实验室监测数据分析,分析卷烟生产质量及其监控现状,了解卷烟质量监控实际情况,实时分析实验室设备的使用情况、使用饱和度等,以保障卷烟产品质量、风格稳定,是一个典型的大数据分析应用场景。
3.2.1数据自动汇聚
“实验室数据分析”应用实例的数据来源主要为实验室信息管理系统,数据自动汇聚方案设计如表1所示。
表1 实验室信息管理系统数据自动汇聚方案
3.2.2血缘关系分析
卷烟及其原料、香精香料、物料等相关的理化实验检测结果数据,均通过实验分析过程获取,为此,以“实验编号”集合为主题“源”数据,自动梳理应用实例相关的数据后所得到的血缘关系如图10所示。
图10 数据血缘关系拓扑示例
3.2.3流程编排运行
采用数据分析编排器,以拖拽的方式,构建如图8所示的应用实例的数据分析处理逻辑。经过图9所示的应用实例中的各项数据编排处理后,可通过平台内可视化组件形成如图11所示的可视化表达结果。具体地,通过可视化呈现了实验室的各类统计数据,如人员统计、设备统计、生产报告、承接任务统计等。另外,可以进一步查看实验室设备的使用饱和度及贡献度,同时,对各项检测指标进行分析,可以得到各卷烟厂产品的物理指标稳定性及化学指标稳定性情况。
图11 可视化分析结果的展示界面
本文以“实验室数据分析”为实例,自动汇聚LIMS系统中的卷烟原料、香精香料、物料的理化实验检测数据,与实验相关的人、机、物、料、环管理数据,以“实验编号”集合为主题源数据,自动梳理应用实例相关数据血缘关系,采用数据分析编排器,构建并自动执行应用实例的数据分析处理逻辑,得到应用实例的大数据分析结果。
应用实例的分析过程与分析结果表明,面向用户的烟草研发体系大数据分析云平台,采用分层架构,实现上层应用对底层服务的封装。其中,上层应用使用拖拽式数据分析处理流程编排,封装复杂的大数据分析算法技术和繁杂的烟草研发体系数据,降低用户使用大数据分析技术驱动烟草研发业务发展的技术要求。底层服务的数据自动汇聚方案根据预设数据采集模式,自动汇聚烟草研发原始数据,无须用户主动干预;主题数据服务根据用户指定主题,自动梳理主题数据血缘关系,构建主题数据库,为用户提供规范化的数据管理与应用服务。
烟草研发业务环节众多,涵盖配方、原料、烟用材料、调香、工艺、消费行为等方面,各业务平台系统复杂多样,数据异构异质。如何梳理研发业务中所产生的海量数据,盘活数据资产,是行业内目前面临的一个课题。
本文所构建的面向烟草行业研发应用的大数据分析平台,采用了分层架构体系以及下层服务对上层应用透明机制。概括来说,本文所述大数据分析平台的构建,具有几个方面的典型特点,即数据自动采集功能可屏蔽业务数据来源、数据类型的复杂性,面向业务的
主题数据管理功能可简化对海量复杂数据的管理,可视化数据分析编排器则能够封装各类型复杂数据分析算法及其数据分析应用。
通过上述体系及机制,可让用户在基于该平台进行烟草研发数据的分析挖掘时,更专注于研发业务本身,有利于大数据分析技术在烟草研发体系中的推广应用,为烟草研发体系业务的发展提供了可落地应用的手段和方法。与此同时,本文所提出的大数据平台的构建和实施机制为类似的大数据业务场景提供了参考和借鉴。