首页 > 其他分享 >Sqoop迁移工具大全. [概述,特点,安装与使用.最后详细阐述和DataX,Kettle等迁移工具的区别]

Sqoop迁移工具大全. [概述,特点,安装与使用.最后详细阐述和DataX,Kettle等迁移工具的区别]

时间:2024-10-26 19:51:46浏览次数:6  
标签:sqoop -- 数据库 Kettle hive Sqoop export 迁移 工具

目录

一,Sqoop的概述

二,Sqoop的特点

三,Sqoop的安装

四,Sqoop快速入门

五,从MySQL中导入数据到HDFS中

六,从MySQL导入数据到Hive中

七,从MySQL导入到Hive中并且存储格式是ORC

八,Sqoop和DataX以及Kettle的区别

一、Sqoop

二、DataX

三、Kettle

四、总结


一,Sqoop的概述

        Sqoop 是一个用于在 Hadoop 和关系型数据库之间高效传输数据的工具。

        它主要用于将关系型数据库中的数据导入到 Hadoop 的 HDFS(Hadoop Distributed File System)、Hive 或 HBase 中,也可以将 Hadoop 中的数据导出到关系型数据库。

  • sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。
  • 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
  • 导出数据:从Hadoop的HDFS、HIVE中导出数据到关系数据库mysql等。

Sqoop的工作机制:

        Sqoop工作机制是将导入或导出命令翻译mapreduce(只有map没有reduce)程序来实现。

二,Sqoop的特点

  1. 高效的数据传输:Sqoop 利用了 MapReduce 框架的并行处理能力,可以快速地在关系型数据库和 Hadoop 之间传输大量数据。
  2. 多种数据库支持:Sqoop 可以与多种关系型数据库进行交互,如 MySQL、Oracle、PostgreSQL 等。
  3. 灵活的数据导入和导出:可以根据需求选择不同的导入和导出方式,如全表导入、增量导入、条件导入等。
  4. 易于使用:Sqoop 提供了简单的命令行接口,使得用户可以方便地进行数据传输操作。

三,Sqoop的安装

安装前提

  • 确保已经安装了 Hadoop 环境,并且配置正确。
  • 安装 Java 环境,Sqoop 是用 Java 编写的,需要 Java 运行时环境。

#你的hive安装在哪一台主机,你的sqoop就要装在哪一台主机,该操作是以node1为例

1、在node1中,上传sqoop的安装包到/export/software目录
2、在node1中,解压sqoop安装包到/export/server目录

下载 Sqoop

  • 从 Apache Sqoop 官方网站下载合适版本的 Sqoop 安装包。
  • sqoop.apache.org

解压安装包

  • 将下载的安装包解压到指定目录。
 tar -xvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /export/server/

配置环境变量

  • 设置 Sqoop 的环境变量,使得系统可以找到 Sqoop 的安装路径。

配置数据库连接

  • 根据要连接的数据库,配置相应的数据库驱动和连接参数。
#你的hive安装在哪一台主机,你的sqoop就要装在哪一台主机,该操作是以node1为例

1、在node1中,上传sqoop的安装包到/export/software目录
2、在node1中,解压sqoop安装包到/export/server目录

 tar -xvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /export/server/
 
3、在node1中,对解压后的sqoop目录进行重命名
 cd /export/server/
 mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7
 
4、在node1中,修改sqoop的配置文件,
 cd /export/server/sqoop-1.4.7/conf
 mv sqoop-env-template.sh sqoop-env.sh 
 
 修改sqoop-env.sh 文件,设置以下内容
 export HADOOP_COMMON_HOME=/export/server/hadoop-3.3.0
 export HADOOP_MAPRED_HOME=/export/server/hadoop-3.3.0
 export HIVE_HOME=/export/server/hive-3.1.2 
 
 5、在node1中,加入mysql的jdbc驱动包和hive的执行包
 cp /export/server/hive-3.1.2/lib/mysql-connector-java-5.1.32-bin.jar   /export/server/sqoop-1.4.7/lib/
 
cp /export/servers/hive-3.1.2/lib/hive-exec-3.1.2.jar /export/servers/sqoop-1.4.7/lib/

cp /export/server/hive-3.1.2/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.2.jar /export/server/sqoop-1.4.7/lib/
 
 6、在node1,node2、node3中,配置环境变量
   vim /etc/profile
   添加以下内容
   
   export SQOOP_HOME=/export/server/sqoop-1.4.7
   export PATH=:$SQOOP_HOME/bin:$PATH
   
   # HCatelog
 export HCAT_HOME=/export/server/hive-3.1.2/hcatalog
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.2.jar

   添加完之后一定要保存退出,执行以下命令
   source /etc/profile

 7、在node1中,测试sqoop
 sqoop list-databases \
 --connect jdbc:mysql://node1:3306/ \
 --username root --password 123456

测试有无成功  查看mysql中所有的数据库

 #测试你的sqoop是否能查看MySQL中所有的数据库
 sqoop list-databases \
 --connect jdbc:mysql://up01:3306/ \
 --username root \
 --password 123456

四,Sqoop快速入门

在mysql中准备数据


drop database if exists test cascade ;
create database if not exists test;



-- 手动在hive中建一张表
create table test.emp_hive
(
    id     int,
    name   string,
    deg    string,
    salary int,
    dept   string
)
row format delimited fields terminated by '\t'
stored as orc;

在liunx中执行代码

  #这是liunx执行的代码
  sqoop list-databases \           
 --connect jdbc:mysql://up01:3306/ \ 
 --username root \   
 --password 123456  
 
 # 以下是解释
 #测试你的sqoop是否能查看MySQL中所有的数据库
 sqoop list-databases \           # 这个是查看数据库的全部库
 --connect jdbc:mysql://up01:3306/ \    #这个是连接数据库信息
 --username root \   #用户名
 --password 123456  #主机

五,从MySQL中导入数据到HDFS中

sqoop import \
--connect jdbc:mysql://替换为你的主机名:3306/mysql中的库名 \
--username root \
--password 123456 \
--target-dir /sqoop/result2 \
--delete-target-dir \
--table emp \
--m 1

#这是注释
sqoop import \   #sqoop导入
--connect jdbc:mysql://up01:3306/userdb \ #要连接的数据库主机名和数据库名字
--table emp \   #表名
--username root \  #用户名
--password 123456 \ #密码
--target-dir /sqoop/result1 \  #HDFS的目标目录
--delete-target-dir \     #如果HDFS的目标目录存在,则删除
--m 1       #开启一个Map任务

或导入到HDFS中,使用指定分隔符

sqoop import \
--connect jdbc:mysql://主机名:3306/库名 \
--username root \
--password 123456 \
--target-dir /sqoop/result2 \
--delete-target-dir \
--fields-terminated-by  '\t' \
--table emp \
--m 1

或设置任务并行度

sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--username root \
--password 123456 \
--target-dir /sqoop/result3 \
--delete-target-dir \
--fields-terminated-by '\t' \
--split-by id \
--table emp \
--m 2

#参数解释
--split-by id  #按照id列将整个表拆分成2部分,分别由两个Map进行数据导入,id一般是数值列
#内部是获取id列的最大值和最小值进行均分

第一个Map任务: 1201 1202
第二个Map任务: 1203 1204 1205
SELECT MIN(`id`), MAX(`id`) FROM `emp`   # (最大 - 最小) / Map任务的数量

六,从MySQL导入数据到Hive中

hive会自动创建表,默认使用的分隔符是 逗号 ,

sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--table emp_conn \
--username root \
--password 123456 \
--hive-import \
--hive-database test \
--m 1 

或指定分隔符导入 

# 2、手动指定hive分隔符 '\t',使用默认的hive表名(和MySQL表名相同)
sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--table emp_conn \
--username root \
--password 123456 \
--fields-terminated-by '\t' \
--hive-import \
--hive-database test \
--m 1 

或指定表导入

# 2、手动指定hive分隔符 '\t',使用默认的hive表名(和MySQL表名相同)
sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--table emp_conn \
--username root \
--password 123456 \
--fields-terminated-by '\t' \
--hive-import \
--hive-database test \
--m 1 

七,从MySQL导入到Hive中并且存储格式是ORC

如果hive表 存储格式想选择是orc模式  则就需要HCatalog API插件了

在hive中建表 选择存储格式是orc

# 2、手动指定hive分隔符 '\t',使用默认的hive表名(和MySQL表名相同)
sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--table emp_conn \
--username root \
--password 123456 \
--fields-terminated-by '\t' \
--hive-import \
--hive-database test \
--m 1 

迁移jar包

# 1、从Hive拷贝jar包到Sqoop
 cp /export/server/hive-2.1.0/hcatalog/share/hcatalog/hive-hcatalog-core-2.1.0.jar  /export/server/sqoop-1.4.6-cdh5.14.0/lib/

配置环境变量

#2、在/etc/profile配置环境变量
export HCAT_HOME=/export/server/sqoop-1.4.6-cdh5.14.0/hcatalog
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-2.1.0.jar

使用Sqoop导入数据

#如果要将从MySQL导入到Hive的ORC格式的表,必须手动在Hive中先创建表
#如果你的hive表是ORC格式,必须先建表,然后使用带--hcatalog方式来导入
sqoop import \
--connect jdbc:mysql://up01:3306/userdb \
--username root \
--password 123456 \
--table emp \
--fields-terminated-by '\t' \
--hcatalog-database test \
--hcatalog-table emp_hive \
-m 1

八,Sqoop和DataX以及Kettle的区别

一、Sqoop

主要功能

  • Sqoop 主要用于在 Hadoop 生态系统(如 Hive、HBase)和关系型数据库之间进行高效的数据传输。
  • 支持将关系型数据库中的数据导入到 Hadoop 中,也可以将 Hadoop 中的数据导出到关系型数据库。

特点

  • 基于 Hadoop 的 MapReduce 框架,具有良好的并行处理能力,能够处理大规模数据的传输。
  • 对关系型数据库和 Hadoop 生态系统的集成较为紧密,特别适用于在这两者之间进行数据迁移。
  • 提供了丰富的命令行参数,可以进行全表导入、增量导入等操作。

适用场景

  • 当需要在 Hadoop 生态系统和关系型数据库之间进行大规模数据迁移时,Sqoop 是一个很好的选择。
  • 适用于企业中已经部署了 Hadoop 环境,并且需要与关系型数据库进行数据交互的场景。

二、DataX

主要功能

  • DataX 是一个通用的数据同步工具,可以在各种数据源之间进行数据交换。
  • 支持的数据源非常广泛,包括关系型数据库、NoSQL 数据库、文件系统等。

特点

  • 采用插件化的架构,易于扩展,可以方便地添加新的数据源和数据转换功能。
  • 具有高并发、高性能的数据传输能力,能够满足大规模数据集成的需求。
  • 配置灵活,可以通过简单的 JSON 配置文件来定义数据同步任务。

适用场景

  • 当需要在多种不同类型的数据源之间进行数据集成时,DataX 具有很大的优势。
  • 适用于企业中存在多种数据源,需要进行复杂的数据同步和转换的场景。

三、Kettle

主要功能

  • Kettle(Pentaho Data Integration)是一个功能强大的 ETL(Extract, Transform, Load)工具。
  • 可以从各种数据源抽取数据,进行数据清洗、转换和加载操作,将数据集成到目标系统中。

特点

  • 提供了可视化的设计界面,用户可以通过拖拽组件的方式来构建数据集成流程。
  • 支持多种数据转换功能,如字段映射、数据过滤、聚合计算等。
  • 可以进行复杂的任务调度和监控,方便管理数据集成任务。

适用场景

  • 当需要进行复杂的数据清洗和转换操作时,Kettle 是一个很好的选择。
  • 适用于企业中需要进行数据仓库建设、数据分析等场景,需要对数据进行全面的 ETL 处理。

四、总结

功能侧重:

  • Sqoop 主要专注于 Hadoop 生态系统和关系型数据库之间的数据传输。
  • DataX 是一个通用的数据同步工具,支持多种数据源。
  • Kettle 则是一个全面的 ETL 工具,提供了丰富的数据转换功能。

架构特点:

  • Sqoop 基于 Hadoop 的 MapReduce 框架。
  • DataX 采用插件化架构,易于扩展。
  • Kettle 提供可视化设计界面,方便用户操作。

适用场景:

根据不同的需求和数据集成场景,可以选择合适的工具。

  • 如果主要是在 Hadoop 和关系型数据库之间进行数据迁移,可以选择 Sqoop;
  • 如果需要在多种数据源之间进行数据同步,DataX 是一个不错的选择;
  • 如果需要进行复杂的数据清洗和转换,Kettle 则更为适合。

标签:sqoop,--,数据库,Kettle,hive,Sqoop,export,迁移,工具
From: https://blog.csdn.net/qq_55006020/article/details/143111885

相关文章

  • 企业博客SEO优化:8个必备工具与资源指南
    在当今数字化时代,企业博客已远远超越了传统意义上的信息展示平台。它不仅是企业展示品牌形象、传递品牌价值的重要窗口,更是吸引潜在客户、增强用户粘性、提升网站流量和搜索引擎排名的关键。通过精心策划和高质量的内容创作,企业博客能够建立起与目标受众的深入连接,提升品牌......
  • Redis工具类(解决缓存穿透、缓存击穿)
    文章目录前言IBloomFilterObjectMapUtilsCacheClient使用示例具体业务的布隆过滤器控制层服务层前言该工具类包含以下功能:1.将任意对象存储在hash类型的key中,并可以设置TTL2.将任意对象存储在hash类型的key中,并且可以设置逻辑过期时间3.将空对象存入ha......
  • 开源一款10k star的聚合支付工具,封装了某宝、某东、某银、PayPal等常用的支付方式的源
    大家好,我是一颗甜苞谷,今天分享一款10kstar的聚合支付工具,封装了某宝、某东、某银、PayPal等常用的支付方式的源码前言在当今的数字化时代,支付已成为日常生活中不可或缺的一部分。然而,面对众多支付渠道,如何高-效、便捷地集成这些支付方式成为一个挑战。为此,我们需要一种处理......
  • AIDA64 Extreme(硬件检测工具)v7.40正式版
    全球No.1的硬件识别,诊断神器AIDA64v6.752022年夏季正式版发布.AIDA64中文版是一款硬件检测工具及基准测试软件(烤机软件),对硬件玩家来说,AIDA64电脑版是设备识别性能检测不二之选,权威性遥遥领先AIDA64官方版(原EVEREST)是一款综合性的系统硬件检测工具,号称最权威的......
  • 2024版最新渗透测试工具整理大全(非常详细)渗透测试零基础入门到精通,收藏这篇就够了
    学习网络安全为什么需要掌握渗透测试工具使用相关知识?1.增强安全防御能力:通过对渗透测试工具的使用,安全专家可以更深入地理解攻击者可能采用的手法和策略,从而提前部署相应的防御措施,加固网络和系统的安全。2.发现并修复漏洞:渗透测试可以识别存在的安全漏洞,包括软件漏洞......
  • 项目管理工具“禅道”与bug相关
    一、禅道的介绍(1)定义禅道是一个项目管理工具,也是一个bug管理工具,还是一个用例管理工具。(2)作用:为了解决众多企业在管理中出现混乱,无序的现象,开发出来(3)来源:禅道属易软天创公司(4)禅道是集于产品管理,项目管理,测试管理于一身,同时包含事务管理,组织管理8众多功能,是中小企业管理的首先......
  • 2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆
    经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!目录:一、基础环境二、常用工具三、Web安全四、加密解密六、文件工具七、隐写图片八、隐写音频九、隐写......
  • 手把手教你安装最强文生图工具ComfyUI
    ComfyUI是一款专为稳定扩散(StableDiffusion)设计、基于节点的高效用户界面,因其高度的可定制性,正逐渐成为广大用户的新宠。本文教你如何在Windows和Mac上安装ComfyUI,并提供一些快速上手的小贴士。1ComfyUI简介ComfyUI是一款创新的图形用户界面(GUI),打破了传统稳定扩......
  • uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款
    uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款等功能,界面漂亮颜值高,视频商城小工具等,蚂蚁森林种树养鸡农场偷菜样样齐用于视频,商城,直播,聊天等sumer-alipay介绍uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝......
  • uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视
    uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频商城小工具等,朋友圈视频号即时聊天用于视频,商城,直播,聊天,等等场景,源码分享sumer-weixin介绍uniapp精仿微信,基于SumerUI3.0和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频......