Sqoop是Apache软件的产品。Sqoop从Hadoop提取有用的信息,然后传递到外部数据存储。借助Sqoop,我们可以将数据从RDBMS或大型机导入HDFS。Flume也来自Apache软件。它收集并移动生成的递归数据。在 Apache的水槽不仅限于记录数据聚合,但数据来源是定制的,所以水槽可以用于传输数据的数量庞大。在Hadoop分布式文件系统和RDBMS之间收集,聚合和移动大量数据的最佳方法是使用Sqoop或Flume之类的工具。

让我们讨论用于上述目的的这两个常用工具。

什么是Sqoop

要使用Sqoop,用户必须指定用户要使用的工具以及控制特定工具的参数。然后,您还可以使用Sqoop将数据导出回RDBMS。Sqoop的导出功能用于从Hadoop中提取有用的信息,并将其导出到外部结构化数据存储中。它与Teradata,MySQL,Oracle,HSQLDB等不同的数据库一起使用。

Sqoop架构:–

flume sqoop_flume sqoop

Sqoop中的连接器是特定数据库源的插件,因此,它是Sqoop建立的基础。尽管驱动程序是特定于数据库的,并且由各种数据库供应商分发,但Sqoop本身捆绑了用于流行的数据库和信息仓库系统的不同类型的连接器。因此,Sqoop还提供了多种混合连接器。Sqoop提供了理想网络和外部系统的可插拔组件。Sqoop API为组装新的连接器提供了有用的结构,因此可以将任何数据库连接器放入Sqoop安装中,以提供与不同数据系统的连接。

什么是Flume

在 Apache的水槽不仅限于记录数据聚合,但数据来源是定制的,所以水槽可以用于传输数据,包括大量的数量,但不局限于电子邮件,社交媒体产生的数据,网络流量数据和几乎任何可能的数据源。

Flume体系结构:– Flume体系结构基于许多核心概念:

Flume事件-它表示为数据流的单位,它具有字节有效负载和带有可选字符串标题的字符串集。Flume认为事件只是字节的一般Blob。

Flume Agent-这是一个JVM进程,承载诸如通道,接收器和源之类的组件。它具有接收,存储事件并将其从外部源转发到下一层的潜力。

Flume Flow-这是事件生成的时间点。

Flume客户端-指客户端在事件的起点运行的界面,并将其传递给Flume代理。

源极的源是一个具有特定格式,并通过特定的机制提供它消耗事件。

通道-这是一个被动存储,在其中存储事件,直到接收器将其删除以进行进一步传输为止。

接收器-它从通道中删除事件,并将其放在HDFS之类的外部存储库中。它当前支持创建文本和序列文件,并且支持两种文件类型的压缩。

Flume架构:

flume sqoop_flume和mysql_02

Sqoop和Flume之间的主要区别

现在我们知道Sqoop和Flume之间有很多区别,以下是它们之间最重要的区别–

Sqoop旨在在Hadoop和关系数据库之间交换大量信息。

而Flume用于从不同来源收集数据,这些来源正在生成有关特定用例的数据,然后将大量数据从分布式资源转移到单个集中式存储库。

Sqoop还包括一组命令,这些命令使您可以检查正在使用的数据库。因此,我们可以将Sqoop视为相关工具的集合。

在收集日期时,Flume会水平缩放数据,并且可以使用多个Flume代理来收集日期并进行汇总。此后,数据日志将移动到集中式数据存储,即Hadoop分布式文件系统(HDFS)。

3.使用Flume的关键因素是必须以连续和流式方式生成数据。同样,Sqoop最适合您的数据位于MySQL,Oracle,Teradata,PostgreSQL等数据库系统中的情况