• CentOS搭建Sqoop环境


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

    Sqoop安装

    1、下载Sqoop安装包

    在Sqoop官网下载安装包,本次使用的是sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz安装在/usr/local目录下,下载地址为http://apache.fayea.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

    2、解压Sqoop安装包

    1 #进入sqoop安装目录
    2 [hadoop@BigData ~]$ cd /usr/local
    3 #解压sqoop安装包
    4 [hadoop@BigData ~]$ tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
    5 #删除sqoop安装包
    6 [hadoop@BigData ~]$ rm -rf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
    7 #重命名sqoop目录名
    8 [hadoop@BigData ~]$ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

    3、配置Sqoop环境变量

    1 #配置Sqoop环境变量
    2 [root@BigData ~]# vi /etc/profile
    3 export SQOOP_HOME=/usr/local/sqoop
    4 export PATH=$PATH:$SQOOP_HOME/bin
    5 #使环境变量配置生效
    6 [root@BigData ~]#/etc/profile

    4、将关系型数据库驱动包放到sqoop/lib目录下

    MySql:mysql-connector-java-5.1.30.jar
    Oracle:ojdbc14.jar

    5、修改Sqoop配置文件

     1 [hadoop@BigData ~]$ mv sqoop-env-template.sh sqoop-env.sh
     2 [hadoop@BigData ~]$ vi sqoop-env.sh
     3 #Set path to where bin/hadoop is available
     4 export HADOOP_COMMON_HOME=/usr/local/hadoop
     5 #Set path to where hadoop-*-core.jar is available
     6 export HADOOP_MAPRED_HOME=/usr/local/hadoop
     7 #set the path to where bin/hbase is available
     8 export HBASE_HOME=/usr/local/hbase
     9 #Set the path to where bin/hive is available
    10 export HIVE_HOME=/usr/local/hive
    11 #Set the path for where zookeper config dir is
    12 export ZOOCFGDIR=/usr/local/zookeeper
    到此,sqoop环境就已搭建成功!

    Sqoop测试

    1、导入MySql数据到hdfs中

    mysql数据库中sqoop库中出来test表,表结构及数据如下所示:
    id username gender telephone email
    1 test_01 Female 138xxxx0903 test_01@example.com
    2 test_02 Male 187xxxx9364 test_02@example.com
    该命令执行结束后,观察hdfs的目录/user/{USER_NAME},下面会有一个文件夹是test,里面有个文件是part-m-00000。该文件的内容就是数据表aa的内容,字段之间是使用制表符分割的。

    2、hdfs导出数据到mysql

    把上一步导入到hdfs的数据导出到mysql中。我们已知该文件使用制表符分隔的。那么,我们现在数据库sqoop中创建一个数据表hive,其表结构和test表结构一样。然后执行下面的命令
    1 [hadoop@BigData ~]$sqoop export --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table hive --export-dir '/user/hadoop/test/part-m-00000'--fields-terminated-by '	'
    参数解释:
    参数 解释
    sqoop sqoop命令
    export 导出操作
    --connect jdbc:mysql://ip:3306/sqoop 连接mysql的url
    --username 连接mysql的用户名
    --password 连接mysql的密码
    --table mysql中的表,即将被导入的表名称
    --export-dir hive中被导出的文件
    --fields-terminated-by 指定输出文件中的行的字段分隔符
    查看sqoop库中的hive表中是否已经有两条数据
    id username gender telephone email
    1 test_01 Female 138xxxx0903 test_01@example.com
    2 test_02 Male 187xxxx9364 test_02@example.com

    3、Mysql数据导入到Hive

     比如把表test数据导入到Hive中,增加参数 –hive-import
    1 [hadoop@BigData ~]$ sqoop import --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table test --warehouse-dir /usr/local/hive/warehouse --hive-import --create-hive-table

    进入Hive Client验证导入的数据:

    1 [hadoop@BigData bin]$ hive client
    2 hive> show tables;
    3 user_information
    4 test
    5 login_log
    6 hive> select * from test;
    7 1   test_01 Female  138xxxx0903 test_01@example.com
    8 2   test_02 Male    187xxxx9364 test_02@example.com

     4、Mysql数据导入到Hbase

    把表test数据导入到HBase,指定Hbase中表名为demo_sqoop2hbase的命令

    1 [hadoop@BigData ~]$ sqoop  import --connect jdbc:mysql://localhost:3306/sqoop --username root --password root --table test --hbase-table demo_sqoop2hbase --hbase-create-table --hbase-row-key id --column-family url

    hbase shell中验证导入的数据:

    1 [hadoop@BigData bin]$ hbase shell
    2 hbase(main):009:0>list
    3 demo_sqoop2hbase
  • 相关阅读:
    js 实现继承的6种方式(逐渐优化)
    http2.0 特性
    http 206请求
    http put post请求区别
    stopPropagation 和stopImmediatePropagation区别
    JavaScript事件流
    BFC特性 形成BFC
    元素高度、宽度获取 style currentStyle getComputedStyle getBoundingClientRect
    三栏布局解决方案
    jquery vue 框架区别
  • 原文地址:https://www.cnblogs.com/yinghun/p/6221335.html
Copyright © 2020-2023  润新知