超详细的Sqoop介绍及安装使用文档

本文详细介绍了Sqoop的各个方面,包括其简介、原理、安装步骤、查询命令,以及与HDFS、Hive、HBase之间的数据导入导出操作。通过实例展示了如何使用Sqoop进行数据迁移和同步,特别强调了import和export的原理及其配置准备。无论你是初学者还是有经验的开发者,这篇文档都将提供宝贵的参考资料。
摘要由CSDN通过智能技术生成

这应该是全网目前最全的Sqoop文档了吧,小厨为大家奉献整篇内容包括:Sqoop架构、原理、安装、使用等。

目录

1  Sqoop简介

2  Sqoop原理

2.1 import原理

2.2 export原理

3  准备工作:配置数据库远程连接

4  安装Sqoop

5  Sqoop查询命令

6  Sqoop与Hdfs之间导入导出

6.1  关系型数据库导入到HDFS(以mysql为例)

6.2  HDFS导出到关系型数据库

7  Sqoop与HIve导入导出

7.1  关系型数据库导入Hive

7.2  Hive导出到关系型数据库

8  Sqoop与Hbase的导入导出

8.1  关系型数据库导入到Hbase

8.2 Hbase导出到关系型数据库


1  Sqoop简介

Sqoop可以理解为【SQL–to–Hadoop】,正如名字所示,Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具。帮助我们完成数据的迁移和同步。比如,下面两个潜在的需求:

1、业务数据存放在关系数据库中,如果数据量达到一定规模后需要对其进行分析或同统计,单纯使用关系数据库可能会成为瓶颈,这时可以将数据从业务数据库数据导入(import)到Hadoop平台进行离线分析。

2、对大规模的数据在Hadoop平台上进行分析以后,可能需要将结果同步到关系数据库中作为业务的辅助数据,这时候需要将Hadoop平台分析后的数据导出(export)到关系数据库。

根据Sqoop官网说法,Sqoop2 目前还未开发完,不建议在生产环境使用,所以这里选的是Sqoop的稳定版 1.4.6。sqoop整体架构如下图所示:

2  Sqoop原理

2.1 import原理

使用Sqoop可以从关系型数据库中导入数据到HDFS上,在这个过程中import操作的输入是一个数据库表,Sqoop会逐行读取记录到HDFS中。import操作的输出是包含读入表的一系列HDFS文件,import操作是并行的也就是说可以启动多个map同时读取数据到HDFS,每一个map对应一个输出文件。这些文件可以是TextFile类型,也可以是Avro类型或者SequenceFile类型。 

Sqoop在import时,需要制定split-by参数。Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中。每个map中再处理数据库中获取的一行一行的值,写入到HDFS中。同时split-by根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来确定划分几个区域。 比如select max(split_by),min(split-by) from得到的max(split-by)和min(split-by)分别为1000和1,而num-mappers为2的话,则会分成两个区域(1,500)和(501-100),同时也会分成2个sql给2个map去进行导入操作,分别为select XXX from table where split-by>=1 and split-by<500和select XXX from table where split-by>=501 and split-by<=1000。最后每个map各自获取各自SQL中的数据进行导入工作。
  在import过程中还会生成一个Java类,这个类与输入的表对应,类名即表名,类变量即表字段。import过程会使用到这个Java类。 

2.2 export原理

在import操作之后,就可以使用这些数据来实验export过程了。export是将数据从HDFS或者hive导出到关系型数据库中。export过程并行的读取HDFS上的文件,将每一条内容转化成一条记录,然后作为一个新行insert到关系型数据库表中。 
  除了import和export,Sqoop还包含一些其他的操作。比如可以使用sqoop-list-databases工具查询数据库结构,可以使用sqoop-list-tables工具查询表信息。还可以使用sqoop-eval工具执行SQL查询。

3  准备工作:配置数据库远程连接

在使用Sqoop之前,要确保关系型数据库可以允许远程IP访问,可以做如下操作:

(1)配置数据库远程连接,允许IP地址为192.168.1.102主机以用户名为sqoopuser密码为sqoopuser的身份访问数据库。

mysql>GRANT ALL PRIVILEGES ON mytest.* TO 'root'@'192.168.1.102' IDENTIFIED BY 'sqoopuser' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

(2)配置数据库远程连接,允许任意远程主机以用户名为sqoopuser密码为sqoopuser的身份访问数据库。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'sqoopuser'@'%' IDENTIFIED BY 'sqoopuser' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

至此,可以开始操作sqoop的import/export 命令。

4  安装Sqoop

一、解压Sqoop安装包,解压即安装。在/usr/Sqoop文件夹下

 tar -zvxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

二、修改配置文件,使环境变量生效(在使用Ambari或者CDH时,配置文件都由平台自动写入配置,不需要自行修改。本步操作针对于单机安装)   

1、cd  /usr/Sqoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz/conf

2、mv sqoop-env-template.sh sqoop-env.sh

3、如果要往HBASE里面迁移数据  需要配置 export HBASE_HOME=

还需配置zookeeper   

export ZOOCFGDIR=/usr/zookeeper/zookeeper-3.4.10

4、如果要往HIVE里面迁移数据    需要配置 export HIVE_HOME=

5、如果要往hdfs里面迁移数据    需要配置

export HADOOP_COMMON_HOME=/usr/hadoop/hadoop-2.6.5  (hadoop安装目录)

export HADOOP_MAPRED_HOME= /usr/hadoop/hadoop-2.6.5  (mapreduce安装目录

6、zookeeper的配置文件  在往HBASE里迁移数据的时候需要zookeeper

三、在/etc/profile文件  配置Sqoop的环境变量

1、export SQOOP_HOME=/usr/sqoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha

2、export PATH=$PATH:$SQOOP_HOME/bin

四、使配置文件生效  source /etc/profile

五、将数据库连接驱动拷贝到$SQOOP_HOME/lib里,驱动版本要保证相对较高。

六、测试是否安装成功,sqoop version

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值