Hadoop 如何获取没有存储在 HDFS 上的输入数据?

How does Hadoop get input data not stored on HDFS?

我正在努力全神贯注于 Hadoop 并阅读 this excellent tutorial as well as perused the official Hadoop docs。但是,在这些文献的 none 中,我可以找到对一些非常基本的东西的简单解释:

在所有设计的“Hello World!”(字数)介绍性 MR 示例中,输入数据 直接存储在文本中文件。然而,对我来说,感觉在现实世界中很少会出现这种情况。我会 想象 实际上,输入数据将存在于大型数据存储中,例如关系数据库、Mongo、Cassandra,或者只能通过 REST API等

所以我问:在现实世界中,Hadoop 是如何获取输入数据的? 我确实看到有像 Sqoop and Flume 这样的项目,我想知道是否这些框架的全部意义在于简单地将 ETL 输入数据输入到 HDFS 上,用于 运行 MR 作业。

实际上,出于多种原因,真实世界的应用程序需要 HDFS。

  • 支持 Map Reduce 工作负载和可扩展性的超高带宽。
  • 数据可靠性和容错性。由于复制和分布式性质。关键数据系统需要。
  • 灵活性 - 您无需预处理数据即可将其存储在 HDFS 中。

Hadoop 被设计成一次写入,多次读取的概念。通常用于摄取的Kafka、Flume和Sqoop本身具有很强的容错性,并为HDFS的数据摄取提供高带宽。有时需要每分钟从数千个源中摄取数据,数据以 GB 为单位。为此,需要这些工具以及容错存储系统-HDFS。