1.sqoop的介绍
(1)介绍:
Sqoop是Apache旗下的一款“hadoop和关系型数据库服务器之间传送数据”的工具。
导入数据:MySQL、Oracle导入数据到hadoop的hdfs、hive、HBASE等数据存储系统。
导出数据:从hadoop的文件系统中导出数据到关系型数据库中。
(2)工作机制
将导入导出的命令翻译成MapReduce程序来实现,并且MapReduce程序不需要reducetask的。在翻译出的MapReduce中主要针对对 InputFormat 和 OutputFormat 进行定制。
(3)sqoop的导入导出原理
数据导入:
sqoop工具是通过MapReduce进行导入作业的。总体来说,是把关系型数据库中的某张表的一行行记录写入hdfs中。
解释:
sqoop会通过jdbc来获取需要的数据库的元数据信息,例如:导入的表的列名,数据类型。
这些数据库的数据类型会被映射成为java的数据类型,根据这些信息,sqoop会生成一个与表名相同的类用来完成序列化工作,保存表中的每一行记录。
sqoop开启MapReduce作业
启动的作业在input的过程中,会通过jdbc读取数据表中的内容,这时,会使用sqoop生成的类进行序列化。
最后将这些记录写到hdfs上,在写入hdfs的过程中,同样会使用sqoop生成的类进行反序列化。
数据导出:
解释:
首先sqoop通过jdbc访问关系型数据库,得到需要导出的数据的元数据信息
根据获取的元数据信息,sqoop生成一个java类,用来进行数据的传输载体,该类必须实现序列化。
启动MapReduce程序
sqoop利用生成的这个java类,并行的从hdfs中读取数据
每一个map作业都会根据读取到的导出表的元数据信息和读取到的数据,生成一批的insert语句然后多个 map 作业会并行的向数据库 mysql 中插入数据。
总结:数据是从hdfs中并发进行读取,也是并发进行写入,那并行的读取时依赖hdfs的性能,而并行的写入到MySQL,就要依赖MySQL的性能。

Sqoop是Apache项目下的一个工具,用于在Hadoop和关系型数据库间传输数据。它通过MapReduce将导入导出任务转化为作业,无需reducetask。在导入过程中,Sqoop获取数据库元数据,生成序列化类以处理数据,然后写入HDFS。导出时,它读取HDFS数据,生成Java类并生成批量INSERT语句,同时并发写入数据库。在实际操作中,包括安装配置、连接数据库、查询以及增量导入等步骤。
最低0.47元/天 解锁文章
286

被折叠的 条评论
为什么被折叠?



