gpt4 book ai didi

java - Hadoop - 为特定节点的 Mapper 中的每个 map() 函数创建类的单个实例

转载 作者:可可西里 更新时间:2023-11-01 15:03:31 33 4
gpt4 key购买 nike

我在 java 中有一个类似这样的类用于 hadoop MapReduce

public Class MyClass {
public static MyClassMapper extends Mapper {
static SomeClass someClassObj = new SomeClass();

void map(Object Key, Text value, Context context) {
String someText = someClassObj.getSomeThing();
}
}
}

我只需要 someClassObj 的单个实例可用于 map() 函数每个节点。如何实现?

如果您需要有关此主题的更多详细信息,请随时询问。

谢谢!

最佳答案

mapreduce.tasktracker.map.tasks.maximum (defaulted to 2)控制由 TaskTracker 同时运行的 map task 的最大数量。将此值设置为 1。

启动的每个 map task 都是一个单独的 JVM。同时将 mapreduce.job.jvm.numtasks 设置为 -1 到 reuse the JVM .

以上设置将使所有 map task 在单个 JVM 中顺序运行。现在,必须将 SomeClass 设为 singleton class。 .

这不是最佳实践,因为可以并行运行的 map task 数量较少,因此无法有效利用节点。此外,对于 JVM 重用,任务之间没有隔离,因此如果有任何内存泄漏,它将一直持续到 jvm 崩溃。

关于java - Hadoop - 为特定节点的 Mapper 中的每个 map() 函数创建类的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7872830/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com