热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop(2):安装&使用sqoop

本文的原文连接是:http:blog.csdn.netfreewebsysarticledetails47722393未经博主允许不得转载。1,关于sqoopSqoop

本文的原文连接是: 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
写的参数很详细。


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • importorg.apache.hadoop.hdfs.DistributedFileSystem;导入方法依赖的package包类privatevoidtestHSyncOpe ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • python zookeeeper 学习和操作
    1.zookeeeper介绍ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的 ... [详细]
author-avatar
爱智孝的蛋清汤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有