10

我刚开始学习 Hadoop 并浏览了一些网站,我经常发现

“Hadoop 不是实时平台”即使在 SO 中也是如此

我对此感到困惑,我真的无法理解。任何人都可以帮我解释一下吗?

谢谢大家

4

1 回答 1

24

Hadoop 最初是为批处理而设计的。这意味着,一次在输入中获取一个大型数据集,对其进行处理,然后编写一个大型输出。MapReduce 的概念是面向批处理而非实时的。但老实说,这只是 Hadoop 开始时的情况,现在您有很多机会以更实时的方式使用 Hadoop。

首先,我认为定义实时的含义很重要。可能是您对流处理感兴趣,也可能是您希望对数据运行查询以实时返回结果。

对于 Hadoop 上的流处理,原生 Hadoop 不会为您提供这种能力,但您可以轻松地将其他一些项目与 Hadoop 集成:

  • Storm-YARN允许您通过 YARN 在 Hadoop 集群上使用 Storm。
  • Spark与 HDFS 集成,允许您实时处理流数据。

对于实时查询,还有几个使用 Hadoop 的项目:

  • Cloudera 的Impala使用 HDFS,但完全绕过 MapReduce,因为否则开销太大。
  • Apache Drill是另一个与 Hadoop 集成以提供实时查询能力的项目。
  • Stinger项目旨在使 Hive 本身更加实时。

可能还有其他项目适合“使 Hadoop 实时”列表,但这些是最知名的。

正如您所看到的,Hadoop 越来越朝着实时方向发展,即使它不是为此而设计的,您也有很多机会将其扩展为实时目的。

于 2013-10-28T06:53:04.380 回答