数据同步这点事

最近一段时间,在做数据ETL相关的事,结合实践以及自己的思考,记录下来,以做参考。

 

概述

 一般来说,数据团队自己是很少生产数据的,一般都是对业务线的数据进行分析加工,从而让数据产生价值。一方面,业务线的数据会存到关系数据(如mysql),磁盘(日志)等存储介质;另一方面,基于大数据的分析一般会将数据存储到hdfs,hbase,es。因此,不可避免地我们需要在这些不同的存储介质间同步数据。
从同步时效性来说,可以分为离线同步和实时同步。离线同步,相当于某个时候对源数据做一个快照。而实时同步,一般是通过监控源数据变更操作,通过在目标端实时重放操作,从而达到实时同步的目的(如通过Binlog,EditLog)。

离线同步

 离线数据同步目前已经有开源的实现,比较流行的主要是sqoop和datax,关于她们的历史,这里不做介绍。本文主要说一下使用sqoop和datax以及自研的一些实践。

背景

组里最原始的数据同步主要由以下部分组成:
1,用sqoop从mysql导入到hdfs。
2,用自研的工具从hdfs导出到mysql(至于为什么不用sqoop?主要是导出需要做一些ETL处理,sqoop不能满足需求)。
3,另一套自研的工具从分库mysql导出到hbase。
通过这个三个独立的系统,基本能够满足日常的数据同步需求。但是存在一些问题:
a, 工具太分散,好几套独立的系统不太好维护。
b, 扩展性很差,当初设计时,没有考虑考虑扩展性,字眼的系统嵌入到了调度系统,很难抽象出来,作为独立的服务。
c, 服务服务:告警监控不完善等。

 

改造

随着处理数据量以及任务的越来越大,越来越多,针对以上问题,决定基于开源的datax做深度定制。从而将数据同步服务统一起来。主要的改造点如下:
1,将导入导出服务统一到datax,包括对失败任务重试,删除增量删除等。
2,监控指标和日志统一接入数据平台。
3,数据质量处理:脏数据告警,默认的类型转换。
4,schema检验等。

实时同步

目标

实现可配置实时同步

设计

输入和输出变化很大,但是实时数据同步的核心却只有两个问题:
a, 数据不能丢失
b, 对数据乱序进行处理,不能出现旧的数据把新的数据覆盖了

设计思路主要基于以下两点:
1,针对不通的输入和输出,则必须和核心的处理单元进行解耦,因此源端和目标端因不同的系统,差异很大,所以提供各自的实现。但是必须通过定义好的接口和消息格式,实现统一。
2,核心处理引擎,主要基于storm,然后通过外部存储系统来保存中间状态。

小结

总的来说,基于datax改造还是蛮顺利的,简单有效。而基于实时同步系统的设计,可以说也借助了离线同步系统的开源设计思想,通过source和sink分离,核心引擎共享的设计来实现。目前两套系统已经成功上线,并且效果不错。

 

转载于:https://www.cnblogs.com/superhedantou/p/6832340.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下的awk程序在哪里编写,如何编写awk命令和脚本

awk命令是处理或分析文本文件(尤其是按行和列组织的数据文件)的强大方法.您可以从命令行运行简单的awk命令. 应该将更复杂的任务作为awk程序(所谓的awk脚本)写入文件.awk命令的基本格式如下:awkpattern {action}输入文件>输出文件这意味着: 占用输入文件的每一行&#xff1b…

linux中用截取一些信息,Linux如何使用cut命令截取文件信息

在Linux众多命令中,cut命令可用来截取文件信息,截取Linux字符串,下面将针对cut命令的用法做个详细介绍,感兴趣的朋友可以来学习下。cut命令有截取的意思,可从linux文件或者标准输入中读取内容并纵向截取所需信息列的一…

201521123057 《Java程序设计》第12周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。 2. 书面作业 1.字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 将Student对象(属性:int id, String name,int age,doub…

tomcat 下载

点project 关闭防火墙才可以让别人访问自己 转载于:https://www.cnblogs.com/feathe/p/6853491.html

linux消息框架,远程处理器消息框架 - 基于Linux 简化 AMP 配置使其更方便更动态地分配资源...

核心的 rpmsg 框架起到开关的作用,根据消息中包含的目的地址将消息传送到相应端点。由于消息报头包含源地址,因此可在不同处理器之间建立专用连接。命名服务处理器可通过向 rpmsg 框架的命名服务发送消息,以动态宣布特定服务。命名服务功能本…

jQuery笔记——选择器

jQuery 最核心的组成部分就是:选择器引擎。它继承了 CSS 的语法,可以对 DOM 元 素的标签名、属性名、状态等进行快速准确的选择,并且不必担心浏览器的兼容性 常规选择器 根据id选择元素就是使用#,还有两种其他选择元素的方式&…

c语言实现NRZ编码,CSC1001-课后笔记

前言:为什么编写此文1. 根据费曼的学习方法Pretend to teach your topic to a classroom. Make sure youre able to explain the topic in simple terms. 假装你在教室里向学生解释这个主题,用尽量简单的词汇去描述它,力求学生能听懂。(听众…

《Java技术》第八次作业

《Java技术》第八次作业 (一)学习总结 1.用思维导图对本周的学习内容进行总结。 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用…

android 短信 aapp,谈谈App的统一跳转和ARouter

App中每次页面跳转,都需要调用统一导航, 它用的非常频繁, 有必要对它进行一下梳理. 让他能用起来简单方便, 同时能支持各种常用的跳转业务场景.一. Android跳转遇到的问题1.intent-filter跳转不好管理Intent intent new Intent();intent.setAction(Intent.ACTION_SENDTO);inte…

android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner

最终的效果图,点击86弹出popup这里写图片描述PupupWindow的布局文件为一个ListView 作为pupup的主体内容android:orientation"vertical"android:layout_width"match_parent"android:layout_height"match_parent">android:id"id/register…

hdu 6026 Deleting Edges(最短路计数)

题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边。 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路。 问有多少棵这样的…

Xamarin XAML语言教程构建进度条ProgressBar

Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件。进度条总是水平放置的。本节将讲解如何使用进度条。注意:进度条在各个平台下基本相同&#xf…

mac删除android sd卡,如何从mac完全删除android及其所有文件?

前一段时间我试图让科尔多瓦工作,但android模拟器永远不会启动。它只是挂着一个黑色的屏幕。如何从mac完全删除android及其所有文件?我原来是用brew install android-sdk安装的。然后我读了一个糟糕的地方。所以我已经删除它并安装了Android Studio。无论…

201521123023《Java程序设计》第13周学习总结

1. 本周学习总结 (1)网络中为了进行数据交换(通信)而建立的规则、标准或约定(语义语法规则)称之为协议(常用http/ftp) (2)大致熟悉了TCP协议,但是UDP怎么辣么蓝&#xff…

QML与C++交互:登陆界面设计

QML与C交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前台界面,C后台负责逻辑 效果图: 源码: 前台qml文件 login.qml /******************************************************…

html怎么在字体中加波浪线,CSS3实现文字波浪线效果

前言css的设计之巧妙,实现之精妙,细细寻味,其妙非凡,妙不可言。这波浪线,取巧的运用了linear-gradient属性,合角度、颜色、位置于一体,配合background-size,background-repeat&#…

NET Core 指令启动

ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core 的成熟,以及 ASP.NET 5的命名会使得外界将它视为 ASP.NET 的升级版,但它其实是新一代从头开始打造的 ASP.N…

html文本显示状态代码中,HTML文本显示状态代码中,表示?

文本如何大小判别偏心受压剪力墙的。能源能量然资提供的自是指源,显示如(,显示能、能、能、能、、热等的械能是机生物原子光能化学总称,不可能源然界的一可再生能于自源可源和再生分为存在次能。状态中表并发儿麻体温生的婴幼易发间低醉期症(…

[LeetCode]Distinct Subsequences,解题报告

题目 Given a string S and a string T, count the number of distinct subsequences of T in S.A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative po…

2021年河南高考成绩排名查询一分一段表,2018河南高考一分一段统计表,查排名必备!...

原标题:2018河南高考一分一段统计表,查排名必备!:点击这里信息省招办公布了2018年普通高招分数段统计表,对每个分数段有多少考生进行了详细统计。你考了多少分?处在哪个位置?快来看看&#xff0…