hadoop(2): 安装&使用 sqoop

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47722393 未经博主允许不得转载。1,关于sqoopSqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47722393 未经博主允许不得转载。

1,关于sqoop

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

官网:http://sqoop.apache.org/
一个1.4.6 版本,一个是1.99版本(开发版还没有迁移完成,生产环境不推荐)

文档:
http://sqoop.apache.org/docs/1.4.6/

2,安装

参考之前的文章hadoop和hive用的是2.0,所以sqoop这里也用2.0,不过是alpha。直接解压缩。

配置环境变量

export JAVA_HOME=/usr/java/default
export CLASS_PATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/data/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

export HIVE_HOME=/data/apache-hive
export PATH=$HIVE_HOME/bin:$PATH

export SQOOP_HOME=/data/sqoop
export PATH=$SQOOP_HOME/bin:$PATH

sqoop启动的时候会检查hbase环境变量,不需要,直接注释
/data/sqoop/bin/configure-sqoop 的128 行到 147行。

    128 ## Moved to be a runtime check in sqoop.
    129 #if [ ! -d "${HBASE_HOME}" ]; then
    130 #  echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."
    131 #  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
    132 #fi
    133 
    134 ## Moved to be a runtime check in sqoop.
    135 #if [ ! -d "${HCAT_HOME}" ]; then
    136 #  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
    137 #  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
    138 #fi
    139 
    140 #if [ ! -d "${ACCUMULO_HOME}" ]; then
    141 #  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
    142 #  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
    143 #fi
    144 #if [ ! -d "${ZOOKEEPER_HOME}" ]; then
    145 #  echo "Warning: $ZOOKEEPER_HOME does not exist! Accumulo imports will fail."
    146 #  echo 'Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.'
    147 #fi

hadoop和hive参考之前写的博客:
http://blog.csdn.net/freewebsys/article/details/47617975

sqoop命令主要就分为数据导入到hadoop,和数据从hadoop导出到 mysql。

首先创建mysql数据库blog,创建一个hadoop用户操作blog库,blog库里面创建一个msg表,插入6条记录

CREATE DATABASE blog DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

GRANT ALL PRIVILEGES ON blog.* TO sqoop@"%" IDENTIFIED BY "sqoop";

FLUSH PRIVILEGES;

##创建msg和 msg_hive数据表:
CREATE TABLE `msg_hive` (
  `id` bigint(20) NOT NULL,
  `gid` bigint(20) DEFAULT NULL ,
  `content` varchar(4000),
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`,`gid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
PARTITION BY KEY(`gid`);

CREATE TABLE `msg` (
  `id` bigint(20) NOT NULL,
  `gid` bigint(20) DEFAULT NULL ,
  `content` varchar(4000),
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`,`gid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
PARTITION BY KEY(`gid`);

#插入测试数据。
insert into `msg`(id,gid,content,create_time) values(1,1,'zhang san 11',now());
insert into `msg`(id,gid,content,create_time) values(1,2,'zhang san 22',now());
insert into `msg`(id,gid,content,create_time) values(1,3,'zhang san 33',now());
insert into `msg`(id,gid,content,create_time) values(2,1,'li si 11',now());
insert into `msg`(id,gid,content,create_time) values(2,2,'li si 22',now());
insert into `msg`(id,gid,content,create_time) values(2,3,'li si 33',now());

3,sqoop使用,导入,导出

首先测试下数据库连接执行select。

sqoop eval --connect jdbc:mysql://127.0.0.1:3306/blog --username sqoop --password sqoop --query 'select now()'

##执行结果:
-----------------------
| now()               | 
-----------------------
| 2015-08-18 17:22:26.0 | 
-----------------------

将mysql 数据导入到hive中,其实就是导入到hadoop上面,这里需要指定输出目录是hive的warehouse目录:

sqoop import --direct --connect jdbc:mysql://127.0.0.1:3306/blog --username sqoop --password sqoop --table msg \
--fields-terminated-by "\001" --lines-terminated-by "\n" --delete-target-dir --null-string '\\N' --null-non-string '\\N' --target-dir /user/hive/warehouse/msg

参数一大堆,设置分隔符的,设置null的。最后指定hive的warehouse目录。

但是这样hive还不识别这个表,必须在hive中创建下。

sqoop create-hive-table --hive-table msg --connect jdbc:mysql://127.0.0.1:3306/blog --username sqoop --password sqoop --table msg

将hive 数据导入到 mysql中。

sqoop export --direct --connect jdbc:mysql://127.0.0.1:3306/blog --username sqoop --password sqoop --table msg_hive \
--fields-terminated-by "\001" --lines-terminated-by "\n" --export-dir /user/hive/warehouse/msg

同样的需要配置export-dir,配置mysql的数据表msg_hive

检查结果:(分别在hive和mysql中查看数据)

hive> select * from msg;
OK
1       1       zhang san 11    2015-08-17 12:11:32
1       2       zhang san 22    2015-08-17 12:11:33
1       3       zhang san 33    2015-08-17 12:11:33
2       1       li si 11        2015-08-17 12:11:33
2       2       li si 22        2015-08-17 12:11:33
2       3       li si 33        2015-08-17 12:11:33
Time taken: 0.105 seconds, Fetched: 6 row(s)

mysql> select * from msg_hive;
+----+-----+--------------+---------------------+
| id | gid | content      | create_time         |
+----+-----+--------------+---------------------+
|  2 |   1 | li si 11     | 2015-08-17 12:11:33 |
|  2 |   2 | li si 22     | 2015-08-17 12:11:33 |
|  2 |   3 | li si 33     | 2015-08-17 12:11:33 |
|  1 |   3 | zhang san 33 | 2015-08-17 12:11:33 |
|  1 |   1 | zhang san 11 | 2015-08-17 12:11:32 |
|  1 |   2 | zhang san 22 | 2015-08-17 12:11:33 |
+----+-----+--------------+---------------------+
6 rows in set (0.00 sec)

4,总结

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/47722393 未经博主允许不得转载。

sqoop提供了import和export功能,很方便的就可以迁移mysql和hive的数据。
业务数据需要迁移到hadoop上面进行计算,同时,将计算结果放到mysql数据库中进行统计显示。
数据可以方便的流动。

参考:
http://segmentfault.com/a/1190000002532293
写的参数很详细。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
66 0
|
4月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.19 安装Kafka
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
73 0
Hadoop学习笔记(HDP)-Part.19 安装Kafka
|
3月前
|
分布式计算 关系型数据库 Hadoop
使用Sqoop将数据从Hadoop导出到关系型数据库
使用Sqoop将数据从Hadoop导出到关系型数据库
|
3月前
|
分布式计算 Hadoop 关系型数据库
使用Sqoop将数据导入Hadoop的详细教程
使用Sqoop将数据导入Hadoop的详细教程
|
3月前
|
分布式计算 Hadoop 关系型数据库
Sqoop入门指南:安装和配置
Sqoop入门指南:安装和配置
|
3月前
|
分布式计算 Hadoop 关系型数据库
Hadoop中的Sqoop是什么?请解释其作用和用途。
Hadoop中的Sqoop是什么?请解释其作用和用途。
30 0
|
3月前
|
分布式计算 资源调度 Hadoop
在Linux系统上安装Hadoop的详细步骤
【1月更文挑战第4天】在Linux系统上安装Hadoop的详细步骤
416 0
|
4月前
|
存储 分布式计算 Hadoop
hadoop 安装系列教程二——伪分布式
hadoop 安装系列教程二——伪分布式
44 0
|
4月前
|
分布式计算 Hadoop Java
hadoop系列——linux hadoop安装
hadoop系列——linux hadoop安装
76 0
|
4月前
|
分布式计算 Hadoop Java
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
85 0

热门文章

最新文章

相关实验场景

更多