"real-time" 中的 Hadoop 运行 如何对抗非陈旧数据?

How does Hadoop run in "real-time" against non-stale data?

我对 Hadoop 及其 "data ingest" 工具(例如 Flume 或 Sqoop)的非常初级的 理解 是 Hadoop 必须 始终 运行 其 MR 作业针对存储在其 HDFS 上的结构化文件中的数据。而且,这些工具(同样,Flume、Sqoop 等)主要负责将数据从不同的系统(RDBMS、NoSQL 等)导入 HDFS。

对我来说,这意味着 Hadoop 将始终 运行 宁 "stale"(缺少更好的词)数据,即 minutes/hours/etc。老的。因为,将大数据从这些不同的系统导入到 HDFS 需要时间 。到 MR 甚至 运行 时,数据已经过时,可能不再相关。

假设我们有一个应用程序,它具有实时限制,可以在事情发生后的 500 毫秒内做出决定。假设我们有大量数据流正在导入到 HDFS 中,并且由于数据太大,甚至需要 3 秒才能将数据 on 传输到 HDFS。然后说负责做决定的MR作业耗时200ms。由于加载数据需要很长时间,我们已经超出了时间限制,即使处理数据的 MR 作业能够在给定的 window.

内完成

这种大数据问题有解决方案吗?

借助可用于实时流处理的工具Apache Spark streaming API & another one is Storm