当前位置: 首页 > article >正文

Centos7安装sqoop1.4.7超详细教程

Apache Sqoop

Sqoop(SQL to Hadoop)是一个开源工具,用于在 Hadoop 和关系型数据库之间高效地传输大规模的数据。它主要用于将数据从关系数据库(如 MySQL、PostgreSQL、Oracle 等)导入到 Hadoop 的分布式文件系统(HDFS)中,或将数据从 Hadoop 导出到关系数据库。

主要功能和特性:

  1. 数据导入:

    • 从关系数据库将数据导入到 HDFS、HBase 或 Hive。
    • 支持增量导入,可以只导入新数据或更新数据。
  2. 数据导出:

    • 将数据从 HDFS、HBase 或 Hive 导出到关系数据库中。
  3. 多种连接支持:

    • 支持多种关系型数据库,通过 JDBC 驱动进行连接。
  4. 并行处理:

    • 支持数据的并行导入和导出,可以通过划分数据的方式提高性能。
  5. 数据转换:

    • 在导入过程中,可以对数据进行转换,比如过滤和格式化。
  6. 支持多种格式:

    • 支持多种数据存储格式,如文本文件、Avro、Parquet 等。

常用命令:

导入数据:

sqoop import --connect jdbc:mysql://localhost:3306/dbname \
--username user --password password \
--table tablename --target-dir /path/to/hdfs

导出数据

sqoop export --connect jdbc:mysql://localhost:3306/dbname \
--username user --password password \
--table tablename --export-dir /path/to/hdfs

--username user --password password \
--table tablename --export-dir /path/to/h

--username user --password password \
--table tablename --export-dir /path

--username user --password password \
--table tablename --export-dir

--username user --password password \
--table tablename --exp

--username user --password password \
--table tablenam

--username user --password password \
--table 

--username user --password password \

--username user --password passwor

--username user --password p

--username user --pas

--username us

--us

列出数据库:` 

sqoop list-databases --connect jdbc:mysql://localhost:3306/ \
--username user --password password

更多使用方法:

Apache Sqoop详细教程-CSDN博客

sqoop使用入门 - 斐波那切 - 博客园

Sqoop入门(一篇就够了)-阿里云开发者社区

使用场景:

  • 大数据集成: 将大规模的历史数据导入 Hadoop 进行分析和处理。
  • 数据备份: 常规的
  • 实时数据处理: 利用 Hadoop 的实时处理能力,结合数据库中的实时数据。

Sqoop 是数据工程师和分析师常用的工具,帮助他们高效地管理和迁移数据,支持大数据处理和分析的需求。

环境一览表

Hadoop3.3.0
MySQL5.7.25
Hive3.1.2

Sqoop

1.4.7

基础组件安装教程:

Hadoop安装icon-default.png?t=O83Ahttps://blog.csdn.net/qq_73252299/article/details/139551486?ops_request_misc=%257B%2522request%255Fid%2522%253A%252223128DE1-B118-4D86-97F0-23C5B033CFA3%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=23128DE1-B118-4D86-97F0-23C5B033CFA3&biz_id=0&spm=1018.2226.3001.4450

Mysql安装icon-default.png?t=O83Ahttps://blog.csdn.net/qq_73252299/article/details/142316629?spm=1001.2014.3001.5501

Hive安装icon-default.png?t=O83Ahttps://blog.csdn.net/qq_73252299/article/details/142515226?spm=1001.2014.3001.5501

 Sqoop安装包下载

同版本下载(安装配套下载站)

官方下载(原版)

安装

sqoop主要安装在主节点master/node1上,其他计算节点看具体需求

下载好的压缩包上传解压

解压使用命令

tar -zxvf 压缩包.tar.gz

 修改配置文件

      先进入Sqoop解压包目录中的conf文件夹目录下,将sqoop-env-template.sh文件复制并重命名为sqoop-env.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/apache-hive-3.1.2-bin

       在sqoop-env.sh配置文件中,需要配置的是Sqoop运行时必备环境的安装目录,Sqoop运行在Hadoop之上,因此必须指定Hadoop环境。另外,在配置文件中还要根据需要自定义配置Hbase、Hive和Zookeeper等环境变量(例如本章后续将会使用到Hive,所以必须配置Hive的环境变量,而其他无关环境变量如果未配置,使用过程中可能会出现警告提示,但不影响其他操作)。

小提示:

      需要说明的是,本文讲解的Hadoop是Apache社区版本,Hadoop重要的组件都是安装在一个安装包中,所以上述配置文件中配置的HADOOP_COMMON_HOME与HADOOP_MAPRED_HOME指定的Hadoop安装目录一致。如果使用第三方的Hadoop,这些组件都是可选择配置的,那么这两个路径可能会有所不同。

将sqoop加入系统环境变量

为了后续方便Sqoop使用和管理,可以配置Sqoop系统环境变量。使用“vi /etc/profile”指令进入到profile文件,在文件底部进一步添加如下内容类配置Sqoop系统环境变量。

vim /etc/profile
export SQOOP_HOME=/opt/sqoop1.4.7
export PATH=$PATH:$SQOOP_HOME/bin:

(hadoop环境变量我放在别地,不影响使用)

编辑完成后保存退出

:wq

刷新环境变量

source /etc/profile

看到出现环境变量后配置完成


         当完成前面Sqoop的相关配置后,还需要根据所操作的关系型数据库添加对应的JDBC驱动包,用于数据库连接。本书将针对MySQL数据库进行数据迁移操作,所以需要将mysql-connector-java-5.1.32.jar(版本可以自行选择)包上传至Sqoop解压包目录的lib文件夹下。

这里我直接从hive的lib目录中复制,保持驱动版本一致 

cp mysql-connector-java-5.1.47-bin.jar /opt/sqoop1.4.7/lib/

完成

如遇到报错提示commons-lang-2.6.jar缺失,从hive的lib目录下复制到sqoop的lib目录下即可解决

报错相似日志:

[root@node1 lib]# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
Warning: /opt/sqoop1.4.7/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /opt/sqoop1.4.7/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /opt/sqoop1.4.7/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /opt/sqoop1.4.7/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2024-10-23 10:02:37,907 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
2024-10-23 10:02:38,334 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
2024-10-23 10:02:38,603 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at org.apache.sqoop.manager.MySQLManager.initOptionDefaults(MySQLManager.java:73)
	at org.apache.sqoop.manager.SqlManager.<init>(SqlManager.java:89)
	at com.cloudera.sqoop.manager.SqlManager.<init>(SqlManager.java:33)
	at org.apache.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:51)
	at com.cloudera.sqoop.manager.GenericJdbcManager.<init>(GenericJdbcManager.java:30)
	at org.apache.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:46)
	at com.cloudera.sqoop.manager.CatalogQueryManager.<init>(CatalogQueryManager.java:31)
	at org.apache.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:38)
	at com.cloudera.sqoop.manager.InformationSchemaManager.<init>(InformationSchemaManager.java:31)
	at org.apache.sqoop.manager.MySQLManager.<init>(MySQLManager.java:65)
	at org.apache.sqoop.manager.DefaultManagerFactory.accept(DefaultManagerFactory.java:67)
	at org.apache.sqoop.ConnFactory.getManager(ConnFactory.java:184)
	at org.apache.sqoop.tool.BaseSqoopTool.init(BaseSqoopTool.java:272)
	at org.apache.sqoop.tool.ListDatabasesTool.run(ListDatabasesTool.java:44)
	at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
	at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
	at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 20 more

解决:

从hive/lib目录下复制到sqoop/lib目录下即可解决

 


测试

      执行完上述Sqoop的安装配置操作后,就可以执行Sqoop相关指令来验证Sqoop的执行效果了,测试查看数据库

sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456

从图中可以看出,执行完上述指令后,通过Sqoop成功查询出连接的MySQL数据库中的所有数据库名,这就说明Sqoop的安装配置正确。


http://www.kler.cn/news/363029.html

相关文章:

  • 【景观生态学实验】实验二 景观类型分类
  • Spring + WebSocket
  • JVM、字节码文件介绍
  • konvajs -基础图形-标签-箭头,动画,学习笔记
  • 【Axure高保真原型】标签管理可视化驾驶舱长页面案例
  • TiDB替换Starrocks:业务综合宽表迁移的性能评估与降本增效决策
  • Android 默认去掉URL网络校验,设置不进行网络校验
  • Arm和高通闹翻在即,或影响骁龙 8 Elite
  • stm32实现esp8266连接到TCP服务器(二)
  • http——配置nginx服务通过ip访问多网站
  • 熟悉架构框架:TOGAF的四大核心架构
  • 依赖标签分类任务Smin值计算(蛋白质功能预测,GO标签)
  • 软考——计算机网络概论
  • 人工智能:技术的变革与未来的无限可能
  • HTTP 与 HTTPS 的区别:原理、安全性与应用场景
  • 交替打印数字/拓展多线程/多种实现方式
  • 德高望重的c语言
  • 量子纠错--shor‘s 码
  • Fast-LLM:加速大型语言模型训练的开源库
  • 抖店自动售后系统
  • # Tomcat NIO 配置实操指南
  • pytorch nn.NLLLoss和nn.CrossEntropyLoss函数区别
  • vue,java,webSocket通讯,服务端主动给多客户端发消息
  • 精准布局:探索CSS中的盒子固定定位的魅力
  • [计算机网络]第一周
  • ES6运算符