
一、Sqoop简介Sqoop全称是 Apache Sqoop是一个开源工具能够将数据从关系型数据库中或者文件存储服务器数据仓库系统文档存储空间关系型数据库导入 Hadoop 的 HDFS或分布式数据库HBase供MapReduce分析数据使用。数据传输的过程大部分是通过MapReduce过程来实现只需要依赖数据库的Schema信息。Sqoop所执行的操作是并行的数据传输性能高具备较好的容错性并且能够自动转换数据类型。二、Sqoop架构Sqoop架构主要有三部分组成Sqoop客户端数据存储与挖掘、数据存储空间。其中数据存储与挖掘主要为HDFS、Hbase、Hive等工具。从上图中可以知道Sqoop的功能架构之间的关系1、Sqoop通过Hadoop中的Map任务将数据从数据存储空间中导入HDFS供数据分析使用2、Sqoop只负责数据传输不负责数据分析只涉及Map任务不涉及Reduce任务。3、Sqoop本质是运行一个mapreduce程序所以要运行sqoop先启动Hadoop。三、Sqoop导入导出数据Sqoop导入数据流程如图1、Sqoop通过JDBC的接口读取元数据信息。2、Sqoop获取元数据信息并生成以一个与表名相同的容器类。3、Sqoop生成的容器类完成数据的序列化和反序列化保存表的每一行数据。4、Sqoop生成的记录容器类向Hadoop的Map作业提供序列化和反序列化的功能然后sqoop启动Map作业。5、在Sqoop启动Map作业过程中Map利用Sqoop生成的记录容器类提供的反序列化功能通过JDBC读取数据库中的内容。6、Map作业将读取的数据写入HDFS此时Sqoop生成的记录容器类提供序列化功能。Sqoop导出数据流程图Sqoop数据导出过程将通过MapReduce或Hive分析后得出的数据结果导出到关系型数据库供其他业务查看或生成报表使用。Sqoop export 是将一组文件从HDFS导出回RDBMS的工具。前提条件是在数据库中目标表必须已经存在根据用户指定的分隔符将输入文件读取并解析为一组记录。四、Sqoop安装部署第一步在/usr/local/下创建文件sqoop并修改权限 chmod 777 sqoop第二步打开文件传输工具将下载的sqoop上传到创建的sqoop文件中第三步解压文件 tar -xvf sqoop-1.4.5-cdh5.3.6.tar.gz第四步cd到conf目录下复制sqoop-env-template.sh并命名为sqoop-env.sh mv sqoop-env-template.sh sqoop-env.sh第五步编辑sqoop-env.sh增加以下四项内容1、export HADOOP_COMMON_HOME/usr/local/hadoop/hadoop-2.6.0-cdh5.7.02、export HADOOP_MAPRED_HOME/usr/local/hadoop/hadoop-2.6.0-cdh5.7.03、export HBASE_HOME/usr/local/hbase/hbase-1.2.0-cdh5.7.04、export HIVE_HOME/usr/local/hive/hive-0.13.1-cdh5.3.6注意需要将mysql的驱动jar包导入到sqoop根目录下的lib文件夹里面第六步分发给其他节点 scp -r /usr/local/sqoop/ slave1:/usr/local/ (发完后将1修改为2、3)第七步进入sqoop的bin目录案列获取MySQL中的数据库sqoop-list-databases --connect jdbc:mysql://192.168.100.110:3306 --username root --password 123获取MySQL中数据表sqoop-list-tables --connect jdbc:mysql://192.168.100.110:3306/hive --username root --password 123如果以上操作能够把MySQL中的数据库和数据表显示出来证明Sqoop环境部署成功