数据同步
Sqoop
Sqoop是Hadoop生态系统”中的其中一员——Apache Sqoop。
Apache Sqoop(TM) is a tool designed for efficiently transferringbulk data between ApacheHadoopandstructured datastoressuch as relational databases.
使用Sqoop进行数据的导入、导出,其本质上是运行Mapreduce程序,充分利用了MR的并行化和容错性。
从图1可以看出,通过客户端CLI(命令行界面)方式或Java API方式调用Sqoop工具,Sqoop可以将指令转换为对应的MapReduce作业(通常只涉及到Map任务,每个Map任务从数据库中读取一片数据,这样多个Map任务实现并发的拷贝,可以快速的将整个数据拷贝到HDFS上),然后将关系型数据库和Hadoop中的数据进行相互转换,从而完成数据的迁移。
可以说,Sqoop是关系型数据库与Hadoop之间的数据桥梁,这个桥梁的重要组件是Sqoop连接器,它用于实现与各种关系型数据库的连接,从而实现数据的导入和导出操作。Sqoop连接器能够支持大多数常用的关系型数据库,例如MySQL、Oracle、DB2和SQL Server等,同时它还有一个通用的JDBC连接器,用于连接支持JDBC协议的数据库。
1.导入原理
在导入数据之前,Sqoop使用JDBC检查导入的数据表,检索出表中的所有列以及列的SQL数据类型,并将这些SQL类型映射为Java数据类型,在转换后的MapReduce应用中使用这些对应的Java类型来保存字段的值,Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。
2.导出原理
在导出数据之前,Sqoop会根据数据库连接字符串来选择一个导出方法,对于大部分系统来说,Sqoop会选择JDBC。Sqoop会根据目标表的定义生成一个Java类,这个生成的类能够从文本中解析出记录数据,并能够向表中插入类型合适的值,然后启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析出记录,并且执行选定的导出方法。
DataX
https://zhuanlan.zhihu.com/p/81817787
Kettle
DBSync
一个国产工具
Apache NIFI
- 介绍了一个新框架, Apache NiFi, 提供 Web UI 和流水线,值得调研
- 一个易用、强大、可靠的数据处理与分发系统