gpt4 book ai didi

hadoop - 通过 DistributedCache 读取本地文件时出现 OutofMemoryError

转载 作者:可可西里 更新时间:2023-11-01 14:20:05 24 4
gpt4 key购买 nike

2012 年 11 月 21 日更新:

通过将属性 mapred.child.java.opts 设置为 -Xmx512m 解决了问题。在此之前,我在 core-site.xml 中将 HADOOP_HEAPSIZE 设置为 2000,但这没有帮助。我仍然不明白为什么该程序可以在本地运行但不能分布式运行。感谢您的所有回答。

我正在使用 Hadoop 1.0.3。该集群由三台机器组成,它们都运行 Ubuntu Linux 12.04 LTS。其中两台机器有 12 GB 的 RAM,第三台有 4 GB。我正在通过 DistributedCache 读取一个大约 40 MB 的本地文件。我的程序在本地环境(本地/独立模式)中完美运行。但是,当我在 Hadoop 集群(完全分布式模式)中执行它时,我得到一个“OutOfMemoryError:Java 堆空间”,以及相同的 40 MB 文件。我不明白为什么会这样,因为文件不是那么大。这是代码:

    public static class MapClass extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> {
// ...
private HashMap<String, String> urlTrad = new HashMap<String, String>();
// ...
@Override
public void configure(JobConf job) {
Path[] urlsFiles = new Path[0];
BufferedReader fis;

try {
urlsFiles = DistributedCache.getLocalCacheFiles(job);
fis = new BufferedReader(new FileReader(
urlsFiles[0].toString()));
String pattern;
while ((pattern = fis.readLine()) != null) {
String[] parts = pattern.split("\t");
urlTrad.put(parts[0], parts[1]);
}
fis.close();

} catch (IOException ioe) {
System.err
.println("Caught exception while parsing the cached file '"
+ urlsFiles[0]
+ "' : "
+ StringUtils.stringifyException(ioe));
}
}
// ...

如有任何帮助,我们将不胜感激,在此先致谢。

最佳答案

通过将属性 mapred.child.java.opts 设置为 -Xmx512m 解决了问题。在此之前,我在 core-site.xml 中将 HADOOP_HEAPSIZE 设置为 2000,但这没有帮助。我仍然不明白为什么该程序可以在本地运行,但不能分布式运行。

关于hadoop - 通过 DistributedCache 读取本地文件时出现 OutofMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458349/

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