【发布时间】:2017-09-15 15:10:09
【问题描述】:
我正在尝试将我的大脑包裹在 Hadoop 上并阅读 this excellent tutorial 并仔细阅读 official Hadoop docs。然而,在这些文献中,我都找不到一个简单的解释来解释一些非常基本的东西:
在所有人为设计的“Hello World!”(字数统计)介绍性 MR 示例中,输入数据直接存储在文本文件中。然而,对我来说,感觉在现实世界中很少会出现这种情况。我想象实际上,输入数据将存在于大型数据存储中,例如关系数据库、Mongo、Cassandra,或者只能通过 REST API 等获得。
所以我问:在现实世界中,Hadoop 是如何获取其输入数据的? 我确实看到有像 Sqoop 和 Flume 这样的项目,我想知道整个问题是否这些框架只是简单地将 ETL 输入数据输入到 HDFS 上以运行 MR 作业。
【问题讨论】:
-
好问题,但在“现实世界”中也有很多情况(无论这对虚幻世界可能意味着什么),其中 hadoop 从 HDFS 上的文件中获取数据。您可能会发现 Hive 对您的需求很有用...
-
谢谢@vefthym (+1) - 那么我想我的问题的根源是:数据首先是如何进入 HDFS 的? 至少必须有某种从各种异构系统(再次像 Mongo、Cassandra、REST API 等)到 HDFS 的前期 ETL。但我认为这些 ETL 过程会非常缓慢且耗费大量人力,以至于 Hadoop(或一些配套框架)能够直接从这些系统动态加载数据,要么完全绕过 HDFS,要么将它们加载到 HDFS JIT 上。
-
也许您可能有兴趣探索FileInputFormat 以外的其他输入格式,例如DBInputFormat,允许您访问存储在数据库中的非 HDFS 数据。