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

sqoop基本概念安装测试(2017)

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql)间进行数据的传递,可以将一个关系型数据库(例

Sqoop(发音:skup)
是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
进行增量导入是与效率有关的最受关注的问题,因为Sqoop专门是为大数据集设计的。Sqoop支持增量更新,将新记录添加到最近一次的导出的数据源上,或者指定上次修改的时间戳。
由于Sqoop将数据移入和移出关系型数据库的能力,其对于Hive—Hadoop生态系统里的著名的类SQL数据仓库—有专门的支持不足为奇。命令“create-hive-table”可以用来将数据表定义导入到Hive。

简单的说:sqoop是一款数据迁移工具
工作机制:就是通过内置一些数据导入导出的MR 程序,来为我们的数据迁移需求提供便利
sqoop :内置了一下导入导出数据的mr程序

官方网址:http://sqoop.apache.org/
下载:http://archive.apache.org/dist/sqoop/

sqoop是一个工具,只要在一台机器上安装就可以了,要在hadoop环境中运行。
首先在官网上下载sqoop,然后上传到linux中
解压
tar -zxvf sqoop(压缩包) -C /usr/local/apps
然后进入到sqoop中进行配置修改
cd conf/
修改sqoop-env-template.sh
首先,我们要修改sqoop-env-template.sh他的名称
mv sqoop-env-template.sh sqoop-env.sh
然后我们编辑他
vi sqoop-env.sh

首先配置这个,也就是配置hadoop的安装目录

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/apps/hadoop-2.6.5

接下来配置mapreduce HOME 也就是hadoop的安装路径
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/apps/hadoop-2.6.5

接下来配置hbase的安装目录
#set the path to where bin/hbase is available
export HBASE_HOME=/usr/local/apps/hbase-0.98.24-hadoop2

配置hive的安装目录
#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/apps/apache-hive-2.1.1-bin

最后配置zookeeper的conf目录
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/usr/local/apps/zookeeper-3.4.6/conf

保存退出
然后我们在把sqoop配置到我们系统的环境变量里面
vi /etc/profile
在最下面写
export SQOOP_HOME=/usr/local/apps/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
在PATH里面添加
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin
保存退出
别忘了让系统的环境变量生效一下
source /etc/profile

接下来我们来调用一下sqoop看能不能正常运行

注意:我们所有的安装包和安装目录最好都安装在root下面,在root下面新建一个安装目录apps
要不然系统会提示错误
Warning: /usr/local/apps/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.

sqoop中最常用的的两个命令
import Import a table from a database to HDFS (把外部的数据库中的表导入到hdfs中)
export Export an HDFS directory to a database table(把在hdfs中的表导出到sqoop中)‘

测试sqoop使用(会用就行)
第一类:数据库中的数据导入到hdfs中
首先要确保hdfs和yarn都启动起来
start-dfs.sh
start-yarn.sh
接下来我们运行sqoop的命令
sqoop import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail
他是放在了hdfs中
hadoop fs -ls /
hadoop fs -ls /user
hadoop fs -ls /user/root
hadoop fs -ls /user/root/bbs_detail
在这下面就是我们上传的数据 他会把我们的上传的数据基本平均分给几个map去上传默认是分给4个map task去做
在没有指点的情况下他会把我们上传的数据上传到/user/root/bbs_detail 是他自己自动生成的
默认情况下的分隔符为 ','

sqoop导入数据到hdfs的高级用法(注意写命令之间的空格)
第一
指定输出路径(--target-dir '/sqoop/td'),指点数据分隔符(--field-terminated-by '\t')
sqoop import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail --target-dir '/sqoop/td' --fields-terminated-by '\t'

    指点map task的数量 -m  (控制map task的数量可以控制内存小文件多了,效率就会低,如果表很大的话,我们也要把map task 数量变多)

sqoop import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail --target-dir '/sqoop/td' --fields-terminated-by '\001'-m 1
(在实际生成中,很好用逗号或者tab建做分隔符的,我们用(\001)不可打印的字符作为分隔符)

   增加where条件,注意:条件必须用单引号引起来

sqoop import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail --where 'id>30' --target-dir '/sqoop/td2' --fields-terminated-by '\001'-m 1

增加query语句(使用\将语句换行  '\'表示转义回车,因为sqoop语句是要写在一行里面的,太长了写不下,我们就用'\'来转义)

sqoop import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root \
--query 'SELECT id,order_id,product_id FROM bbs_detail where id > 30 AND $CONDITIONS'
--split-by bbs_detail.id --target-dir '/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS 这个参数必须加上(AND $CONDITIONS 表示上面写的select条件结尾了,这是固定的)
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\即\$CONDITIONS
如果设置map的数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上(--split-by bbs_detail.id 表示,告诉map task按照bbs_detail.id去划分)

我们一般都是把数据导入到hive(数据仓库)中讲SQL语法表达的数据运算逻辑转换为mapreduce程序在hadoop集群上对海量数据进行分析
从数据库中导入数据到hive中
sqoop import --hive-import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail

启动hive
命令为hive
show tables

也可以把数据库中的数据导入到hbase中
sqoop import --hbase-import --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --table bbs_detail

第二类:将hdfs上的数据导出到数据库中
sqoop export --connect jdbc:mysql://hadoop-server-00:3306/baba --username root --password root --export-dir '/sqoop/bak' --table td_bak --columns id,order_id --fields-terminated-by',' -m 2
(baba 表示:库 --export-dir '/sqoop/bak'表示:导出的数据现在在哪个目录 --table td_bak 表示:导入的目标的表是哪个表 导入的目标的这个表必须事先存在的(也就是在mysql中要先创建好td_bak这个表),也就是你要先创建好 --columns id,order_id 表示:把哪些字段导入到表中 --fields-terminated-by','表示:文件分隔符为逗号 map task为2)

由于命令太长,我们可以这样去使用命令:
sqoop export --connect jdbc:mysql://hadoop-server-00:3306/baba \
--username root --password root \
--export-dir '/sqoop/bak' --table td_bak \
--columns id,order_id --fields-terminated-by',' -m 2

注意:以上测试要配置mysql的远程连接
GRANT ALL PRIVILEGES ON mytest.* TO 'root'@'192.168.0.104' IDENTIFIED BY 'itcast' WITH GRANT OPTION;
FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON*.*TO'root'@'%'IDENTIFIED BY 'itcast' WITH GRANT OPTION;

设置Mysql远程访问
grant all privileges on . to 'root'@'%' identified by '123456' with grant option;

解决Mysql乱码问题
找一个配置文件,复制到/etc/目录,命名为my.cnf
(有时候没有my.cnf)
cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnf

vim my.cnf
在[client]和[mysqld]下面都添加上
default-character-set=utf8

最后按Esc输入
:wq
保存退出


推荐阅读
  • 前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出, ... [详细]
  • 怎么快速学好大数据开发?
    新如何学习大数据技术?大数据怎么入门?怎么做大数据分析?数据科学需要学习那些技术?大数据的应用前景等等问题,已成为热门大数据领域热门问题,以下是对新手如何学习大数据技术问题的解答! ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 本文_大数据之非常详细Sqoop安装和基本操作
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了大数据之非常详细Sqoop安装和基本操作相关的知识,希望对你有一定的参考价值。大数据大数据之 ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
  • ftp和文件服务器,ftp和文件服务器的区别
    ftp和文件服务器的区别内容精选换一换obsftp工具于2021年2月9日正式下线,下线后OBS不再对此工具提供维护和客户支持服务,给您带来不便敬请谅解 ... [详细]
  • 大数据开发笔记(一):HDFS介绍
    ✨大数据开发笔记推荐:大数据开发面试知识点总结_GoAI的博客-CSDN博客_大数据开发面试​本文详细介绍大数据hadoop生态圈各部分知识,包括不限 ... [详细]
  • hadoop常用操作命令https:www.cnblogs.comcerofangp10460494.htmlday3_day6https:www.cnblogs.comcerof ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • PatchODAX8: ... [详细]
author-avatar
SIX道仙人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有