数据同步是每个大数据人都绕不开的工作,因为大数据的存储组件太多了,数据常常因为各种需求需要从一个地方导到另一个地方,如果是数据量小,可能我们写个普通的脚本就可以完成,但是大数据的场景下,我们不得不借助一些工具来达到我们同步海量数据的目的。说实话 ETL 工具实在是太多了,而且很多都可以满足我们日常的数据同步需求,所以这里不可能罗列所有的技术出来,主要是从场景的角度来说明,因为这一块的内容,面试官更关注的是场景。
本篇面试内容划重点:离线同步、增量同步、实时同步、数据预处理。
离线同步场景
离线数据同步也叫做批量同步,是大数据非常常见的场景,数据源一般为数据库或者日志文件,针对这个场景只列举两个比较常用的同步组件:阿里开源的数据同步组件 Datax、Apache 的老牌项目 Sqoop。它们功能相似,但是实现上有很大的区别。
Datax
Datax 目前的开源版本是单机多线程的版本,任务提交后 DataX 会将提交的 Job 分成多个小的 Task(子任务),以便于并发执行,小 Task 组成 TaskGroup 以方便管理,具体的 Task 任务是由线程来执行的,Job 会监控并等待多个 TaskGroup 模块任务完成,等待所有 TaskGroup 任务完成后 Job 成功