gobblin培训文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Gobblin Architecture
• 组件详解
Converter Converters之间都是兼容的并能和其他转换器链接在一起,在数据输入结构、输出结构和数据记录类 型上只要是一对转换器(输入和输出)都是兼容的。注意 一个Converter转换一个输入架构到一个输出架 构。转换一个输入数据记录可以到0(1:0 mapping),1(1:1 mapping),or许多(1:N mapping) 输出数据记录。 •
Gobblin Architecture
• 失败处理
作为一个容错数据摄取框架,gobblin部署了多个防御级别对作业和任务的失败。对于作业失败, gobblin跟踪工作连续失败的数量和可选的,如果数量超过定义的阀值会发送警告邮件,以便作业的所有者 可以跳过和检查故障发出的报警邮件。对于任务失败,gobblin会尝试失败任务在作业配置的最大次数。 除此之外,Gobblin还提供了一个选项,以使相应的跨作业运行失败任务的workUnit重试。如果一个任务 在所有重试都失败,则WorkUnit在此基础上被自动创建任务包括下次运行的作业如果这个重启类型开启 的话,这种重启类型是非常有用的在处理间歇性故障例如临时数据源的宕机
Gobblin Architecture
• 工作流程
摄取组件比较:
gobblin
Source WorkUnit Extractor
hadoop
InputFormat InputSplit RecordReader
功能
控制数据分割和读取 数据块 读取器
下一步,为每个工作单元(WorkUnit)创建任务(hadoop map任务),也可以通过一个特殊的MultiWorkUnit(包装 了多个WorkUnit)创建多个任务。 下一步,启动和运行任务,在单个节点上的独立模式中,任务是在专用于该作业线程池运行,它的大小是在每个作业基 础上进行配置。在Hadoop集群上的Hadoop MapReduce的模式,任务在运行映射器(纯粹用作容器运行的任务)。 下一步,作业完成,对于数据发布,由任务状态和JobCommit政策确定 JobCommitPolicy.COMMIT_ON_PARTIAL_SUCCESS 部分成功就可以 JobCommitPolicy.COMMIT_ON_FULL_SUCCESS 所有任务都成功才可以 下一步,数据发布后,作业持久话作业/任务的状态到状态存储,类似于集成的_STARTTIME,将这一次的最大时间或者 id写入到存储中,gobblin中称为水印(watermarks ) 下一步,清理临时目录;最后,删除锁。
Gobblin Architecture
架构图:
Gobblin Architecture
• 架构概述
浅绿色部分是Gobblin的结构体,都提供了相应的接口和简单通用实现,所有的结构体通过配置添加 或扩展现有实现,实现可扩展可插拔。 绿色部分是Gobblin的工作单元或工作任务。 橙色部分是作业和任务的执行器和任务状态管理器,属于部署环境,用于作业和任务的实际执行。
Gobblin培训文档
孟云雷 2016/05
目录
Gobblin Introduce Gobblin Architecture Gobblin Deployment Gobblin Schedule
JDW 京东数据 仓库业务
Gobblin on Yarn
Gobblin 介绍
Gobblin 是一个通用数据集成框架,从一些数据源(如:数据库,rest APIs,FTP/SFTP服务器,文件 目录等)抽取、转换和加载海量数据到Hadoop上。Gobblin 处理日常规划任务需要所有数据摄取 ETLs, 包括作业/任务规划,任务分配,错误处理,状态管理,数据质量检测,数据发布等等。 Gobblin 通过同样的执行框架从不同数据源摄取数据,在同一个地方管理所有不同数据源的元数据。 同时结合了其他特性,比如自动伸缩,容错,数据质量保证,可扩展和处理数据模型改革等等。Gobblin 变得更容易使用,是个高效的数据摄取框架。
job.name 作业名称 job.group 作业组 source.class 源类 converter.classes 转换类 最外层配置会被最里层的相同的配置覆盖 root_job_config_dir/ common.properties foo/ foo1.job foo2.job foo.properties bar/ bar1.job bar2.job bar.properties baz/ baz1.pull baz2.pull baz.properties
workdir:gobblin作业的工作目录,主要存储临时数据、正式数据、状态和任务指标。如果不设置,默 认是环境变量配置的GOBBLIN_WORK_DIR目录。
Gobblin Deployment
• 单例模式部署
部署 全局配置可以定义到 gobblin-standalone.properties中,对于每个job作业需要单独再定义一个配 置*.pull文件或者*.job文件。 conf :配置每一个job运行的基本配置,配置文件以.pull或.job后缀,如果没指定,默认获取环境变量 中GOBBLIN_JOB_CONFIG_DIR的目录。 .pull或.job配置属性有: •
Gobblin Architecture
• 工作流程
首先,作业调度执行作业之前先获取一把锁,防止下个相同的调度作业,类似于集成的_LOCK,调度 系统可选择Azkaban(可百度),Oozie。 下一步,实例化Source,作用是分割摄取数据成多个工作单元(WorkUnit),每个工作单元负责摄 取数据的一部分;Source还负责为每个工作单元创建一个提取器(Extractor),用于实际数据的摄取。
红色部分是gobblin的部署模式,有单例模式和hadoop集群模式,单例模式是在一台机器上运行,通 过线程池并行运行作业和任务;hadoop集群模式是多台机器并行运行作业和任务;还有一种是gobblin做 为本地应用运行在yarn上(与mapreduce和spark同级别),这种方式实现了实时数据摄取(一般是接收 kafka的消息ຫໍສະໝຸດ Baidu据)。

Gobblin Architecture
• 任务调度
Gobblin集成使用作业调度例如Azkaban,Oozie,或者quartz。 Gobblin的一个重要特征是,它分离作业调度器和作业被调度器调度,使得不同的jobs可以以不同的 部署设置运行预定的作业。这是通过使用具有用于不同部署设置不同的实现抽象JobLauncher实现。例如: 一个程序可能有预定晚五的工作:其中2个在同一主机使用本地JobLauncher调度上本地运行,而使用 MRJob启动某个Hadoop集群的其余3运行。JobLauncher使用可以使用属性launcher.type简单地配置。 多个调度器是互不影响的。
Gobblin Architecture
• 组件详解
• 构成图
Source and Extractor Source在一个数据源和gobblin之间起到适配器的作用,并且在工作流的开始阶段被使用。 Extractor顾名思义,实际与数据源连接和抽取数据 Gobblin外围提供了许多内置的Source和Extractor的实现,为不同类型的数据源工作,为web service服务提供了许多Rest API,数据库支持JDBC,FTP/SFTP服务和配置。现在, Extractor是面向记 录的, Extractor每次读取一个数据记录,虽然在内部它可以选择pull和cache一批数据记录。后续会增加 选项提取器,支持面向字节和面向文件的处理。 • Converter 转换器(Converter)负责架构和数据记录之前的转换和它是核心构造对于数据传输。 •
Gobblin Deployment
• Hadoop模式
• • 使用场景 TB级数据抽取 运行架构图
Gobblin Deployment
• 单例模式部署
• • 使用场景 单例环境下使用gobblin最好是用于轻量级的数据库抽取 运行架构图
描述 JobScheduler 作为一个守护线程运行,本身包含一个线程池,其作用是实例化jobLauncher运行每 一个job作业,jobLauncher可以在每个job作业基础上配置,故jobScheduler可以运行不同模式的 jobLauncher(包括LocalJobLauncher和MRJobLauncher)。 •
Gobblin Deployment
• 单例模式部署
描述 每个LocalJobLauncher运行和管理一些组件对于每个gobblin作业抽取任务。TaskExecutor负责抽 取任务在一个线程池中,其大小由每个job的配置决定。LocalTaskStateTracker负责记录运行任务状态的 轨迹和更新任务指标,LocalJobLauncher运行组件如下: 首先:启动TaskExecutor和LocalTaskStateTracker;其次:在作业配置中创建Source实例并得到一 系列的WorkUnits;其次:对于每个workunit创建一个任务,并且这些任务注册在LocalTaskStateTracker 上,提交任务在TaskExecutor运行;其次:等待所有提交的任务执行完;最后:收集状态并持久化到状态 存储里,发布抽取的数据。 • 部署 •
Gobblin Architecture
• 任务流程
Gobblin Architecture
• 作业状态管理
gobblin作业周期性的运行在某些调度中和每个增量抽取数据的作业中,抽取新的数据或者改变存在 的数据。实现增量抽取。gobblin必须持久化状态在完成每个作业之后和载入前一个运行的状态作为下一 次运行任务的开始。Gobblin保持状态存储,负责的工作状态持久性。Gobblin作业每次运行读取上次运 行状态的状态存储和完成后写入自己的状态到存储。gobblin作业的运行状态由作业配置,一些属性设置 在运行的作业上或任务级别上。 每次作业运行,gobblin使用一个实现的状态存储在hadoop SequenceFiles上序列作业和任务状态。 每个作业都有一个单独的目录,它的工作和任务状态存储在SequenceFiles 上。在其基于文件序列状态存 储所在的文件系统是可配置的
Gobblin Architecture
• 组件详解
Quality Checker 质量检查者(QualityChecker),顾名思义,负责数据的质量检查。其有两种类型:一个是检查单个 的数据记录,决定每一个记录应该通过到下一个阶段在一个任务流程中,称为行级质量检查者;另一个检查整 个任务的输出决定数据是否应该被提交,称为任务级质量检查者。 • Fork Operator ForkOperator是一种类型的控制操作。其允许任务流程分支为多个流,其中每个进入一个单独配置 的接收器。对于数据记录需要被写入到多个不同的存储器中是非常有用的,或者该数据记录需要写出到相 同的存储(例如,HDFS)不同的下游消费者使用。 • Data Writer 一个DataWriter负责写入数据记录到它被设定的位置上,Gobblin向外提供的Avro数据写入器用 Avro的格式将数据写入到HDFS。用户能有他们自己的DataWriters插件通过设定用DataWriterBuilder class在作业配置中,通过在配置文件中设置DataWriterBuilder类来创建属于用户自己的DataWriter插件。 • Data Publisher DataPublisher是负责发布Gobblin工作的提取数据。 Gobblin使用一个默认的DataPublisher和一 个以文件为基础的DataWriter工作,例如AvroHdfsDataWriter,移动数据从工作各项任务的输出目录到 最终作业输出的目录 •
相关文档
最新文档