数据同步,顾名思义就是不同系统的数据进行同步处理。而业务系统所涉及的数据库同步是重中之重,虽然大部分数据库都提供了导入导出的工具,但是数据存储到各个地方,Hive、Hbase、MySQL、Oracle 等各种各样的不同数据库,然而要把数据同步到指定不同类型的存储库是非常麻烦。那该如何统一实现数据源同步?下面介绍几种常用的同步的方案和工具。

1、Sqoop

Apache Sqoop 是一种工具,用于在 Apache Hadoop 和外部数据存储(如关系数据库,企业数据仓库)之间高效传输批量数据。

Sqoop 用于将数据从外部数据存储导入 Hadoop Hdfs 或 Hive 和 HBase 等相关 Hadoop 生态系统。同样,Sqoop 还可用于从 Hadoop 或其生态系统中提取数据,并将其导出到外部数据存储区,如关系数据库、数据仓库。Sqoop 适用于 Oracle,MySQL,Postgres 等关系数据库。

Sqoop 数据导入命令示例如下。

sqoop import
-connect jdbc:mysql://localhost:3306/sqoop
-username root
-password 123456
-table emp_etl
-m 3
-hive-import
-create-hive-table
-hive-table  emp_mysql

通过命令行界面执行 Sqoop 命令。也可以使用 Java API 访问 Sqoop。Sqoop 解析命令行生成 MapRedure 并只启动 Hadoop Map 作业以导入或导出数据,因为只有在需要聚合时才需要 Reduce 阶段。Sqoop 只是导入和导出数据, 它没有做任何聚合。

映射作业根据用户定义的数量(-m 3)启动多个映射器。对于 Sqoop 导入,将为每个映射器任务分配一部分要导入的数据。Sqoop 在映射器之间平均分配输入数据以获得高性能。然后,每个映射器使用 JDBC 创建与数据库的连接,并获取由 Sqoop 分配的数据部分,将其写入 HDFS 或 Hive 或 HBase。

2、Datax

DataX 是阿里开发的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。

DataX 本身作为离线数据同步框架,采用 Framework + plugin 架构构建。将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。

Reader:为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。

Writer: 为数据写入模块,负责不断向 Framework 取数据,并将数据写入到目的端。

Framework:用于连 接reader 和writer ,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

Datax 使用比较简单,只下载 Datax 解压,配置需要运行环境,通过命令运行写好的 json 文件既可以执行任务,另外可以通过二次开发插件支持新的数据源类型,易拓展。

{"job": {"content": [{"reader": {"name": "xxxreader",...},"writer": {"name": "xxxwriter",...}}],...}
}

3、Canal

无论是 Sqoop 还是 Datax 都是属于离线同步, 不支持实时的数据抽取。这里说个 MySQL 数据库的同步组件
Canal,非常便捷地将 MySQL 中的数据抽取到任意目标存储中。

原理就是 Canal 伪装成 MySQL 从节点,读取 MySQL 的 binlog(一个二进制格式的文件,它记录了数据库的所有改变,并以二进制的形式保存在磁盘中。),生成消息,客户端订阅这些数据变更消息,处理并存储。只要开发一个 Canal 客户端就可以解析出 MySQL 的操作,再将这些数据发送到大数据流计算处理引擎,即可以实现对 MySQL 实时处理。

4、kettle

Kettle 是一款开源的 ETL 工具,实现对各种数据源读取,操作和写入数据,Kettle 无需安装解压即可使用,可通过客户端进行配置和执行作业。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。

5、Informatica PowerCenter

Informatica PowerCenter 是世界级的 企业数据集成平台,从异构的已有系统和数据源中抽取数据,用来构建和管理企业的数据仓库,从而帮助企业做出快速、正确的决策。此产品为满足企业级要求而设计,可以提供企业部门的数据和非关系型数据之间的集成,如XML,网站日志,关系型数据,主机和遗留系统等数据源。

小结

那我们该如何选择合适同步的工具。大数据平台是与 Hadoop 集群相挂钩,在离线同步一般选择 Sqoop,Sqoop 从一开始就是为大数据平台的数据采集业务服务,而且作为 Apache 顶级的项目,Sqoop 比起 Datax 更加可靠,如果涉及阿里自身的数据库系列选择 Datax 是一个不错的选择。在实时同步数据,一般采用 Kafka 作为中间组件,跟 Canal 结合实现 MySQL 到 Hive 增量数据同步。kettle 和 Informatica PowerCenter 一般在建设数仓中使用,通过客户端配置 ETL 任务定制。

datax 导入数据中文乱码_浅谈数据同步之道相关推荐

  1. java socket 异步回调函数_浅谈socket同步和异步、阻塞和非阻塞、I/O模型

    原标题:浅谈socket同步和异步.阻塞和非阻塞.I/O模型 在进行网络编程时,常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式 同步/异步主要针 ...

  2. 导入数据中文乱码_基于Navicat和Kettle的数据迁移完全解读(多图)

    需求描述 对于数据分析人员来说,工作的基础是数据,没有数据分析就无从谈起,即巧妇难为无米之炊. #数据库# #数据迁移# #Oracle# 然而,数据分析往往在实验环境或者准生产环境中开展,而数据分布 ...

  3. 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题

    这是恋习Python之浅入深出系列第3篇原创首发文章 作者|丁彦军 来源|恋习Python(ID:sldata2017) 转载请联系授权(微信ID:2394608316) 近日,有位粉丝向我请教,在爬 ...

  4. ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...

    一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...

  5. python数据类型转换原因_浅谈Python数据类型之间的转换

    Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...

  6. 怎么向easyui grid里面插入空数据_浅谈数据结算(三)

    1. 第二章:栈和队列 通过下面的思维导图来依次分享「栈和队列」里面重要知识点. 2. 第一节:栈 1. 栈的定义: 栈(stack):只允许在一端进行插入或删除操作的线性表. 栈顶(Top):线性表 ...

  7. 从数据中台实践,浅谈数据质量管理

    时代背景 近20年来,我国的科学技术发展日新月异,各种新兴技术层出不穷,深刻的改变着各行各业,也改变着我们的生活.大数据.云计算.人工智能的出现更是将技术革命推向了高潮.在这种背景下,继农业经济.工业 ...

  8. 数据治理系列:浅谈数据质量管理

    题外话:看过之前的文章的小伙伴不难发现,文章开篇几乎都是定义.概念,这已成了笔者写文章的一个习惯.本着对专业知识和技术的敬畏以及对文章主题的聚焦,笔者认为文章的开篇是非常有必要先把概念或定义交待清楚的 ...

  9. datax 导入数据中文乱码_四种方法处理MYSQL导入中文数据时的乱码问题 | 很文博客...

    我是用的最后一种方法,前面三种解决MYSQL导入数据乱码的方法没试过,很文博客推荐大家直接使用第四种方法处理MYSQL导入中文数据时的乱码问题. 首先在新建数据库时一定要注意生成原数据库相同的编码形式 ...

最新文章

  1. 重磅直播|GDR-Net:基于几何信息指导的单目6D物体姿态估计算法(CVPR2021作者开讲啦)...
  2. 【 Linux 】创建、查看、删除文件
  3. 【大版本】Adobe PDF控件ABCpdf V11发布 | 附下载
  4. 新品【国内动态】服务器列表
  5. 现在计算机学什么好找工作吗,计算机专业都学什么 毕业好找工作吗
  6. 04-CA/TA编程:hash demo
  7. 黑马程序员-----内部类、匿名内部类应用
  8. 智能提示和那些值得崇拜的人
  9. linux跟踪内存块,在Linux程序中跟踪活动使用的内存
  10. hql 查询条件 set集合_Redis从入门到深入-Sorted_set的value
  11. openwrtx 安装无线_面向工业物联网的远距离无线输电技术
  12. 安装 ActiveState Perl
  13. 20172020图片对比_50张迷人的对比摄影照片作品
  14. 第一代计算机的拼音,计算机系列拼音
  15. 表间的关系一对多/一对一/多对多关系是怎样建立的?
  16. 副本全攻略之哀号洞穴(超详细)
  17. Python AST node转为string(source code)
  18. 【Qt】一文总结Qt5.15的在线安装
  19. C#区域性语言(CultureInfo)与资源本地化(WINFORM,多线程,原理可适用于网络开发)
  20. HTML中的删除线:del和s的区别

热门文章

  1. how is service url defined in configuration.js consumed
  2. ERP customizing extraction - how extraction function module is determined
  3. 推荐一个免费的在线图片工具网站
  4. 使用nodejs对Marketing Cloud的contact主数据进行修改操作
  5. One order time zone
  6. Java Word break analysis
  7. 查看SAP CRM和C4C的UI technical信息
  8. 观察者模式在SAP CRM One Order回调函数中的应用
  9. Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集
  10. rs485如何使用_12个经典问答:带你全面了解RS485接口知识