《Sqoop 快速上手:安装 + 测试实战》

推荐原文 见:http://docs.xupengboo.top/bigdata/di/sqoop.html

Sqoop(SQL-to-Hadoop) 是 Apache 开源的工具,专门用于在 Hadoop 生态系统(如 HDFS、Hive、HBase) 和 关系型数据库(如 MySQL、Oracle) 之间高效传输批量数据。专注于关系型数据库 ↔ Hadoop

Apache Sqoop 项目已于 2021 年 6 月停止维护,并被移至 Apache Attic。这意味着官方不再对 Sqoop 进行更新或提供支持。Apache Attic 是 Apache 软件基金会(ASF)设立的一个存储库,专门用于存放那些已停止活跃开发或维护的项目。

官方地址:https://sqoop.apache.org/

下载地址:https://archive.apache.org/dist/sqoop/

一、安装 Hadoop 客户端

由于 Sqoop 独立安装到一台服务上面,所以需要在独立服务器上安装 Hadoop 的客户端。

  1. 配置 /etc/hosts 文件。
192.168.10.68 vm-01
192.168.10.69 vm-02
192.168.10.70 vm-03
  1. 下载以及安装 Hadoop 客户端。(按照之前 Hadoop 集群安装 章节部署的集群操作)。
cd /opt
# 选择合适的hadoop版本,要与Hadoop集群匹配
wget https://downloads.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
# 解压
tar -xzvf hadoop-3.2.4.tar.gz
# /usr/local通常被用作本地软件安装目录。
mv hadoop-3.2.4 /usr/local/hadoop
  1. 配置相关文件:
  • core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://vm-01:9000</value> <!-- 这里是主节点的 IP 地址, 此处为 vm-01 的 IP 地址 --></property>
</configuration>
  • hdfs-site.xml
<configuration><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>vm-01:8020</value></property>
</configuration>
  • yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties --><!-- YARN ResourceManager 地址 --><property><name>yarn.resourcemanager.address</name><value>vm-01:8032</value></property>
</configuration>
  • mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value> <!-- 使用 YARN 作为 MapReduce 框架 --></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property>
</configuration>
  1. 执行命令校验:
hadoop fs -ls /  # 应返回远程 HDFS 根目录列表# 注意:我们并不是要创建一个hadoop子节点,仅仅是个客户端,所以不用启动hadoop的start相关脚本,可通过jps查看。

二、Sqoop 部署

:::tip
注意:选择 Sqoop 的版本需要与所使用的 Hadoop 版本相匹配,以确保两者的兼容性和稳定性。不同版本的 Sqoop 依赖于特定版本的 Hadoop,因此在部署时需要注意两者的对应关系。
:::

此处,已有的 hadoop 3.2.4,这是使用更稳定的版本: Sqoop 1.4.7。

  1. 下载 Sqoop 二进制包
curl -O -L https://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz /opt
cd /opt 
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoopvi /etc/profile
export SQOOP_HOME=/opt/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
  1. 配置 Sqoop
# 复制模板配置文件
cp $SQOOP_HOME/conf/sqoop-env-template.sh $SQOOP_HOME/conf/sqoop-env.sh
# 编辑 sqoop-env.sh,设置 Hadoop 路径
vi sqoop-env.sh
# 配置hadoop公共库和mapreduce的库目录
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
  1. 下载驱动(不同的数据库,要给Sqoop不同的依赖驱动包)
cd $SQOOP_HOME/lib/
wget https://jdbc.postgresql.org/download/postgresql-42.7.3.jar
  1. 基本导入命令,例如:将 PostgreSQL 表中的数据导入到 HDFS 的指定目录
# 测试检查读取表格数据
sqoop eval \--driver org.postgresql.Driver \--connect jdbc:postgresql://192.168.10.66:5432/postgres \--username "root" \--password "0818" \--query "SELECT * FROM table_name2 LIMIT 1"# 强制指定 HDFS 操作用户身份
export HADOOP_USER_NAME=hadoopsqoop import \--verbose \--driver org.postgresql.Driver \--connect jdbc:postgresql://192.168.10.66:5432/postgres \--username "root" \--password "0818" \--table "table_name2" \--target-dir /user/sqoop \--delete-target-dir \-m 1

:::tip java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 异常修复

# 抛出:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils 异常
# 解决办法:添加 commons-lang-2.6 版本,3版本不支持。
cd $SQOOP_HOME/lib
wget https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar

:::

成功页面 如下:

image-20250409135801481

  1. 下载 hadoop 中的文件,查看数据:
# 将导入成功的数据下载下来
$ hdfs dfs -get /user/sqoop /opt/temp/
$ ls
data.csv  sqoop
$ cat part-m-00000 # 数据内容
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5
1,1,1,1,1
1,2,3,4,5

三、Sqoop 整体流程

  1. 生成代码:Sqoop 根据目标数据库表的结构,生成相应的 Java 类,用于序列化和反序列化数据。

  2. 编译和打包:生成的 Java 类会被编译并打包成一个可执行的 JAR 文件。

  3. 提交作业:Sqoop 将该 JAR 文件作为一个 MapReduce 作业提交给 YARN。

  4. 任务执行:YARN 根据集群的资源情况,分配资源并启动 MapReduce 作业的各个任务(Mapper)。每个 Mapper 通过 JDBC 从 MySQL 中读取数据,并将数据写入 HDFS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构刷题之贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09; 是一种在每个步骤中都选择当前最优解的算法设计策略。它通常用于解决优化问题&#xff0c;例如最小化成本或最大化收益。贪心算法的核心思想是&#xff1a;在每一步选择中&#xff0c;都做出局部最优的选择&#xff0c;希望…

重新定义PPT创作!ChatPPT发布全球首个AI PPT专用MCP Server

在这个AI技术日新月异的时代&#xff0c;ChatPPT团队推出革命性的MCP Server&#xff08;Multimodal Collaboration Platform&#xff09;&#xff0c;这是全球首个专注于AI PPT生成领域的智能协作平台。该平台的诞生&#xff0c;标志着PPT创作正式迈入"智能协作"新纪…

未来蓉城:科技与生态共舞的诗意栖居-成都

故事背景 故事发生在中国四川成都的2075年&#xff0c;展现科技与自然深度交融的未来城市图景。通过六个充满想象力的生态装置场景&#xff0c;描绘市民在智慧城市中诗意栖居的生活状态&#xff0c;展现环境保护与人文传承的和谐共生。 故事内容 在电子竹林轻轨站&#xff0c;通…

计算机网络笔记-分组交换网中的时延

一、分组交换网络中的四种时延类型 1. 排队时延 在队列中&#xff0c;当分组在链路上等着被传输时的时延为排队时延&#xff0c;一个分组的排队时延长度取决于该分组前方等待传输的分组数量&#xff0c;如果排队队列为空&#xff0c;且没有正在传输的分组那么该分组的排队时延…

ubuntu20.04.6LTS 安装PCL 1.9.1

在虚拟机中&#xff0c;ubuntu20.04.6 LTS 安装PCL 1.9.1&#xff0c;实测成功了。 注意&#xff1a; 1、编译时选择双核&#xff0c;否则编译到一半报错&#xff0c;因为内存不够进程被杀死。 虚拟机是4核心、内存8G。可能选3核更快一点&#xff0c;双核编译了2个多小时。 …

SQL:JOIN 完全指南:从基础到实战应用

JOIN 是 SQL 中最重要也最常用的操作之一&#xff0c;它允许我们从多个表中获取关联数据。本文将全面解析 SQL 中的各种 JOIN 类型&#xff0c;包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 以及 CROSS JOIN&#xff0c;并通过实际示例展示它们的应用场景。 一、JOIN 基…

IDEA 2024 Maven 设置为全局本地仓库,避免新建项目重新配置maven

使用idea创建Java项目时每次都要重新配置Maven&#xff0c;非常麻烦。其实IDEA可以配置全局Maven。方法如下&#xff1a; 1.关闭所有项目进入初始页面 2.选择所有配置 3.设置为自己的路径

UDP怎么样实现可靠传输?

如果需要在基于UDP的应用中实现可靠传输&#xff08;例如确保数据不丢失、按顺序到达等&#xff09;&#xff0c;通常需要在应用层实现相应的机制。 1. 确认应答机制 应用层可以使用确认应答机制来确保数据的可靠传输。当发送方发送一个数据包时&#xff0c;接收方收到数据包…

【CSS基础】- 02(emmet语法、复合选择器、显示模式、背景标签)

css第二天 一、emmet语法 1、简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 ​ 快速生成HTML结构语法 ​ 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab…

每日算法:洛谷U535992 J-C 小梦的宝石收集(双指针、二分)

题目描述 小梦有 n 颗能量宝石&#xff0c;其中第 i 颗的能量为 ai​&#xff0c;但这些能量宝石十分不稳定&#xff0c;随时有可能发生崩坏&#xff0c;导致他们全部消失&#xff01; 小梦想要留住宝石们&#xff0c;不希望他们发生崩坏&#xff0c;同时他发现&#xff1a;如…

Spring MVC 逻辑视图(JSP、Thymeleaf、FreeMarker)与非逻辑视图(JSON、Excel、PDF、XML)详解及示例

Spring MVC 逻辑视图与非逻辑视图详解及示例 一、逻辑视图与非逻辑视图的定义 类型定义逻辑视图通过视图解析器&#xff08;ViewResolver&#xff09;将逻辑名称&#xff08;如 success&#xff09;映射到具体视图实现。非逻辑视图直接返回具体视图对象&#xff08;如 JsonVie…

【AAOS】【源码分析】CarAudioService(二)-- 功能介绍

汽车音频是 Android 汽车操作系统 (AAOS) 的一项功能,允许车辆播放信息娱乐声音,例如媒体、导航和通信。AAOS 不负责具有严格可用性和时间要求的铃声和警告,因为这些声音通常由车辆的硬件处理。将汽车音频服务集成在汽车中,彻底改变了驾驶体验,为驾驶员和乘客提供了音乐、…

docker安装软件汇总(持续更新)

1、简介 本文介绍一些常用的软件通过docker安装并启动&#xff0c;持续更新。 2、docker安装软件 2.1、zookeeper & kafka # 1、拉取zookeeper镜像 git pull wurstmeister/zookeeper # 2、启动zookeeper容器 docker run -d --restartalways --log-driver json-file --lo…

MySQL的左连接、右连接、内连接、外连接

一、前言 MySQL中的左连接、右连接、内连接和全外连接是用于多表关联查询的核心操作。 二、内连接&#xff08;INNER JOIN&#xff09; 定义&#xff1a;返回两个表中完全匹配的行&#xff0c;即只保留两个表连接字段值相等的行。示例场景&#xff1a;查询所有有选课记录的学…

前端面试宝典---数据类型

基本数据类型 对于基本类型在创建时无需使用 new 关键字 Bigint在实际开发不常用&#xff0c;如果对于精度要求高可以使用第三方库&#xff0c;如decimal.js 基本数据类型介绍 undefined&#xff1a;当变量被声明但未赋值&#xff0c;或者函数没有返回值时&#xff0c;就会呈现…

Lua 函数使用的完整指南

在 Lua 中&#xff0c;函数是一等公民&#xff08;First-Class Citizen&#xff09;&#xff0c;这意味着函数可以像其他值一样被赋值、传递和操作。以下是 Lua 函数定义的完整指南&#xff0c;涵盖基础语法、高级特性、设计模式及性能优化。 在Lua 中&#xff0c;函数定义的完…

使用StockTV API对接印度金融市场数据全指南:K线、实时行情与IPO新股

一、印度金融市场数据特点 印度作为全球增长最快的主要经济体之一&#xff0c;其金融市场具有以下显著特征&#xff1a; 双交易所体系&#xff1a;国家证券交易所(NSE)和孟买证券交易所(BSE)高流动性品种&#xff1a;Nifty 50指数成分股、银行股等独特交易机制&#xff1a;T2…

2021-10-26 C++繁忙通信兵

缘由繁忙的通讯兵&#xff0c;可以解决一下吗-编程语言-CSDN问答 void 繁忙通信兵() {//缘由https://ask.csdn.net/questions/7544401?spm1005.2025.3001.5141int a 200, s1 8, s2 5, s3 45, p 0, n 0, c 0;std::cin >> n;while (a > n){a - s1 s2;if (a &l…

【Linux】进程控制:创建、终止、等待与替换全解析

文章目录 前言一、重谈进程创建二、进程终止2.1 正常终止的退出码机制2.2 异常终止的信号机制2.3 进程常见的退出方法 三、进程等待&#xff1a;避免僵尸进程的关键3.1 进程等待的必要性3.2 进程等待的两个系统调用接口3.2.1 wait()3.2.2 waitpid()区别 四、进程程序替换4.1 进…

基于Redis实现短信防轰炸的Java解决方案

基于Redis实现短信防轰炸的Java解决方案 前言 在当今互联网应用中&#xff0c;短信验证码已成为身份验证的重要手段。然而&#xff0c;这也带来了"短信轰炸"的安全风险 - 恶意用户利用程序自动化发送大量短信请求&#xff0c;导致用户被骚扰和企业短信成本激增。本…