Sqoop安装配置及演示

Sqoop是一个用来将Hadoop(Hive、HBase)和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。

Sqoop目前已经是Apache的顶级项目了,目前版本是1.4.4 和 Sqoop2 1.99.3,本文以1.4.4的版本为例讲解基本的安装配置和简单应用的演示。

  • 安装配置
  • 准备测试数据
  • 导入数据到HDFS
  • 导入数据到Hive
  • 导入数据到HBase

[一]、安装配置

选择Sqoop 1.4.4 版本:sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz

1.1、下载后解压配置:

1.2、环境变量配置 vi ~/.bash_profile

1.3、配置Sqoop参数:

复制<SQOOP_HOME>/conf/sqoop-env-template.sh 一份重命名为:<SQOOP_HOME>/conf/sqoop-env.sh

vi  <SQOOP_HOME>/conf/sqoop-env.sh

ps:因为我当前用户的默认环境变量中已经配置了相关变量,故该配置文件无需再修改:

1.4、驱动jar包

下面测试演示以MySQL为例,则需要把mysql对应的驱动lib文件copy到 <SQOOP_HOME>/lib 目录下。

[二]、测试数据准备

以MySQL 为例:

  • 192.168.6.77(hostname:Master.Hadoop)
  • database: test
  • 用户:root 密码:micmiu

准备两张测试表一个有主键表demo_blog,一个无主键表 demo_log

插入测试数据:

[三]、导入数据到HDFS

3.1、导入有主键的表

比如我需要把表 demo_blog (含主键) 的数据导入到HDFS中,执行如下命令:

执行过程如下:

验证导入到hdfs上的数据:

ps:默认设置下导入到hdfs上的路径是: /user/username/tablename/(files),比如我的当前用户是hadoop,那么实际路径即: /user/hadoop/demo_blog/(files)

如果要自定义路径需要增加参数:--warehouse-dir 比如:

3.2、导入不含主键的表

比如需要把表 demo_log(无主键) 的数据导入到hdfs中,执行如下命令:

ps:无主键表的导入需要增加参数  --split-by xxx  或者 -m 1

执行过程:

验证导入的数据:

[四]、导入数据到Hive

比如把表demo_blog 数据导入到Hive中,增加参数 –hive-import :

执行过程如下:

Hive CLI中验证导入的数据:

[五]、导入数据到HBase

演示把表 demo_blog 数据导入到HBase ,指定Hbase中表名为 demo_sqoop2hbase 的命令:

执行过程:

hbase shell中验证导入的数据:

验证导入成功。

本文到此已经把MySQL中的数据迁移到 HDFS、Hive、HBase的三种基本情况演示结束。

参考:

  • http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html

—————–  EOF @Michael Sun —————–

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/bigdata/sqoop/sqoop-setup-and-demo/

发表评论?

1 条评论。

  1. 我用的是sqoop1.44 ,hadoop2.2,想将mysql的数据导入Hbase0.98.出现Exception in thread “main” java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
    at org.apache.sqoop.mapreduce.DelegatingOutputFormat.checkOutputSpecs(DelegatingOutputFormat.java:63)
    异常。我查了下有可能是版本不兼容?
    用sqoop可以查看到mysql数据库的表。就导入的时候报这个异常

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">