Sqoop 原理剖析

Sqoop 数据导入原理

Sqoop 导入原理图

在这里插入图片描述

工作流程详解

  • 1,Sqoop 会通过 JDBC 来获取所需要的数据库元数据,例如:导入表的列名,数据类型等。
  • 2,这些数据库的数据类型(varchar、int 等)会被映射成 Java 的数据类型(String、int 等),根据这些信息, Sqoop 会生成一个与表名同名的类用来完成序列化工作,保存表中的每一行记录。
  • 3,Sqoop 启动 MapReduce 作业。
  • 4,启动的作业在 Input 的过程中,会通过 JDBC 读取数据表中的内容。这时,会使用 Sqoop 生成的类进行反序列化操作。
  • 5,最后将这些记录写到 HDFS 中,在写入到 HDFS 的过程中,同样会使用 Sqoop 生成的类进行反序列化。

总结:Sqoop 工具是通过 MapReduce 进行导入作业的。总体来说,是把关系型数据库中的某张表的一行行记录都写入到 HDFS 中。

Sqoop 数据导出原理

Sqoop 导出原理图

在这里插入图片描述

工作流程详解

  • 1,Sqoop 依然会通过 JDBC 访问关系型数据库,得到需要导出数据的元数据信息。
  • 2,根据获取到的元数据的信息,Sqoop 生成一个 Java 类,用来进行数据的传输载体。该类必须实现序列化和反序列化。
  • 3,启动 MapReduce 作业。
  • 4,Sqoop 利用生成的这个 Java 类,并行的从 HDFS 中读取数据。
  • 5,每个 Map 作业都会根据读取到的导出表的元数据信息和读取到的数据,生成一批 Insert 语句,然后多个 Map 作业会并行的向数据库 MySQL 中插入数据。

总结:数据并行读取依赖 HDFS 性能,并行写入到 MySQL中,需依赖 MySQL 的写入性能。
Sqoop 进行数据导出,总体也是基于 MapReduce 任务。

猜你喜欢

转载自blog.csdn.net/theone_1/article/details/84111249