摘要:大数据技术之中核心是数据分析,但在真正解决大数据问题之时,大部分工作基本都集中在数据清洗阶段,大数据清洗是大数据处理的基础。Spark作为当前最为流行的一种计算框架,能够将弹性分布式数据集,封装成大数据清洗的任务单位,通过组合,实现大数据清洗。文章将对基于Spark的大数据清洗框架设计进行研究和分析,希望能够对相关人员有所帮助。
关键词:大数据;清洗;框架;Spark
引言
目前,在我国开源内存分布式计算框架应用中最为流行的就是Spark,由于当前我国已经进入大数据时代,基于Hadoop的大数据工具已经无法满足当前的大数据处理需求,因此很多数据厂商也逐步转向在Spark上构建自己的内存分布式数据处理系统,从而为更多数据客户提供技术支持。大数据清洗是大数据分析的基础,能够提升数据质量,研究基于Spark的大数据清洗技术,对提升大数据处理质量有重要意义。
1基于Spark的大数据清洗框架介绍
基于Spark的大数据清洗框架核心主要是大数据清洗系统,其大数据操作单元是独立的Spark任务单元,单元功能从原始数据获取,直至高质量的清洁数据存入到大数据仓库,或者继续进行大数据分析。基于Spark的大数据清洗主要包括提取、转换、验证、装载等步骤,这些步骤各自含有一个或多个大数据清洗单元。
基于Spark的大数据清洗框架具有以下特性:第一,高处理性,该系统以RDD为数据封装对象,能够兼容不同的数据源,处理不同数据格式,有效解决了大数据多样性的问题;第二,高可扩展性和高易用性,该框架是开源的技术人员可以自定义编写大数据清洗单元,且该框架中大数据清洗任务的数据共享,能够通过对已有的大数据清洗操作进行组合,完成复杂的大数据清洗任务。此外,通过Web Service接口,利用配置文件组合清洗任务,控制清洗流程。
2基于Spark的大数据清洗设计思路和工作原理
基于Spark的大数据清洗框架设计思路主要是组合大数据清洗任务单元,构建清洗流水线,提交到Spark集群执行。基于Spark的大数据清洗利用Spark的Driver Program与Executor分离设计的特性,在其基础上进一步改进,无需改动Spark原有架构内容,即实现了Spark的接口扩展,创建出一套更加适合大数据清洗的框架。基于Spark的大数据清洗框架包含以下三部分:第一,Spark集群后台,这一部分是大数据清洗的核心,主要任务是将大数据清洗任务提交给Spark集群运行;第二,一套大数据清洗任务定义接口,任务单元要实现该接口,由大数据清洗系统管理任务单元;第三,流水线配置设计和大数据清洗单元库,流水线由一系列大数据清洗单元组成,定义真正执行的清洗。
原生的Spark框架下,无法提供框架所需要的调用接口,需要进一步深入分析Spark的架构模式,设计一个大数据清洗系统,能够将Spark的任务单元提交到集群运行。大数据清洗框架本身应当具有丰富的大数据清洗操作,即满足不同功能需要的清洗任务单元,在框架下,将其命名为Algorithms库。该库的设计,封装的任务单元功能尽量简单,便于重用。不同大数据清洗任务单元之间的数据共享有两种方式,第一种依赖于磁盘存储,每次完成一个清洗任务就将数据导出到外部磁盘中,可以是HDFS、HBase或者Hive等;第二种则是内存层面,RDD暂存在内存中,可以有效地提升数据处理速度,这种模式目前可以依赖于SparkContext的RDD缓存,或者利用Tachyon的内存文件系统进行管理。此外,作为一个系统平台,也得有基础的监控,这些监控设计不仅仅包括Spark,也包括大数据清洗系统本身,有助于运维和查看大数据清洗任务运行结果。同时,在进行基于Spark的大数据清洗设计时还要考虑基于集群的计算服务,考虑集群的计算资源调度以及多个Spark Context运行的机制。
3基于Spark的大数据清洗框架架构设计
基于Spark的大数据清洗框架主要功能目标是提供易于使用的大数据清洗系统,并且拥有高可扩展性,满足大规模数据的处理需求,所以在设计的底层上依赖于Spark实现。基于Spark的大数据清洗框架整体后台服务系统设计参考Spark-JobServer,围绕Jar、Context、Job三者建立服务体系,将SparkContext与实际Job内容分离,由Server管理SparkContext(即Context),将提交的Jar包,设计成Algorithms的程序,动态扩展整体平台的大数据处理功能。其整体架构如图1所示。
基于Spark的大数据清洗框架按照功能模块可以细分为五个部分,其中的Spark-ETL Web Client与Job Server就是其Web Service平台;Algorithms代表扩展的大数据清洗任务单元库,用户通过Web Service添加需要的清洗单元,与要执行的算法任务;Spark SQL代表Spark集群。这三部分模块代表了该框架最基础部分—清洗平台Server系统。而Spark-ETL SDK模块,主要是为了实现Algorithms的单元所需的SDK定的接口,以有效地将任务提交到Job Server上运行;流水线配置设计涵盖在Algorithms单元内,在实现上,基于Spark的大数据清洗除了使用单流水线模式,也设计了深度优先便利的多叉树计算流,配置大数据清洗流程。
4大数据清洗单元设计
大数据清洗单元应当按照业务需求与基础功能两个层面划分。业务需求层面指的是需要获得的数据表,一般有两个因素,第一个是整体数据需要经过的业务阶段数量,第二个是每个阶段内,涉及到的数据库表数量。一个清洗单元内部的设计有起点与终点,以及中間的计算流过程。起点是导入到单元内的数据,可以来源于外部数据导入或者从共享RDD中获取,另外数据最终会成为一张数据表,计算完时就形成了一张新的数据表,这张表可以在内存中,也可以在数据库或者文件中。
结束语
总而言之,基于Spark大数据清洗框架,能够极大降低清洗流程的祸合性,利用已有的清洗单元,灵活地实现复杂的大数据清洗,极大降低了大数据清洗的成本,最关键的是,利用Spark将大数据清洗提升到了一个新的性能水平,促进了大数据处理应用技术的发展。
参考文献:
[1]王冲,邹潇.基于Spark框架的电力大数据清洗模型[J].电测与仪表,2017,54(14):33-38.
[2]金翰伟.基于Spark的大数据清洗框架设计与实现[D].浙江大学,2016.
基金项目:山东英才学院科研项目17YCYBXS04;山东省高等学校科研计划项目J16LN55
推荐访问: 清洗 数据 研究 设计 Spark