Sqoop 教程:什么是 Apache Sqoop? Archi结构与实例

Hadoop 中的 SQOOP 是什么?

Apache SQOOP (SQL-to-Hadoop)是一种工具,旨在支持从结构化数据存储(例如关系数据库、企业数据仓库和 NoSQL 系统)批量导出和导入数据到 HDFS。它是一种基于连接器架构的数据迁移工具,支持插件以提供与新外部系统的连接。

Hadoop Sqoop 的一个示例用例是,一家企业每天晚上运行一次 Sqoop 导入,将当天的数据从生产事务 RDBMS 加载到 蜂房 数据仓库以供进一步分析。

接下来在本 Apache Sqoop 教程中,我们将了解 Apache Sqoop 架构。

勺子 Archi质地

所有现有的 数据库管理系统 设计有 SQL 标准。但是,每个 DBMS 在方言方面都存在一定差异。因此,这种差异在系统间数据传输时带来了挑战。Sqoop 连接器是帮助克服这些挑战的组件。

借助 Sqoop 连接器,可以实现 Sqoop Hadoop 和外部存储系统之间的数据传输。

Sqoop 具有可与多种流行关系数据库配合使用的连接器,包括 MySQL, PostgreSQL, Oracle、SQL Server 和 DB2。每个连接器都知道如何与其关联的 DBMS 交互。还有一个通用 JDBC 连接器,用于连接到支持 Java的 JDBC 协议。此外,Sqoop Big data 还提供了优化的 MySQL 和 PostgreSQL 使用数据库特定的 API 来有效地执行批量传输的连接器。

勺子 Archi质地
勺子 Archi质地

除此之外,大数据领域的 Sqoop 还拥有各种用于数据存储的第三方连接器,包括企业 数据仓库 (包括 Netezza、Teradata 和 Oracle) 到 NoSQL 存储(例如 Couchbase)。但是,这些连接器不随 Sqoop 捆绑包提供;需要单独下载,并且可以轻松添加到现有的 Sqoop 安装中。

为什么我们需要 Sqoop?

使用 Hadoop 进行分析处理需要将来自不同来源的大量数据加载到 Hadoop 集群中。将来自异构来源的大量数据加载到 Hadoop 中,然后对其进行处理,这一过程面临着一系列挑战。在选择正确的数据加载方法之前,需要考虑的因素包括维护和确保数据一致性以及确保资源的有效利用。

主要问题:

1. 使用脚本加载数据

传统的使用脚本加载数据的方法并不适合将大量数据加载到Hadoop中,这种方法效率低下并且非常耗时。

2.通过Map-Reduce应用程序直接访问外部数据

为 map-reduce 应用程序提供对外部系统上驻留数据的直接访问(无需加载到 Hadoop)会使这些应用程序变得复杂。因此,这种方法不可行。

3. Hadoop 除了能够处理海量数据之外,还能处理多种不同形式的数据。因此,为了将这种异构数据加载到 Hadoop,已经开发了不同的工具。 勺子水槽 就是两个这样的数据加载工具。

接下来,在本带有示例的 Sqoop 教程中,我们将了解 Sqoop、Flume 和 HDFS 之间的区别。

Hadoop 中的 Sqoop、Flume 和 HDFS

勺子 水槽 高密度文件系统
Sqoop 用于从结构化数据源(如 RDBMS)导入数据。 Flume 用于将批量流数据移动到 HDFS。 HDFS是Hadoop生态系统用于存储数据的分布式文件系统。
Sqoop 具有基于连接器的架构。连接器知道如何连接到相应的数据源并获取数据。 Flume 具有基于代理的架构。这里编写了一个代码(称为“代理”),负责获取数据。 HDFS 具有分布式架构,其中数据分布在多个数据节点上。
HDFS 是使用 Sqoop 导入数据的目的地。 数据通过零个或多个通道流向 HDFS。 HDFS 是数据存储的最终目的地。
Sqoop 数据加载不是事件驱动的。 Flume数据加载可以由事件驱动。 HDFS 仅存储通过任何方式提供给它的数据。
为了从结构化数据源导入数据,人们只能使用 Sqoop 命令,因为它的连接器知道如何与结构化数据源交互并从中获取数据。 为了加载流数据(例如 Twitter 上生成的推文或 Web 服务器的日志文件),应该使用 Flume。Flume 代理是为获取流数据而构建的。 HDFS 有自己的内置 shell 命令来将数据存储到其中。HDFS 无法导入流数据