栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Sqoop安装及案例导入导出数据(基于Hadoop环境)

Sqoop安装及案例导入导出数据(基于Hadoop环境)

Sqoop安装及案例导入导出数据(基于Hadoop环境)
  • Sqoop主要用于在Hadoop(Hive)与传统的数据库MySQL间进行数据的传递
  • 可以将一个关系型数据库(如:MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
  • 原理:将导入或导出命令翻译成mapreduce程序来实现
  • 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制
一、Sqoop的安装 1、将Sqoop的安装包拷贝到/opt/software目录下
[mnlg@XJ202 ~]$ cd /opt/software/
//解压安装包
[mnlg@XJ202 software]$ tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/
[mnlg@XJ202 software]$ cd /opt/module/
[mnlg@XJ202 module]$ ll
//修改安装包名称
[mnlg@XJ202 module]$ mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6
[mnlg@XJ202 module]$ ll
2、修改配置文件
[mnlg@XJ202 module]$ cd sqoop-1.4.6/
[mnlg@XJ202 sqoop-1.4.6]$ ll
[mnlg@XJ202 sqoop-1.4.6]$ cd conf/
[mnlg@XJ202 conf]$ ll
//修改配置文件名称
[mnlg@XJ202 conf]$ mv sqoop-env-template.sh sqoop-env.sh
3、添加配置文件内容
[mnlg@XJ202 conf]$ vim sqoop-env.sh
//将以下内容取消注释,并修改文件路径位置
export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3
export Hbase_HOME=/opt/module/hbase-2.3.6
export HIVE_HOME=/opt/module/hive-3.1.2
export ZOOCFGDIR=/opt/module/zookeeper-3.5.7

//可新开个窗口,查看各文件位置
[mnlg@XJ202 ~]$ cd /opt/module/hadoop-3.1.3/
[mnlg@XJ202 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

[mnlg@XJ202 hadoop-3.1.3]$ cd ..
[mnlg@XJ202 module]$ cd hbase-2.3.6/
[mnlg@XJ202 hbase-2.3.6]$ pwd
/opt/module/hbase-2.3.6

[mnlg@XJ202 hbase-2.3.6]$ cd ..
[mnlg@XJ202 module]$ cd hive-3.1.2/
[mnlg@XJ202 hive-3.1.2]$ pwd
/opt/module/hive-3.1.2

[mnlg@XJ202 module]$ cd zookeeper-3.5.7/
[mnlg@XJ202 zookeeper-3.5.7]$ pwd
/opt/module/zookeeper-3.5.7
4、拷贝JDBC驱动
[mnlg@XJ202 ~]$ cd /opt/module/hive-3.1.2/
[mnlg@XJ202 hive-3.1.2]$ ll
[mnlg@XJ202 hive-3.1.2]$ cd lib/
//拷贝文件
[mnlg@XJ202 lib]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6/lib/

[mnlg@XJ202 lib]$ cd /opt/module/sqoop-1.4.6/lib/
[mnlg@XJ202 lib]$ ll
[mnlg@XJ202 lib]$ cd ..
//验证Sqoop配置是否正确
[mnlg@XJ202 sqoop-1.4.6]$ bin/sqoop help
//生成Available commands:。。。。等即配置正确
[mnlg@XJ202 sqoop-1.4.6]$ mysql -uroot -p
mysql> quit;
5、 测试Sqoop是否能够成功连接数据库
 //  ''是表示换行,语句还未写完
[mnlg@XJ202 sqoop-1.4.6]$ bin/sqoop list-databases --connect jdbc:mysql://XJ202:3306/ 
> --username root 
> --password 000000

二、案例(Sqoop方式将数据导入到hdfs中)
  • 在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,Hbase)中传输数据,叫做:导入,即使用import关键字
  • 在Sqoop中,“导出”概念指:从大数据集群(HDFS,HIVE,Hbase)向非大数据集群(RDBMS)中传输数据,叫做:导出,即使用export关键字
1、保证MySQL服务开启正常
[mnlg@XJ202 ~]$ my_hadoop.sh start				 //启动集群
[mnlg@XJ202 ~]$ mysql -uroot -p					 //进入mysql
2、MySQL中新建表并插入一些数据
mysql> create database company;					//新建数据库
mysql> use company;								//一定要use,不然会报错
//新建表
mysql> create table staff(id int primary key auto_increment,name varchar(20),sex varchar(20));
mysql> show tables;								//查看有哪些表
+-------------------+
| Tables_in_company |
+-------------------+
| staff             |
+-------------------+
1 row in set (0.00 sec)
    
mysql> desc staff;						 	    //查看表字段信息
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
| sex   | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.10 sec)    
//插入数据
mysql> insert into staff values (null,'tom','male');
mysql> insert into staff values (null,'jary','female');
mysql> select * from staff;
mysql> quit;
3、导入数据(之后记得去浏览器端口查看是否有company文件夹)
//第三行‘XJ202’根据需求进行更改
[mnlg@XJ202 sqoop-1.4.6]$ bin/sqoop import 	//导入
--connect jdbc:mysql://XJ202:3306/company 		//连接的端口
--username root 								//连接名
--password 000000 								//连接的密码
--table staff 									//导入数据的表名
--target-dir /company 							//导入数据放在文件夹company下
--num-mappers 1 								//设置map的任务数量为1
--fields-terminated-by "t"						//通过换行来分隔字段
4、导出数据(不可使用之前的staff表,需新建表)
[mnlg@XJ202 sqoop-1.4.6]$ mysql -uroot -p
mysql> use company;
mysql> create table staff1(id int primary key auto_increment,name varchar(20),sex varchar(20));
mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| staff             |
| staff1            |
+-------------------+
2 rows in set (0.00 sec)

mysql> quit;
5、导出数据(HIVE/HDFS到RDBMS)
//第三行‘XJ202’根据需求进行更改
[mnlg@XJ202 sqoop-1.4.6]$ bin/sqoop export 
--connect jdbc:mysql://XJ202:3306/company 
--username root 
--password 000000 
--table staff1 
--num-mappers 1 
--export-dir /company/part-m-00000 		//这里采用刚刚导入数据来进行导出(即将part-m-00000文件内容进行导出)
--input-fields-terminated-by "t"
6、查看数据是否导出成功
[mnlg@XJ202 sqoop-1.4.6]$ mysql -uroot -p
mysql> use company;
mysql> select * from staff1;			  //查看staff1表中是否有数据
+----+------+--------+
| id | name | sex    |
+----+------+--------+
|  1 | tom  | male   |
|  2 | jary | female |
+----+------+--------+
2 rows in set (0.00 sec)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/612370.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号