Flume和Sqoop有什么区别?

时间:2013-10-22 15:08:04

标签: hadoop sqoop flume

Flume和Sqoop都是用于数据移动的,那么它们之间有什么区别?在什么条件下我应该使用Flume还是Sqoop?

7 个答案:

答案 0 :(得分:23)

来自http://flume.apache.org/

  

Flume是一种分布式,可靠且可用的服务   有效地收集,聚合和移动大量日志   数据

Flume有助于从各种来源收集数据,例如日志,jms,目录等。
可以配置多个水槽代理来收集大量数据。
它水平缩放。

来自http://sqoop.apache.org/

  

Apache Sqoop(TM)是一种专为高效传输批量而设计的工具   Apache Hadoop和结构化数据存储之间的数据,如   关系数据库。

Sqoop有助于在hadoop和其他数据库之间移动数据,它可以并行传输数据以提高性能。

答案 1 :(得分:10)

Sqoop和Flume都从源中提取数据并将其推送到接收器。主要区别是Flume是事件驱动的,而Sqoop则不是。

答案 2 :(得分:4)

水槽: 一个非常常见的用例是从一个系统收集日志数据 - 一组Web服务器(将其聚合在HDFS中以供以后分析)。

Sqoop: 另一方面,它旨在从结构化数据存储中执行批量导入数据到HDFS。简单的用例将是一个运行夜间sqoop导入的组织,将当天的数据从生产数据库加载到Hive数据仓库进行分析。

- 来自最终指南。

答案 3 :(得分:4)

Flume:

  Flume is a framework for populating Hadoop with data. Agents are populated 
  throughout ones IT infrastructure – inside web servers, application servers
  and mobile devices, for example – to collect data and integrate it into Hadoop.

Sqoop:

  Sqoop is a connectivity tool for moving data from non-Hadoop data stores – such
  as relational databases and data warehouses – into Hadoop. It allows users to 
  specify the target location inside of Hadoop and instruct Sqoop to move data 
  from Oracle,Teradata or other relational databases to the target. 

您可以看到完整的Post

答案 4 :(得分:1)

  1. Apache Sqoop和Apache Flume使用各种数据源。 Flume在流式数据源中运行良好,这些数据源是在hadoop环境中连续生成的,例如来自多个服务器的日志文件。
  2. 而Apache Sqoop旨在与任何具有JDBC连接的关系数据库系统一起使用。

    1. Sqoop还可以从NoSQL数据库(如MongoDB或Cassandra)导入数据,还可以直接传输数据或Hive或HDFS。要使用Apache Sqoop工具将数据传输到Hive,必须创建一个表,该表从数据库本身获取模式。

    2. 在Apache Flume中,数据加载是事件驱动的,而在Apache Sqoop中,数据加载不是由事件驱动的。

    3. 4.当从JMS或Spooling目录等各种来源移动批量流数据时,Flume是更好的选择,而如果数据位于Teradata,Oracle,MySQL Server,Postgres或任何其他JDBC兼容的数据库中,则Sqoop是理想的选择。数据库然后最好使用Apache Sqoop。

      5.在Apache Flume中,数据通过多个通道流向HDFS,而在Apache Sqoop中,HDFS是导入数据的目的地。

      6.Apache Flume具有基于代理的体系结构,即用水槽编写的代码称为代理,负责获取数据,而在Apache Sqoop中,该体系结构基于连接器。 Sqoop中的连接器知道如何连接各种数据源并相应地获取数据。

      最后,Sqoop和Flume不能用于完成相同的任务,因为它们是专为不同目的而开发的。 Apache Flume代理程序用于从Twitter发送推文或从Web服务器发送日志文件等流数据,而Sqoop连接器只能用于结构化数据源并从中获取数据。

      Apache Sqoop主要用于数据导入的并行数据传输,因为它可以快速复制数据,因为Apache Flume用于收集和聚合数据,因为它具有分布式,可靠性和高可用性的备份路径。

答案 5 :(得分:0)

Sqoop和Flume都旨在满足数据摄取需求,但它们用于不同的目的。 Apache Flume适用于在hadoop环境中连续生成的流数据源,例如来自多个服务器的日志文件,而Apache Sqoop适用于任何具有JDBC连接的RDBMS。

Sqoop实际上是用于hadoop和任何其他结构化数据存储之间的批量数据传输。 Flume从许多来源收集日志数据,汇总并将其写入HDFS。

我遇到了这个有趣的信息图,解释了两个apache项目之间的差异Sqoop and Flume -

Difference between Sqoop and Flume

答案 6 :(得分:0)

Sqoop

  • Sqoop可以执行从RDBMS到HDFS / HIVE / HBASE的导入/导出
  • sqoop仅导入/导出非结构化或半结构化的结构化数据 结构化。

水槽

  • 从多个来源导入流数据,大部分是半结构化的 非结构化的。现在Kafka是更好的替代水槽。