一、sqoop的作用:实现数据在HDFS 和RDBMS之间进行导入导出
1、要想将存储在Oracle、MySQL等关系型数据库上的数据上传到HDFS时 ,可以使用sqoop将表中数据抽取到HDFS。
2、一般情况下,使用Flume搜集的实时数据是被存储到HDFS上的。可以将其导出到RDBMS.
二、sqoop的底层:sqoop本质上运行的还是mapreduce程序,它利用并行批处理的方式来加快数据的传输速度。并且具有容错性。
1、sqoop通过mapreduce进行导入时会从表中一行行的读取记录并将其存入HDFS中。其读取过程如下:
(1)第一步,Sqoop会通过JDBC来获取所需要的数据库元数据,例如,导入表的列名,数据类型等。
(2)第二步,这些数据库的数据类型(varchar, number等)会被映射成Java的数据类型(String, int等),根据这些信息,Sqoop会生成一个与表名同名的类用来完成反序列化工作,保存表中的每一行记录。
(3)第三步,Sqoop启动MapReducer作业
(4)第四步,启动的作业在input的过程中,会通过JDBC读取数据表中的内容,这时,会使用Sqoop生成的类进行反序列化操作
(5)第五步,最后将这些记录写