hadoop - hadoop在本地和分布式模式下静态变量的行为是否不同

标签 hadoop mapreduce

假设我有一个静态变量分配给我的映射器中的类变量,静态变量的值取决于作业,因此它与在该作业的作业跟踪器节点中执行的一组输入拆分相同因此我可以在我的 Mapper(在 Job Tracker 节点中运行的 JVM)中将作业特定变量直接分配为静态变量。

对于一些不同的作业,这些值会改变,因为它是一个不同的作业,并且它自己的作业有不同的类路径变量,但我相信它不会影响前面提到的作业,因为它们在不同的 JVM 中运行(Jobtracker) .

现在如果我在本地模式下尝试这个,上面的不同作业将在同一个 JVM 中运行,因此当这个不同的作业将尝试覆盖我的前作业设置的作业特定类变量时,它会导致问题为了我以前的工作。

所以我们可以说相同代码在本地和分布式模式下的行为并不总是相同的。

我设置的类变量只是一些资源级别和分布式缓存值。

我知道用例不好,但只是想知道当涉及到静态变量时是否会发生这种情况。

谢谢。

最佳答案

出于您提到的相同原因,不鼓励使用静态变量。根据 Hadoop 运行的模式,行为肯定会有所不同。如果 static 只是一个资源名称,而您只是在阅读它,那么用法就可以了。但是如果尝试修改,它将影响独立模式。另外,如您所知,standalone 和 psuedo 仅适用于初学者和学习者。用例不应该决定我们的学习:)快乐学习。

关于hadoop - hadoop在本地和分布式模式下静态变量的行为是否不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31674652/

相关文章:

java - 从 java 杀死一个 Oozie 工作流

hadoop - 当调用Apache Crunch管道在两个不同的源上读取两次时会发生什么?

java - 设置带有输入拆分的映射器的Hadoop数量不起作用

hadoop - map 简化和RDBMS

java - 在 Map Reduce 作业 Hadoop 中使用文件中的数据作为 Hash-Map

java - 使用版本 0.98.0-hadoop2 写入 HBase 表

java - Hive - 运行 Java 代码时的依赖关系

java - 无法在YARN群集(Hadoop 2.5.2)上运行Apache Giraph

hadoop - MapReduce 洗牌/排序方法

hadoop - 为什么导出的 HBase 表比原始表大 4 倍?