分享

基于Hadoop生态系开发的通用数据摄取平台Gobblin入门


问题导读


1.Gobblin是什么?
2.Gobblin Job流程包含哪些流程?
3.Gobblin 如何设计的,包含哪些功能?






Gobblin是一款由LinkedIn基于Hadoop生态系开发的通用数据摄取平台。Gobblin可对db、api、ftp等大量数据源的数据进行etl。简单的说,Gobblin可以作为从数据源读取数据并进行统一处理的数据中转站,并将数据存储在hdfs上。在使用过程中,需要了解Gobblin的具体布置位置、作用、Job Conf的编写等,逐步进行深入。



一、Gobblin架构
                                                                      1.png    


obblin建立在一系列的基础结构上(如图中浅绿色所示),这些基础功能结构以一种确定的方式统一工作,并进行数据的摄取。这些功能结构通过指定可插式的job configuration文件进行工作,并通过增加或扩展job configuration文件内容进行功能延伸。
一个Gobblin任务由一系列task构成,每一个task联合了一个unit of work,并摄取一部分data。Goblin的task运行在已选的开发环境上(如图中红色所示),由Gobblin Runtime进行执行(如图中橙色所示)。Gobblin Runtime用来处理用户定义的Job,对其进行job和task的调度、错误处理、task重启、resource转让和管理、状态管理、数据质量check、数据分发等。目前Gobblin可支持hadoop、single node和yarn3种环境。同时,Gobblin由一些组件和公用工具所支持,如监控、元数据管理和存储等。(蓝色区域所示)


二、Gobblin Job流程
Gobblin从一个已定义好的数据范围或序列中摄取data,并将data写到诸如hdfs等存储系统中。job的lifecycle如下图所示:
                                                                         2.png
1.申请job lock,防止运行下一个调度的same job会产生冲突,直至当前job运行结束,解锁job lock。这个步骤是可选的,因为诸如Azkaban之类的调度器已经具备了这个功能。
2.从job configuration已指定的source class中建立样例。Source class会将data摄取工作分配到一系列work unit中,每一个logic work unit摄取一部分data。这种设计是模仿了hadoop的InputFormat(Split和RecordReader)功能。
3.建立task作为 workunit的副本(1对1)。
4.在Hadoop环境中,task运行在mappers中。
5.task结束后,进行数据的publish。Data publish取决于task states和JobCommitPolicy。
6.Data publish后,job会将job/task states进行保留,以便job的下一个调度器进行调用,states存储在Hadoop中。
7.Clean一些临时的working data。
8.Unlock job lock。Job结束后,所有job/tasks states和data都将不被保留。


三、Gobblin 设计

                                        3.png    


Source:Gobblin和data source的接口,负责给每一个work unit分配data 摄取工作、建立Extractor。
Converter:Data转换器的核心。可按1:0、1:1、1:n进行数据转换。
Quality Checker:检测data records是否能在task flow的下一阶段使用,检测所有task output是否可以被commit。
Fork Operator:将一个task flow分支成多个streams,每一个 stream对应一个configured sink。
Data Writer:将data records写入相关联的data sink中(采用Avro序列化的格式写入hfs中)。
Data Publisher:将data吸入最终的job output目录中。


四、Task Flow

                                                                4.png


了解各部件功能就能理解Task Flow。


五、Job 调度
一般使用Azkaban、Oozie或者Crontab调度器。默认在single node环境中使用Quartz调度器。




已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条