大数据工具Hadoop快速入门8-SQOOP

什么是Hadoop中的SQOOP?

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

Sqoop的一个示例用例是运行夜间Sqoop导入的企业,将当天的数据从生产事务RDBMS加载到Hive数据仓库中以进行进一步分析。

Sqoop架构

《大数据工具Hadoop快速入门8-SQOOP》 image.png

所有现有的数据库管理系统都考虑到了SQL标准。但是,每个DBMS实现并不完全一样。因此,当涉及跨系统的数据传输时,这种差异带来了挑战。 Sqoop连接器是帮助克服这些挑战的组件。

在Sqoop的连接器的帮助下,Sqoop和外部存储系统之间的数据传输成为可能。

Sqoop具有用于处理各种流行关系数据库的连接器,包括MySQL,PostgreSQL,Oracle,SQLServer和DB2。这些连接器中的每一个都知道如何与其关联的DBMS进行交互。还有一个通用的JDBC连接器,用于连接任何支持Java JDBC协议的数据库。此外,Sqoop还提供优化的MySQL和PostgreSQL连接器,这些连接器使用特定于数据库的API来有效地执行批量传输。

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

为什么我们需要Sqoop?

使用Hadoop进行分析处理需要将来自不同来源的大量数据加载到Hadoop集群中。这个批量数据从异构数据源加载到Hadoop然后处理它的过程带来了一系列挑战。在选择正确的数据加载方法之前,需要考虑维护和确保数据一致性并确保资源的有效利用。

其他方法:

1.使用脚本加载数据

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

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

这会复杂化map-reduce应用程序使这些应用程序。

3.除了能够处理大量数据外,Hadoop还可以处理多种不同形式的数据。因此,要将这些异构数据加载到Hadoop中,已经开发了不同的工具。
Sqoop和Flume是两种这样的数据加载工具。

参考资料

Sqoop vs Flume vs Hadoop中的HDFS

SqoopFlumeHDFS
Sqoop用于从结构化数据源(如RDBMS)导入数据。Flume用于将批量流数据移动到HDFS中。HDFS是Hadoop生态系统用于存储数据的分布式文件系统。
Sqoop具有基于连接器的架构。连接器知道如何连接到相应的数据源并获取数据。Flume拥有基于代理的架构。这里,编写了一个代码(称为“代理”),负责获取数据。HDFS具有分布式架构,其中数据分布在多个数据节点上。
HDFS是使用Sqoop进行数据导入的目的地。数据通过零个或多个通道流向HDFS。HDFS是数据存储的终极目标。
Sqoop数据加载不是事件驱动的。Flume数据加载可以由事件驱动。HDFS只是存储通过任何方式提供给它的数据。
为了从结构化数据源导入数据,必须只使用Sqoop,因为它的连接器知道如何与结构化数据源交互并从中获取数据。为了加载流媒体数据,例如在Twitter上生成的推文或Web服务器的日志文件,应该使用Flume。 Flume代理构建用于获取流数据。HDFS有自己的内置shell命令来将数据存储到其中。 HDFS无法导入流数据
    原文作者:python人工智能命理
    原文地址: https://www.jianshu.com/p/f40f92174ec3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞