论文部分内容阅读
现代企业中,数据的分析处理等工作往往需要大量的数据抽取、转换和加载(Extract,Transform and Load,ETL)等工作,ETL是数据集成的一种主要解决方案。本论文来源于公司的实际研发项目,由于企业现有的ETL系统存在单机宕机和功能复杂的问题,为解决ETL作业中的宕机和难以使用的问题,本文设计实现一个ETL的数据集成系统,将企业内部各种应用数据集成到一起,供数据分析使用;数据分析的结果,也通过本系统以接口的方式对外提供服务。在ETL数据处理的过程中,面临着数据源多样性、数据的不规范和任务执行过程中的系统稳定性等问题,本文采用分布式架构的设计理念,将系统分成三个基础服务;利用Spark平台的大数据处理能力,Kafka的异步解耦能力及搜索引擎ES的数据查询能力,对ETL作业过程进行了异步解耦,优化数据抽取方案,解决数据处理难题,实现了一个具有可扩展性的分布式ETL数据集成平台。其主要工作内容如下:(1)需求分析与架构设计:对ETL作业作了需求分析,并进行了分布式架构设计;考虑到服务生命周期的不一致,将系统解耦为三个基础服务,详细阐述了解耦的原理及三个服务间的关系;(2)三大基础服务详细设计实现:本部分主要详细解释了任务调度器、执行引擎和监控系统三个基础服务各自的设计与实现。其中任务调度器实现了ETL任务的管理、状态更新,包括任务的DAG解析等;而执行引擎将经过DAG图解析后的Job任务缓存执行;监控系统负责ETL执行过程中的数据源、目标源和执行渠道的监控与智能决策;(3)工程测试:部署了测试环境,分别进行了单元测试、集成测试、分布式部署测试和算法测试。项目采用敏捷开发模式,目前已完成了整体的架构设计和两次的迭代开发。执行引擎部分,完成了针对普通任务的Spark集群方式和定时任务的多线程渠道方式的开发,已经测试并进入灰度发布环节;监控系统部分,本文首次设计并实现了数据库相关指标监控和智能决策算法,并将其完整地应用到了整个的工程中去。在新的一期计划中,还需要增加Flink渠道、其他类型模板及部分数据处理的机器学习算法。