概述
一、实验介绍
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地址 | 机器名 | 类型 |
---|---|---|---|
1 | 172.25.10.140 | master | Sqoop |
2 | 172.25.10.141 | slave1 | |
3 | 172.25.10.142 | slave2 | |
4 | 172.25.10.143 | slave2 |
三、实验环境准备
进入实验列表,找到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数据仓库中。
最后
以上就是火星上红酒为你收集整理的sqoop部署一、实验介绍二、实训架构三、实验环境准备四、实验步骤五、实验总结的全部内容,希望文章能够帮你解决sqoop部署一、实验介绍二、实训架构三、实验环境准备四、实验步骤五、实验总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复