知识库 : UDH 之 Sqoop服务的安装和使用

Edit Document

UDH Sqoop 服务 安装和使用

目录

1.               Sqoop 简介

2.               安装 Sqoop

3.               查看和配置 Sqoop

4.               运行服务检测

5.               Sqoop 使用

5.1.               Mysql HDFS 导入数据

5.2.               HDFS Mysql 导入数据

5.3.               创建 Hive

5.4.               导入数据到 Hive

 

1.     Sqoop 简介

Sqoop 一款开源的工具,主要用于在 Hadoop(Hive) 与传统的数据库 (mysql postgresql...) 间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres 等)中的数据导进到 Hadoop HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。

sqoop   主要通过   JDBC   和关系数据库进行交互。理论上支持   JDBC     database   都可以使用   sqoop     hdfs   进行数据交互 sqoop   架构非常简单,其整合了   Hive     Hbase     Oozie   ,通过   map-reduce   任务来传输数据,从而提供并发特性和容错。

2.     安装 Sqoop

UDH 安装 向导第 “选择 服务 ”勾选 Sqoop 服务 ,一旦选择该服务,强制勾选 HDFS Zookeeper Yarn 等服务

 

C:\Users\Seven\AppData\Roaming\Foxmail7\Temp-5016-20150923084243\Catch3(09-23-11-38-50).jpg

             

需要的服务未安装提示类似如下信息:

 

 

              由于 Sqoop 仅有 客户端,因此,不需要为其分配 Master Slaves 或者 Clients

              接着按照安装流程操作即可成功安装。

3.     查看和配置 Sqoop

安装 完成后, 点击“ Sqoop ”进入 S qoop 服务 界面

 

             

              Sqoop 界面仅有概要信息,显示 Sqoop 客户端已安装。

点击 配置页签查看 Sqoop 服务的相关配置 参数

 

 

              配置参数的修改时 直接 填写对应的修改项,点击保存,选择重新启动按钮即可令修改生效。

4.     运行服务检测

 

              点击 Sqoop “服务操作”下的“运行服务检测”可验证服务是否能够正常运行:

 

C:\Users\Seven\AppData\Roaming\Foxmail7\Temp-5016-20150923084243\Catch2(09-23-11-06-17).jpg

 

运行服务检测成功说明 Sqoop 服务成功启用:

 

5.     Sqoop 使用

5.1.     Mysql向HDFS导入数据

Sqoop 只能通过命令行进行操作本文举例从 MySql 导入数据到 Hdfs ,测试   sqoop   连接   mysql

 

# /usr/lib/sqoop/bin/sqoop-list-databases --connect jdbc:mysql://20.12.20.12:3306/ --username root

Warning: /usr/lib/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.

Please set $ACCUMULO_HOME to the root of your Accumulo installation.

15/08/27 16:06:35 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5-cdh5.4.3

15/08/27 16:06:35 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

information_schema

mysql

sqoop

test

 

看到了 mysql   ,   test   库,则说明连接没问题。

使用   sqoop import   命令可以从关系数据库导入数据到   hdfs ,具体实例如下:  

 

sqoop import --connect jdbc:mysql://20.12.20.11:3306/hive --username root --password 123456 --table TBLS --columns "tbl_id,create_time" --where "tbl_id > 1" --target-dir /user/hive/result

 

查看   hdfs   中的 结果 数据:

# hadoop fs -cat /user/hive/result/part-m-00000

2,1440639469

5.2.     HDFS向Mysql导入数据

查看 hdfs   中的测试数据:

 

# hadoop fs -cat /user/root/test.txt      

1,aaaaaa,bbbb

2,cccccc,dddd

3,eeeeee,ffff

 

执行下面的命令会将   hdfs   中的数据导入到   mysql   中:

 

#sqoop export --connect jdbc:mysql://20.12.20.12:3306/sqoop --username root --table yonyou --export-dir '/user/root/test.txt' --fields-terminated-by ','

查看结果

mysql> select * from yonyou;

+------+--------+------+

| id     | va01     | va02 |

+------+--------+------+

|       1 | aaaaaa | bbbb |

|       2 | cccccc | dddd |

|       3 | eeeeee | ffff |

+------+--------+------+

3 rows in set (0.00 sec)

5.3.     创建Hive表

生成与关系数据库表的表结构对应的   HIVE   表:

 

#sqoop create-hive-table --connect jdbc:mysql://20.12.20.12:3306/sqoop   --username root --table yonyou

note  

--hive-home <dir>     Hive   的安装目录,可以通过该参数覆盖掉默认的   hive   目录

--hive-overwrite         覆盖掉在   hive   表中已经存在的数据

--create-hive-table   默认是   false   ,如果目标表已经存在了,那么创建任务会失败

--hive-table                 后面接要创建的   hive  

--table                           指定关系数据库表名

5.4.     导入数据到Hive

执行下面的命令会将   mysql   中的数据导入到   hdfs   中,然后创建一个   hive   表,最后再将   hdfs   上的文件移动到   hive   表的目录下面。

 

#sqoop import --connect jdbc:mysql://20.12.20.11:3306/hive --username root --password 123456 --table TBLS --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite --create-hive-table --hive-table dw_srclog.TBLS -- delete-target-dir

 

注意 :

         可以在   hive   的表名前面指定数据库名称

         可以通过   --create-hive-table   创建表,如果表已经存在则会执行失败

 

接下来可以查看   hive   中的数据:

 

# hive -e 'select * from dw_srclog.tbls'

 

Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties

OK

2             1440639469           1             0             hue         0             2             test       MANAGED_TABLE     null       null       NULL

3             1440664128           1             0             hue         0             3             test_yonyou         MANAGED_TABLE     null       null       NULL

4             1440664159           1             0             hue         0             4             test_you               MANAGED_TABLE     null       null       NULL

Time taken: 3.02 seconds, Fetched: 3 row(s)

 

直接查看文件内容:

# hadoop fs -cat /user/hive/warehouse/dw_srclog.db/tbls/part-m-0000*

2             1440639469           1             0             hue         0             2             test       MANAGED_TABLE     null       null       null

3             1440664128           1             0             hue         0             3             test_yonyou         MANAGED_TABLE     null       null       null

4             1440664159           1             0             hue         0             4             test_you               MANAGED_TABLE     null       null       null

 

 

Attachments:

UDH 之 Sqoop服务的安装和使用.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
UDH 之 Sqoop服务的安装和使用.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)