一种hadoop集群运行ETL流程的方法及装置制造方法及图纸

技术编号:26304049 阅读:19 留言:0更新日期:2020-11-10 19:59
本发明专利技术涉及数据处理技术领域,具体涉及一种hadoop集群运行ETL流程的方法及装置,其中方法包括:根据ETL流程中的reduce节点将流程分解为一个或多个MRWork;将MRWork的数据源进行分片;MR Job自定义DelegateMapper来运行MRWork中的mappergraph,mapper数由MRWork的数据源总分片数决定;MR Job自定义DelegateReducer来运行MRWork中的reducer graph。本发明专利技术实现了基于hadoop的分布式ETL框架,数据源拆分为多个分片数据源,从而把流程分解为可并发运行的多个子流程,可极大提高流程并发处理能力。

【技术实现步骤摘要】
一种hadoop集群运行ETL流程的方法及装置
本专利技术涉及数据处理
,提供了一种hadoop集群运行ETL流程的方法及装置。
技术介绍
ETL是数据处理、构建数据仓库的一个重要工具软件,完成异构数据源的抽取、清洗转换和加载的一个过程。传统的ETL一般是把流程发布到一个集中的ETL服务器节点上运行,所有的流程或流程内组件的运行均采用多线程机制,再多的流程也只能在一个单一节点运行,并且一个大数据的处理流程,也无法提高数据处理的性能。Hadoop大数据平台在大数据处理中已经取得相当广泛的应用。MapReduce是面向大数据并行处理的计算模型、框架和平台,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。ETL配置的流程一般为DAG有向无环图,但hadoop提供的两个简单的mapreduce函数只能完成简单DAG图的运行,无法完成稍微复杂一点DAG图的运行。而且,Hadoop虽然也提供了ChainMapper和ChainReducer的链式mapreduce,但在数据源的分区、分区数据源读取、ETL流程运行完整性、使用的方便灵活性和通用性等方面都存在一定的缺陷。鉴于此,克服上述现有技术所存在的缺陷是本
亟待解决的问题。
技术实现思路
本专利技术需要解决的技术问题是:传统的ETL一般是把流程发布到一个集中的ETL服务器节点上运行,再多的流程也只能在一个单一节点运行,数据处理性能较差;如果利用hadoop提供的mapreduce函数则只能完成简单DAG图的运行,且在数据源的分区、分区数据源读取、ETL流程运行完整性、使用的方便灵活性和通用性等方面都存在一定的缺陷。本专利技术通过如下技术方案来解决上述技术问题:第一方面,本专利技术提供了一种hadoop集群运行ETL流程的方法,包括:根据ETL流程中的reduce节点,将ETL流程分解为一个或多个MRWork;其中,每个MRWork的组件在一个mapreduce中运行;对于每个MRWork,MRJob通过自定义DelegateInputFormat,分别将MRWork的每个数据源都拆分为多个分片数据源;MRJob通过自定义DelegateMapper重写Mapper的run方法,来并发运行MRWork中的mappergraph;其中,MRWork中的mapper数由MRWork的数据源总分片数决定;MRJob通过自定义DelegateReducer重写Reducer的run方法,来并发运行MRWork中的reducergraph;其中,MRWork中的reducer数根据reduce节点和/或hadoop集群可申请container数进行设置。优选的,在所述MRJob通过自定义DelegateReducer来运行MRWork中的reducergraph之后,所述方法还包括:通过重写mapreduce的OutputFormat为DummyOutputFormat来设置MRJob输出,并提交MRWork所在的MRJob。优选的,当ETL流程被分解为多个MRWork时,按照所述多个MRWork之间的依赖关系,先后处理每一个MRWork。优选的,对于任一MRWork,MRWork的运行依赖于其他MRWork的FileSink节点;则在处理该MRWork时,当该MRWork所依赖的FileSink组件运行完成后,再提交该MRWork运行。优选的,所述MRJob通过自定义DelegateInputFormat,分别将MRWork的每个数据源都拆分为多个分片数据源,具体为:MRJob设置InputFormat为自定义的DelegateInputFormat,以便由DelegateInputFormat委托处理MRWork每个数据源的SourceInputFormat;每个SourceInputFormat通过重写getSplits,实现对应数据源的分片以及对分片的读取。优选的,在每个SourceInputFormat重写getSplits之后,所述方法还包括:每个SourceInputFormat通过重写createRecordReader来实现自己数据源的读取;其中,对于hadoopmapreduce框架本身支持读取的数据源,实现分片数据源数据格式的recordreader接口;对于hadoopmapreduce框架本身不支持读取或支持度不满足要求的数据源,将createRecordReader定义为DummyRecordReader,数据源读取不会访问,直接在mappergraph实现自己数据源的读取,也就是子流程的数据源节点的读取,只不过只能读取自己分片split的部分数据。优选的,所述reduce节点为排序组件、聚合组件、连接组件、增量比对组件或去重复组件。优选的,如果ETL流程中无reduce节点,则将ETL流程分解为一个MRWork,对应在一个mapreduce中运行;如果ETL流程中有X个reduce节点,且ETL流程中没有不带reduce节点的分支,则将ETL流程分解为X个MRWork;如果ETL流程中有X个reduce节点,且ETL流程中含有不带reduce节点的分支,则将ETL流程分解为X+1个MRWork;其中,X≥1。优选的,所述MRWork中的reducer数根据reduce节点和/或hadoop集群可申请container数进行设置,具体包括:如果ETL流程中无reduce节点,则MRWork中的reducer数设置为0;如果ETL流程中有reduce节点,且reduce节点为排序组件,则MRWork中的reducer数设置为1;如果ETL流程中有reduce节点,且reduce节点为连接组件、聚合组件、增量比对组件或去重复组件,则MRWork中的reducer数根据hadoop集群可申请container数设置为1个或多个。第二方面,本专利技术提供了一种hadoop集群运行ETL流程的装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的hadoop集群运行ETL流程的方法。与现有技术相比,本专利技术的有益效果是:本专利技术实现了基于hadoop的分布式ETL框架,这种分布式ETL将流程分解为一个或多个MRWork提交到hadoop集群环境中执行,并且把数据源拆分为多个分片数据源,从而把流程分解为多个子流程,这些子流程可并发运行于hadoop集群环境,可以极大提高流程并发处理能力;另外,reducer数可根据reduce节点和/或hadoop集群可申请container数设置,通过设置合适的redu本文档来自技高网...

【技术保护点】
1.一种hadoop集群运行ETL流程的方法,其特征在于,包括:/n根据ETL流程中的reduce节点,将ETL流程分解为一个或多个MRWork;其中,每个MRWork的组件在一个map reduce中运行;/n对于每个MRWork,MRJob通过自定义DelegateInputFormat,分别将MRWork的每个数据源都拆分为多个分片数据源;/nMRJob通过自定义DelegateMapper重写Mapper的run方法,来并发运行MRWork中的mapper graph;其中,MRWork中的mapper数由MRWork的数据源总分片数决定;/nMRJob通过自定义DelegateReducer重写Reducer的run方法,来并发运行MRWork中的reducer graph;其中,MRWork中的reducer数根据reduce节点和/或hadoop集群可申请container数进行设置。/n

【技术特征摘要】
1.一种hadoop集群运行ETL流程的方法,其特征在于,包括:
根据ETL流程中的reduce节点,将ETL流程分解为一个或多个MRWork;其中,每个MRWork的组件在一个mapreduce中运行;
对于每个MRWork,MRJob通过自定义DelegateInputFormat,分别将MRWork的每个数据源都拆分为多个分片数据源;
MRJob通过自定义DelegateMapper重写Mapper的run方法,来并发运行MRWork中的mappergraph;其中,MRWork中的mapper数由MRWork的数据源总分片数决定;
MRJob通过自定义DelegateReducer重写Reducer的run方法,来并发运行MRWork中的reducergraph;其中,MRWork中的reducer数根据reduce节点和/或hadoop集群可申请container数进行设置。


2.根据权利要求1所述的hadoop集群运行ETL流程的方法,其特征在于,在所述MRJob通过自定义DelegateReducer来运行MRWork中的reducergraph之后,所述方法还包括:
通过重写mapreduce的OutputFormat为DummyOutputFormat来设置MRJob输出,并提交MRWork所在的MRJob。


3.根据权利要求1所述的hadoop集群运行ETL流程的方法,其特征在于,当ETL流程被分解为多个MRWork时,按照所述多个MRWork之间的依赖关系,先后处理每一个MRWork。


4.根据权利要求3所述的hadoop集群运行ETL流程的方法,其特征在于,对于任一MRWork,MRWork的运行依赖于其他MRWork的FileSink节点;则在处理该MRWork时,当该MRWork所依赖的FileSink组件运行完成后,再提交该MRWork运行。


5.根据权利要求1所述的hadoop集群运行ETL流程的方法,其特征在于,所述MRJob通过自定义DelegateInputFormat,分别将MRWork的每个数据源都拆分为多个分片数据源,具体为:
MRJob设置InputFormat为自定义的DelegateInputFormat,以便由DelegateInputFormat委托处理MRWork每个数据源的SourceInputFormat;
每个SourceInputFormat通过重写getSplits,实现对应数据源的分片以及对...

【专利技术属性】
技术研发人员:高东升付铨梅纲
申请(专利权)人:武汉达梦数据库有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1