追风的蓝宝

爱好大数据与开源技术

Gobblin系列(8)之Extractor源码分析

一. 简介

Extractor相比Source来说就简单多了, 因为Source不但要考虑当前job的WorkUnits, 还要考虑前一个Job的WorkUnits. 相比之下Extractor的服务对象就单个WorkUnits, 要实现的功能也无非就是根据low water mark和high water mark从数据源那里获取数据。

因此本文主要介绍Extractor如何实现上述描述的功能。目前Gobblin支持且常用的Extractor有MysqlExtractor, KafkaSimpleSource等等, 本文依然以MysqlExtractor为例来介绍Extractor。

Gobblin系列(7)之Source源码分析

一.简介

Source在整个Gobblin任务流中负责以下三点:

  1. 对数据源进行预切分获取WorkUnits。所谓预切分即是在不知道数据源是啥样的前提下, 划分好数据。
  2. 为每一个task生成一个extractor, 一般情况下一个task对应一个WorkUnit(当然也存在多对多的情况), 从而实现对数据的摄取。
  3. 提供shutdown处理机制, 即在job完成时候gobblin会回调shutdown函数, 我们可以在这里进行相应的逻辑处理。

这些功能都是通过Source接口实现的。

Gobblin系列(6)之State

一. 简介

Gobblin实在是有太多的state了, 比如SourceState, JobState, DatasetState, WorkUnit等等. 而这些State又跟整个Gobblin的各个阶段密切联系, 所以我独立出一篇文章来理顺下这些State。

Gobblin系列(4)之Runtime初探

简介

Gobblin有两个重要的包即Gobblin-core和Gobblin-runtime, 前者实现了丰富的模块组件, 后者实现了完整的运行机制, 如此构成了Gobblin的高可扩展性的特点。

作为Gobblin的内核, Gobblin-runtime实现了Gobblin的工作流程和任务流程。本文名为Runtime初探, 主要研究目的就是通过Gobblin-runtime来了解Gobblin的运行逻辑, 便于后续对Gobblin的灵活开发。

在前文《Gobblin系列一之初探》中提到了Gobblin具有工作流和任务流的概念。那么本文就分为工作流和任务流两块来介绍。

Gobblin系列(3)之Azkaban Schedule

前言

Gobblin支持三种Schedule即Quartz, Azkaban, Oozie, 默认是采用Quartz. 由于项目的工作流schedule已经采用Azkaban, 所以要将Gobblin Task配置到Azkaban. 但是没相到以为分分钟就能搞定的结果花了我整整一天的时间, 主要问题还是因为Gobblin的资料的匮乏, 在这实现过程中我查阅了Gobblin,Azkaban 和Azkaban-jobtype plugin的源码, 可见繁琐程度. 本文将描述怎么配置Gobblin-Azkaban,并结合主要的代码流程。之所以采用azkaban, 主要因为azkaban使用简单,能有效的进行工作流依赖管理。

Gobblin系列(2)之History Store 和 Admin Server

简介

在阅读Gobblin的时候突然发现Gobblin其实是自带一个Admin Server以及History Store来存放历史的job运行数据, 所以也就研究了下这块内容。 这也反应了Gobblin的一个缺点即文档和资料的缺乏, 不过还好有源码。

Gobblin系列(1)一之初探


由于需要从kafka批量把日志dump到hdfs上,所以我们使用了linkin的Gobblin工具。Gobblin目前还处于开发阶段,资料比较少,文档介绍的也不是很详细,要使用他只能去阅读源码。因此我打算通过一系列的Gobblin的文章来记录下我的学习使用心得。

本文主要初步介绍Gobblin的基础框架, 主要内容来自《官方文档》
, 然后在后续文章中展开介绍。

本人使用的Gobblin版本是0.6.2

JavaCC的使用总结


最近项目SQL解析模块用到Apache Calcite了,由于需要自己定义一些语法,因此花了一段时间研究了其中的JavaCC,本文全当是笔记免得以后忘记。