Hadoop 如何针对非陈旧数据“实时”运行?
Posted
技术标签:
【中文标题】Hadoop 如何针对非陈旧数据“实时”运行?【英文标题】:How does Hadoop run in "real-time" against non-stale data? 【发布时间】:2015-06-25 19:01:25 【问题描述】:我对 Hadoop 及其“数据摄取”工具(例如 Flume 或 Sqoop)的基本理解是 Hadoop 必须始终针对以下数据运行其 MR 作业存储在其 HDFS 上的结构化文件中。而且,这些工具(同样是 Flume、Sqoop 等)主要负责将来自不同系统(RDBMS、NoSQL 等)的数据导入 HDFS。
对我来说,这意味着 Hadoop 将始终在“陈旧”(因为没有更好的词)数据上运行,即分钟/小时/等。老的。因为,将这些不同系统中的大数据导入 HDFS需要时间。到 MR 甚至可以运行时,数据已经过时并且可能不再相关。
假设我们有一个应用程序具有实时限制,即在某事发生后 500 毫秒内做出决定。假设我们有大量数据流正在导入 HDFS,并且由于数据太大,甚至需要 3 秒才能将数据 on 导入 HDFS。然后说负责做出决定的 MR 工作需要 200ms。因为数据的加载需要很长时间,所以我们已经打破了时间限制,即使处理数据的 MR 作业能够在给定的窗口内完成。
这种大数据问题有解决办法吗?
【问题讨论】:
【参考方案1】:借助 Apache Spark 流式 API 和另一个工具 Storm,您可以使用它进行实时流处理。
【讨论】:
谢谢@abhijeet (+1) - 我可以假设这两种选择(Spark 和 Storm)的唯一限制是 MR 工作必须能够完全适应内存吗?我问是因为我对这些工具的理解是它们专门用于内存文件系统。再次感谢! 没有。在 Storm 中,它不运行 MR,它运行它的拓扑。可以处理连续的数据流。 Storm 和 spark 都在分布式环境中运行,工作负载是分布式的。在内存数据库中是不同的东西。这两个适用于数据的实时流。数据会来,它会得到处理。以上是关于Hadoop 如何针对非陈旧数据“实时”运行?的主要内容,如果未能解决你的问题,请参考以下文章