【问题标题】:DataFlow difference in Hadoop Standalone and Pseudodistributed mode?Hadoop Standalone 和 Pseudodistributed 模式下的 DataFlow 区别?
【发布时间】:2012-01-12 22:54:51
【问题描述】:

谁能告诉我 Hadoop Standalone 和 Pseudodistributed 模式的数据流有什么区别。事实上,我正在尝试运行 John Norstad 提出的矩阵乘法示例。它在 hadoop 独立模式下运行良好,但在伪分布式模式下无法正常工作。我无法解决问题,所以请告诉我 hadoop 独立模式和伪分布式模式之间的主要区别,这有助于解决所述问题。谢谢

感谢,

WL

【问题讨论】:

  • 在伪分布式模式下会出现什么错误?
  • 它不会给出任何运行时错误,但在某些情况下矩阵乘法的答案是不正确的。

标签: hadoop mapreduce


【解决方案1】:

在独立模式下,所有东西(namenode、datanode、tasktracker、jobtracker)都在一台机器上的一个 JVM 中运行。在伪分布式模式下,一切都在自己的 JVM 中运行,但仍然在一台机器上。在客户端接口方面应该没有什么区别,但是如果在伪分布式模式下序列化要求更严格,我不会感到惊讶。

我对上面的推理是,在伪分布式模式下,所有东西都必须序列化才能在 JVM 之间传递数据。在独立模式下,并非所有内容都必须是可序列化的(因为所有内容都在一个 JVM 中,所以您有共享内存),但我不记得代码是否是为了利用这一事实而编写的,因为那不是Hadoop 的一个正常用例。

编辑:鉴于您没有看到错误,我认为这听起来像是 MapReduce 作业编码方式的问题。也许他依赖于 reducer 之间的共享内存之类的东西?如果是这样,那将在独立模式下工作,但不能在伪分布式模式(或真正的分布式模式,就此而言)。

【讨论】:

  • 因为我不是这个领域的专家。您能否建议我需要检查哪些因素表明它依赖于共享内存?
  • mapper 类、reducer 类或它们使用的任何自定义类中是否有静态变量?
  • 不,mapper 或 reducer 类中没有静态变量。但是是的,有一些全局变量被定义为静态,这些变量正在这些类中使用。
  • 这几乎肯定是问题所在。您可能需要重新处理作业以进行正确的分布式操作。
  • 但问题是有 4 种不同的乘法策略。其中 2 个工作正常,但 2 个不工作(即使对于某些值,这 2 个也可以工作)。如果静态变量是问题,那么它不应该一直是问题吗?如果我错了,请纠正我。
猜你喜欢
  • 2017-02-22
  • 2013-10-31
  • 1970-01-01
  • 2018-10-02
  • 2011-12-10
  • 2023-02-16
  • 1970-01-01
  • 2011-12-10
  • 2014-12-08
相关资源
最近更新 更多