大数据之路——阿里巴巴大数据实践:数据同步要点

1.数据同步分为DB数据同步和日志数据同步:

  • 如下是DB数据同步机制:数据库按照规定的格式,将数据发给数据文件管理系统。
    大数据之路——阿里巴巴大数据实践:数据同步要点_第1张图片
  • 日志同步解析:如下是日志文件,通过数据的日志解析模块,将有用的数据过滤出来,然后按照一定的格式发给数据文件管理系统。(数据的过滤是通过日志的方式,可能里面对user表某一行有增删改查等等,怎样保持其中的数据版本,方式与“从Hlog中恢复数据库”的方式如出一辙)
    大数据之路——阿里巴巴大数据实践:数据同步要点_第2张图片

2.离线数据同步和实时数据同步:

  • 数据仓库的同步使用DataX:DataX是阿里巴巴的数据同步工具,可以将HBase,Mysql,HDFS等等类型的数据同步成为统一的格式,具体方式如下,类似于MapReduce:
    大数据之路——阿里巴巴大数据实践:数据同步要点_第3张图片
  • 实时数据处理TT(TimeTunnel):类似于storm+kafka
    大数据之路——阿里巴巴大数据实践:数据同步要点_第4张图片

3.数据同步中的问题:

  • 分库分表的设计加大了同步数据的难度(jion操作):阿里巴巴TDDL(Taobao Distributed Data Layer)通过建立中间状态的逻辑来整合统一分库分表的访问。
    大数据之路——阿里巴巴大数据实践:数据同步要点_第5张图片
  • 增量与全量同步的合并:批量数据中,我们每次只需要同步前一次已经改变的增量数据,然后与上一个周期获得的全量数据进行合并。传统开发中,我们都是updata和insert,目前采用的是全外连接(full outer jion)+数据全量覆盖重新加载(insert overwrite),大数据中采用后者比updata+insert更新的性能高得多。
    大数据之路——阿里巴巴大数据实践:数据同步要点_第6张图片
  • 同步的性能(多少个线程来执行?哪个任务优先级高?等等)方式如下:
  1. 用户创建数据同步任务,并提交该同步任务。
  2. 根据系统提前获知及设定的数据,估算该同步任务需要同步的数据量、平均同步速度、首轮运行期望的线程数、需要同步的总线程数。
  3. 根据需要同步的总线程数将待同步的数据拆分成相 等数量的数据块,一个线程处理一个数据块,并将该任务对应的所有线程提交至同步控制器。
  4. 同步控制器判断需要同步的总线程数是否大于首轮运行期望的线程数,若大于,则跳转至 5若不大于,则跳转至6。
  5. 同步控制器采用多机多线程的数据同步模式,准备该任务第一轮线程的调度,优先发送等待时间最长、优先级最高且同一任务的线程。
  6. 同步控制器准备一定数据量(期望首轮线程数-总线程数)的虚拟线程,采用单机多线程的数据同步模式 ,准备该任务相应实体线程和虚拟线程的调度,优先发送等待时间最长、优先级最高且单机 CPU 剩余资源可以支持首轮所有线程数且同 任务的线程,如果没有满足条件的机器,则选择 CPU 剩余资源最多的机器进行首轮发送。
  7. 数据任务开始同步,并等待完成。
  8. 数据任务同步结束。
  • 数据漂移的处理:元数据同步进入数据仓库的第一层称之为ODS,数据漂移是ODS的顽疾,ODS表同一业务日期的数据中包含前一天或者后一天的数据。或者是凌晨附近的数据存在丢失。
    • 原因分析:因为数据同步过程中使用mapreduce等程序需要消耗一定的时间。
    • 解决方案:(1)多获取前一天的15分钟的数据和后一天15分钟的数据(2)用多个字段的限制时间来获取相对准确的数据
    • 应用:阿里巴巴“双11”交易过程中,大批11月11日23:59:59的数据漂移到了11月12日,因为订单的过程是“下单,支付,成功”这个过程,我们可以根据这三个时间戳来判断订单的时间是11日还是12日,因为我们冗余了上一天15分钟的数据,可能有一些订单,下单在11日,支付在12日我们可以根据情况甄别将其归类在11日或者12日。

你可能感兴趣的:(大数据之路——阿里巴巴大数据实践:数据同步要点)