使用 SQOOP 和 FLUME 将数据从 RDBMS 移动到 Hadoop
Posted
技术标签:
【中文标题】使用 SQOOP 和 FLUME 将数据从 RDBMS 移动到 Hadoop【英文标题】:Data moving from RDBMS to Hadoop, using SQOOP and FLUME 【发布时间】:2014-03-18 03:41:23 【问题描述】:我正在学习 Hadoop,并且在将数据从关系数据库移动到 Hadoop 以及反之亦然的过程中遇到了一些概念。 我已经使用 SQOOP 导入查询将文件从 mysql 传输到 HDFS。我传输的文件是结构化数据集,而不是任何服务器日志数据。我最近读到我们通常使用 Flume 将日志文件移动到 Hadoop 中, 我的问题是: 1. 我们可以使用 SQOOP 来移动日志文件吗? 2. 如果是,SQOOP 和 FLUME 哪个更适合日志文件,为什么?
【问题讨论】:
【参考方案1】:1) Sqoop 可用于在任何 rdbms 和 hdfs 之间传输数据。要使用 scoop,数据的结构通常由导入或导出数据的数据库模式指定。日志文件并不总是结构化的,取决于日志的源和类型,因此 sqoop 不用于移动日志文件。
2)Flume 可以从许多不同类型的可定制数据源收集、聚合数据。在存储到 hdfs 之前,它可以更灵活地控制在用户定义的工作流中捕获和使用哪些特定事件。
我希望它能阐明 sqoop 和 flume 之间的区别。
【讨论】:
感谢您的解释!【参考方案2】:SQOOP 旨在将数据从 RDMS 传输到 HDFS,而 FLUME 用于移动大量日志数据。
两者都是不同的,并且专门用于不同的目的。
喜欢
您可以使用 SQOOP 通过 JDBC 导入数据(在 FLUME 中不能这样做), 和 您可以使用 FLUME 说“我想从这个服务器拖尾 200 行日志文件”。
在此处阅读有关 FLUME 的更多信息 http://flume.apache.org/
【讨论】:
【参考方案3】:SQOOP 不仅从 RDBMS 传输数据,还从像 MongoDB 这样的 NOSql 数据库传输数据。您可以直接将数据传输到 HDFS 或 Hive。
将数据传输到 Hive 无需事先创建表。它采用数据库本身的方案。
Flume 用于获取日志数据或流数据
【讨论】:
以上是关于使用 SQOOP 和 FLUME 将数据从 RDBMS 移动到 Hadoop的主要内容,如果未能解决你的问题,请参考以下文章