• sqoop部署


    一、实验介绍

    1.1实验内容

    本次实验包括sqoop安装部署及利用Sqoop在mysql数据库与hive之间进行数据迁移。

    1.2实验知识点

    Sqoop安装
    mysql到Hive数据迁移

    1.3实验环境

    Sqoop-1.4.7
    网易云平台

    1.4实验资源

    资源名称存储目录
    Sqoop安装包/opt/software/package/

    在这里插入图片描述

    1.5实验步骤清单

    sqoop安装部署(安装sqoop、修改sqoop配置文件)
    sqoop数据迁移(检查环境、数据迁移)

    二、实训架构

    序号IP地址机器名类型
    1172.25.10.140masterSqoop
    2172.25.10.141slave1
    3172.25.10.142slave2
    4172.25.10.143slave2

    三、实验环境准备

    进入实验列表,找到sqoop,点击开启实验,启动master、slave1及salve2,slave3。

    四、实验步骤

    4.1Sqoop安装部署

    4.1.1安装Sqoop软件

    #解压sqoop安装包
    tar xvf /opt/software/package/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local/

    #重命名sqoop目录
    mv /usr/local/sqoop-1.4.7.bin__hadoop-2.6.0/ /usr/local/sqoop/

    #添加环境变量
    vim /etc/profile

    export  SQOOP_HOME=/usr/local/sqoop
    export  PATH=${SQOOP_HOME}/bin:$PATH
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    #环境变量生效
    source /etc/profile

    4.1.2修改Sqoop配置文件

    #编辑sqoop-env.sh文件
    cp /usr/local/sqoop/conf/sqoop-env-template.sh /usr/local/sqoop/conf/sqoop-env.sh
    vim /usr/local/sqoop/conf/sqoop-env.sh

    export  HADOOP_COMMON_HOME=/usr/local/hadoop
    export  HADOOP_MAPRED_HOME=/usr/local/hadoop
    export  HIVE_HOME=/usr/local/hive	
    export  HIVE_CONF_DIR=/usr/local/hive/conf
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    #上传mysql-connector jar包到sqoop lib目录下
    cp /opt/software/package/mysql-connector-java-5.1.46-bin.jar /usr/local/sqoop/lib/

    4.2Sqoop数据迁移

    4.2.1检查环境

    #查看Sqoop版本
    sqoop version

    #启动mysql
    systemctl start mysqld
    #查看mysql的表
    sqoop list-tables --username root --password 'root' --connect jdbc:mysql://localhost:3306/metastore?characterEncoding=UTF-8

    4.2.2数据迁移

    1、查看用于测试的MySQL数据库表及数据
    #登录mysql
    mysql -uroot -proot

    #创建testdb数据库
    create database testdb;

    use testdb;

    #创建表及插入数据脚本

    create table t1 (id int(11),name varchar(10));
    insert into t1 values(10,'tom');
    insert into t1 values(20,'jerry');
    insert into t1 values(30,'rose');
    commit;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    #查看表
    show tables;
    在这里插入图片描述

    #查看表数据
    select * from t1;
    在这里插入图片描述

    #退出mysql客户端
    exit;

    2、基于MySQL的表t1创建Hive表t1
    #查看mysql数据库

    sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password root
    information_schema
    
    • 1
    • 2

    #查看mysql数据库testdb中的表
    sqoop list-tables --connect jdbc:mysql://localhost:3306/testdb --username root --password root

    在这里插入图片描述

    #配置java安全策略文件
    vim /usr/local/java/jre/lib/security/java.policy
    添加以下权限,此权限表示在签名者或代码库中信任。
    permission javax.management.MBeanTrustPermission “register”;

    #替换sqoop中的Jackson包
    由于hive和sqoop jackson版本不一致,使用hive中的jackson包替换sqoop中的包。
    rm -f /usr/local/sqoop/lib/jackson-*
    cp /usr/local/hive/lib/jackson-* /usr/local/sqoop/lib/

    #设置hosts
    vi /etc/hosts

    source /etc/profile

    #启动hadoop
    start-all.sh

    #创建hive表t1
    在已经存在的testdb这个库中创建名为t1的表。
    sqoop create-hive-table --connect jdbc:mysql://localhost:3306/testdb --table t1 --username root -password 'root' --hive-database testdb --hive-table t1
    显示以下信息表示导入表完成。
    22/05/30 07:45:27 INFO hive.HiveImport: Hive import complete.
    在这里插入图片描述

    #查看hive中的数据库和表
    hive

    #切换到testdb数据库
    use testdb;

    #查看表
    show tables;

    #查看表数据(此时数据为空)
    select * from t1;

    在这里插入图片描述

    #退出hive
    exit;

    #查看hdfs里面的数据
    hdfs dfs -ls -R /user
    在这里插入图片描述

    #清空hdfs数据
    hdfs dfs -rm -R /user/hive/warehouse/testdb.db/t1
    在这里插入图片描述

    #从mysql导入数据到hive
    sqoop import --connect jdbc:mysql://master:3306/testdb?characterEncoding=UTF-8 --table t1 --username root --password 'root' --hive-import --hive-database testdb -m 1
    18/11/21 15:50:22 INFO hive.HiveImport: Hive import complete.

    4、执行hive命令测试上面的操作是否成功
    #启动hive
    hive

    #进入testdb数据库
    use testdb;

    #显示表
    show tables;
    OK
    t1
    Time taken: 0.173 seconds, Fetched: 1 row(s)

    #查看t1表里的数据
    select * from t1;
    OK
    10 tom
    20 jerry
    30 rose
    Time taken: 0.262 seconds, Fetched: 3 row(s)

    五、实验总结

    Sqoop是一款开源的工具,主要用于在Hadoop Hive与传统的数据库mysql间进行数据的传递,可以将一个关系型数据库 MySQL中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
    本次实验主要完成了Sqoop的安装及验证通过Sqoop将MySQL数据导入到Hive数据仓库中。

  • 相关阅读:
    字符串 | 字符串匹配 | KMP算法 | leecode刷题笔记
    物联网相关名词
    OBS键盘插件自定义diy
    1688API 接入说明,Onebound数据
    java计算机毕业设计智能选课系统设计与实现源码+系统+mysql数据库+lw文档+部署
    如何使用.NET 6的IHostedService和BackgroundService?
    Line Out vs Headphone Out 有什么区别
    小啊呜产品读书笔记001:《邱岳的产品手记-05》第9讲 产品案例分析:Hopper的“人工智能” & 第10讲 产品被抄袭了怎么办?
    急诊预检分诊管理系统的设计与实现
    武汉星起航给想做亚马逊精细化铺货模式的卖家分享一些技巧
  • 原文地址:https://blog.csdn.net/qq_49096000/article/details/127920327