一、实验介绍

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.140masterSqoop2172.25.10.141slave13172.25.10.142slave24172.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/*

#环境变量生效 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

#上传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;

#查看表 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

#查看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数据仓库中。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: