本帖最后由 泰克教育 于 2022-12-20 09:54 编辑
一、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.0
2、export HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-2.6.0-cdh5.7.0
3、export HBASE_HOME=/usr/local/hbase/hbase-1.2.0-cdh5.7.0
4、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环境部署成功!
全国咨询电话:029-88825053
泰克官方微信:taikejiaoyu
|