基于Spark的烟草大数据分析系统的设计与实现
2022-03-26许伟胡婷
许伟,胡婷
(宿迁市烟草专卖局(公司),江苏 宿迁 223800)
0 引言
企业数据仓库的数据量急剧增加,非结构化数据类型不断增多,给企业带来了严重的后果,导致烟草数据管理起来较难。传统数据仓库系统面临数据存储、数据处理、分析与展示等方面的挑战。如系统算力的干扰难以攻破、网络延迟带来的计算结果不准确,甚至会影响到整个分析系统,因此可以通过增加软硬件资源来解决,高端服务器和存储设备价格高又增加了系统运行成本。针对以上问题,设计了一个基于Spark技术的烟草大数据分析系统,期望解决当前存在的问题。
1 烟草商业大数据需求分析
经过调查,烟草行业中的商业数据特点为:
第一,关心烟草企业的业务环节,如供应链数据、仓储数据、零售户库存数据等,通过这些数据的管理能够为优化业务流程提供帮助[1];
第二,提供方便的搜索查询功能,使用户可以资源共享,查询到所需要的数据内容,并且能够对搜索平台不设置限制功能;
第三,提高数据响应速度,实时反馈烟草数据,改变以往获得前一天数据的情况,提高烟草企业数据的实时性。
2 系统架构
2.1 基础资源层
基础资源层主要包含资源存储与资源计算两个部分,在资源存储上,主要关注容量、成本、性能、可扩展性与安全性。由于烟草商业中数据较多,为此采用分布式的数据保存方法来进行下载,并且扩大储存盘的容量,使数据能够顺利进入数据库,避免出现丢失的现象,保证性价比处于一个平衡的状态。在数据安全方面,采用最小权限原则对管理员权限方式对数据管理,防止管理员非法获得用户的数据。
对于资源供给来说,要为系统提供一个有秩序的、智能化的[2]的计算资源,虚拟化是非常重要的一步,为此需要创建一个完整的计算资源平台,利用PC服务器的续航功能来完善平台,从而形成一个科学合理的数据资源动态调换。
2.2 数据管理层
(1)结构化数据管理:该种数据管理主要是对关系型数据查询和应用,在管理上,通过系统的分类功能将数据进行分类,然后输入数据仓库中,利用分布式排列方法来将数据与物理节点一一对应,利于用户的快速查询与共享操作,进一步增加系统的整体性。
(2)非结构化数据:与结构化数据不同的是,它不受系统的控制,上述数据仓库不能将其保存,因此通常使用NoSQL数据库来对烟草数据进行分类识别,并利用大批量数据共同处理的方式来计算。NoSQL可以直接获取数据的结构与性能,不受任何条件约束,基于其良好的延展性,应用起来性能较好。
(3)数据流管理:烟草商业生产过程中一些数据的价值随着时间流逝价值逐渐降低,为此需要对这些数据要快速处理。
数据库管理模块是大数据系统的核心处理器,不但贯穿于整个处理系统,还管控着数据信息搜索模块与终端分析模块。而数据库管理主要是存储和生成烟丝生产数据的蜂窝表、删除无效数据源等,数据源管理模块可满足用户在本系统HDFS文件系统中存储的数据源对应蜂窝表格列表显示,方便用户了解和操作现有的烟丝生产批次数据源。该模块的功能设计包括:增加数据源、创建数据源配置表以及删除数据源[3]。在系统数据源中创建配置单元表,其目的是为数据查询分析和数据分析提供表数据,方便用户进行查询分析。
2.3 分析支撑层
2.3.1 商业智能
对于结构化数据,虽然数据的内容以及格式都不相同,但为了便于管理,都要参照一个统一的度量标准,有计划地对企业业绩与未来发展的前景进行预测。在分析上采用Cognos技术对数据中心处理,对日常销售、烟草供货、财务等多种主体分析应用,为经营决策提供参考。
2.3.2 数据科学
在分析系统中,科学的数据结构至关重要,数据科学需要由专业的数据分析与数据处理人才构建理想的分析模型,此次研究中主要采用Alpine技术。
2.3.3 建立专有企业平台
建立统一的专有企业平台,聚集所有相关的大数据,并进行统一管理,可为用户提供便利的查询与搜索功能,还可以将用户的反馈信息与建议收纳到应用后台,使员工能够在企业内对其访问。
2.3.4 虚拟化桌面
当企业员工不能直接运用计算机进行统计,并且网络不能够顺畅使用,这就会出现漏洞,为此,可以建立一个虚拟化的平台,创建网址仅供内部员工使用,以免发生重要信息泄露的情况。在虚拟化桌面中,出现的只是后台的操作页面,并不显示主要的数据信息,进一步提高了数据的安全。
2.3.5 数据查询分析
查询分析模块主要对现有烟丝生产历史数据对应的蜂巢表格进行查询分析,以饼图、直方图、折线图等报表及图形形式显示查询分析结果。有助于用户从大量烟丝生产历史数据及数据统计分析结果中获得所需数据。
本模块主要提供了HQL(Hive SQL)查询和SparkSQL查询两种查询分析方法。该系统的底层设计是基于Spark计算框架的,所以在Spark上也实现了HQL查询和SparkSQL查询等功能。HQL查询的默认实现基于Hadoop的Map-Reduce计算模型。但是,Map-Reduce计算模型的计算效率远远低于Spark,因为它在作业执行期间被多次写入磁盘,而Spark支持Hive[4]。这样,通过在Spark计算框架上实现HQL查询,可以满足HQL查询在Spark上实现的要求,充分利用Spark的快速计算能力,缩短HQL查询的响应时间,不仅改善了Hive查询的性能,而且为用户提供了更灵活的查询分析方法。其中,配置单元查询分析负责配置单元数据仓库中的数据表的查询与分析,主要包括配置单元的实时查询和定时查询两个功能。实时查询能够满足用户有选择地设置主要数据库、统计表、历史记录浏览网址,然后根据三者的相关性对SQL查询语句进行编辑。这种方式可以减少用户的学习成本,另一方面,在编写查询语句之前,帮助用户澄清目标数据表的结构信息。这样不但节约了企业的资金,还为用户提供了福利,并且在编写查询语句之前,协助用户再一次确认数据的基本内容。例如,假如将即将要搜索的语句固定时间查询,设置为每日北京时间19:00,并可以重用常规查询的结果,如创建一个新的配置单元表和导出最新的查询结果。
2.3.6 数据分析功能模块
资料分析功能模块主要是根据系统现有的制丝批量数据,简单描述出与数据库中类似的数据,然后分析出烟草工艺的制丝质量与近似值。该模块具体的五个步骤:收集大量的数据信息、输入系统源头、提取其中主要目标、分析主要特征、数据计算以及分析结果可视化。流程可以具体概括为以下几个方面。
(1)收集大量的数据信息:采集信息的范围是Hive数据仓库。用户首先要确定一种烟草的品牌,在此基础上查询该香烟的具体数据,然后输入代对应的入口,对香烟的品牌与数据信息进行捆绑。
(2)提取其中主要目标:其中最常到的是含水率和检测值两个分析目标。使用者按照自身需要来挑选相应的分析目标,并对目标与系统之间设置链接。
(3)分析主要特征:在正在分析的数据库中,按照使用者喜好的数据特征要筛选分析目标,优胜劣汰,然后对目标进行指导与处理。
(4)数据计算:分析了烟草的结构与工艺技术后,就可以提取其中的关键信息,利用线性回归的方法计算,然后直接将结果使用在场景分析中,计算出与分析目标相关的工艺指标权重,为用户提供高相关性的工艺指标,优化关键指标控制参数,确保卷烟产品质量。
(5)分析结果可视化:经过算法计算,分析结果直观地显示,便于工艺人员快速了解与分析目标相关的工艺指标信息,为进一步决策分析提供依据。
2.4 集群监控功能模块构建
监控模块顾名思义就是为了实时监测后台程序的运行情况与工作状态,可以直观地看到集群资源的不正常情况与故障预警,利于工作人员对系统的维护与检修,提前做故障出现决策,在系统发生异常时,能够做报警提醒,减少安全事故的发生。
在SparkStreatming实时计算框架上实现了该模块,Flume收集了与集群运行相关的系统中的日志数据,然后传送给Kafka。在交互式的基础上,实时统计计算日志数据。在Redis数据库中存储计算结果,前端集群监控接口调用数据接口来显示当前系统的集群操作。
2.5 系统数据仓库设计
在设计和使用数据库和数据仓库系统方面有很大的不同。第一,数据库主要处理的是一些软件或者应用的突发事件,并不具备太大的储存空间,而且处理迅速,只应用于较少的数据软件,但一般用户数多。而数据仓库主要是类似分析模块的数据处理中心,是集导入、分析、处理域一体的一个终端系统,该系统的核心是使用者,并且大量的数据可以同时搜索,但需要花费更多的时间。
该系统旨在满足sparksql和HQL查询分析的需求,Spark对Hive的支持也很好。构造一个基于HDFS文件系统的Hive数据仓库,查找出相邻组件之间的关系,就可以直接进行映射,不受数据库大小的约束。数据查询分析和数据分析是两个不同的概念,具体可描述成两个表的形式:数据导入表与SQL结果查询表,后续的服务功能与分析模块可以相互转换,利用Sqoop工具使烟草的生产数据徘徊在在关系数据库和HDFS之间,为新存储的数据源创建相应的配置单元表,以及管理My SQL中配置单元表所包含的源头数据表[5]。Hive自身不具有储存功能,也不能为用户提供搜索引擎。当创建一个配置单元表时,可以简单地指定列分隔符和行分隔符,不限制表达内容与格式,可以自由搭配。然而,Hive并不能很好地将数据进行保存,数据会通过传输储存在HDFS中,Hive只负责将数据移动到系统外表,并且公开在资源平台上。在这种情况下,内部表通常是配置单元中创建的具有数据所有权的普通表。当删除内部表时,还删除了相应的数据。然而,外部表不一样,它们只使用数据的权限,用户可以直接访问数据,只要数据格式和数据位置是相关的。当外部表出现失误产生误差,配置模块会根据表的重要程度,选择性地删除查询率较低的一个,并不会对重要内容做更改,因此为了避免该情况发生,系统中可以呈现的表的格式都为外部表。本文以烟草生产的工艺数据为数据来源,通过qoop工具导入HDFS。
3 应用效果分析
为验证基于Spark的烟草大数据分析系统的有效性,以零售户订单数据为例,考察该系统的查询效率,并将其与传统系统对比,对比结果如图1所示。
基于图1可知,在数据量较小时,所研究系统与传统系统的查询时间均较少,但是随着数据的增加,传统系统的查询时间消耗越来越多,查询效率较低。而所研究系统查询时间收到数据多少影响不大,均能够在短时间内完成数据的查询。
图1 查询效率对比
4 结语
本文基于Spark的烟草大数据分析系统进行了设计,并对系统的每一个模块的功能进行了检测,而主要用到的管理模块与分析模块也在系统中占据着主导作用,不但可以简单地分析出烟草生产链的每一个步骤,还提高了系统的应用效果。