千家信息网

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

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL
千家信息网最后更新 2025年12月03日sqoop基本概念安装测试(2017)

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
保存退出

数据 配置 数据库 命令 目录 分隔符 接下来 也就是 引号 数量 系统 工具 文件 条件 环境 程序 语句 运行 测试 仓库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为向互联网科技有限公司 网络安全知识大赛主题词 擅长使用数据库技术 镇江数据网络技术咨询热线 兆易创新存储芯片用于服务器吗 软件开发质量打分标准 计算机网络技术基础知识介绍 60台电脑服务器多少钱 密码字典数据库 软件开发的有效方法 绍兴办公系统软件开发 王者代号破晓服务器维护中 第二次互联网大会 黑科技 高中数字媒体与网络技术专业 nginx服务器配置要求 涉密软件开发保密 华为云服务器虚拟交换机 电脑怎么装不上数据库 系统软件开发公司现有基础 应对网络安全问题的策略 宁海专业软件开发项目管理 湖南正规网络技术资费 河北边缘融合服务器虚拟主机 计算机网络技术基础知识介绍 王者代号破晓服务器维护中 软件开发类项目怎么收税 网络安全产业白皮书发布 漫画说网络安全法40 全国网络安全座谈会 韧哲网络技术怎么样
0