企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# sqoop 1、Sqoop是什么 Sqoop:SQL-to-Hadoop,传统数据库与Hadoop间数据同步工具,利用Mapreduce分布式批处理,加快了数据传输速度,保证了容错性 2、sqoop的特点: sqoop的底层实现是mapreduce,所以sqoop依赖于hadoop,数据是并行导入的。 sqoop1 import原理: 从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝。 sqoop1 export原理: 获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中。 3、sqoop架构 ![](https://box.kancloud.cn/b69089151ff1368c3c826c986e683ceb_629x493.png) 3、sqoop的安装和配置 *1. 解压sqoop安装包 * 2.修改配置 [hadoop@master conf]$ pwd /home/hadoop/software/sqoop/conf [hadoop@master conf]$ cp sqoop-env-template.sh sqoop-env.sh [hadoop@master conf]$ vim sqoop-env.sh ~~~ #Set path to where bin/hadoop is available export HADOOP_COMMON_HOME= /home/hadoop/software/hadoop-2.7.3(hadoop安装目录) #Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/home/hadoop/software/hadoop-2.7.3/share/hadoop/mapreduce(自己的mapreduce安装目录) #set the path to where bin/hbase is available export HBASE_HOME=/home/hadoop/software/hbase-1.4.3(自己的hbase安装目录) #Set the path to where bin/hive is available export HIVE_HOME=/home/hadoop/software/hive(自己的hive安装目录) #Set the path to where bin/hive is available export zookeeper =/home/hadoop/software/zookeeper-3.4.6(自己的zookeeper安装目录) ~~~ * 3.测试安装[hadoop@master sqoop1_h2]$ sqoop version .......................... Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation. 15/07/04 19:01:00 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5 Sqoop 1.4.5 git commit id 5b34accaca7de251fc91161733f906af2eddbe83 Compiled by abe on Fri Aug 1 11:19:26 PDT 2014 * 4. 拷贝驱动包(将MySQL驱动包放到SQOOP的lib目录下) * [hadoop@master lib]$ pwd /home/hadoop/sqoop1/lib * 5常用参数 ![](https://box.kancloud.cn/078c40996f30154569f1a2c849f56f55_468x328.png) * 6、Sqoop1存在的问题 基于命令行的操作方式易于出错,且不安全; 数据传输和数据格式是紧耦合的,这使得connector无法支持所有数据格式; 安全密钥是暴露出来的,非常不安全 Sqoop安装需要root权限 Connector必须符合JDBC模型,并使用通用的JDBC词汇 * 7、常用注意点: 密码保护方法:1)加参数-P,执行时要求终端输入 2)参数--password-file my-sqoop-password,指定密码文件的路径,密码防到文件,文件只读,只有自己可读的 非文本导入,比如图片、视频等,使用--as-sequencefile以sequencefile保存到HDFS上,也可以保存成avrodatafile格式,--as-avrodatafile