- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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/
我可以使用 DistributedCache 访问单个文件,但无法访问存档。在主要方法中,我将存档添加为 DistributedCache.addCacheArchive(new Path("/sto
在 Hadoop 作业中,我正在映射多个 XML 文件并为每个元素过滤 ID (from -tags) .因为我想将作业限制在一组特定的 ID 中,所以我读入了一个大文件(2.7 GB 中大约有 2.
DistributedCache 的文档状态: Its efficiency stems from the fact that the files are only copied once per j
当我运行 hadoop 代码添加第三个 jar 时,就像下面的代码: public static void addTmpJar(String jarPath, JobConf conf) throws
我正在使用 hadoop DistributedCache,但我遇到了一些麻烦。我的 hadoop 处于伪分布式模式。 from here we can see in pseudo-distribut
使用较新的 Hadoop API 从 DistributedCache 读取文件的好方法是什么?我已将文件放在 DistributedCache 中,在我的驱动程序代码中包含以下行: Distribu
我正在尝试在 AWS 上运行 KMeans,但在尝试从 DistributedCache 读取更新的集群质心时遇到了以下异常: java.io.IOException: The distributed
我有一个奇怪的问题,DistributedCache 似乎更改了我的文件的名称,它使用原始名称作为父文件夹并将文件添加为子文件夹。 即文件夹\文件名.ext 变成文件夹\文件名.ext\文件名.ext
Hadoop的DistributedCache文档似乎没有充分描述如何使用分布式缓存。这是给出的示例: // Setting up the cache for the application 1.
与 Apache MRUnit在集群上运行之前,我能够在本地对我的 MapReduce 程序进行单元测试。 我的程序需要读取 DistributedCache所以我将 DistributedCache
当您需要将您的 mapper/reducer 经常使用的少量数据放入 distributedCache 时,DistributedCache 似乎会派上用场。但在某些情况下,您想要放入映射器的数据会非
我正在尝试重现 MapReduce 设计模式 一书中的Bloom Filtering 示例。 在下文中,我将仅展示感兴趣的代码: public static class BloomFilteringM
我有 2 个节点集群 (v1.04),主节点和从节点。在 master 上,在 Tool.run() 中,我们使用 addCacheFile() 将两个文件添加到 DistributedCache。文
2012 年 11 月 21 日更新: 通过将属性 mapred.child.java.opts 设置为 -Xmx512m 解决了问题。在此之前,我在 core-site.xml 中将 HADOOP_
我正在寻找类似于Spark中Hadoop的分布式缓存的功能。我需要一个相对较小的数据文件(具有一些索引值)存在于所有节点中以便进行一些计算。有什么方法可以在 Spark 中实现这一点吗? 到目前为止,
我试图摆脱一些NoClassDefFoundError由于一些 jars运行时找不到。所以我输入了我的hdfs系统一些库,我打电话,我把这个 String lib = "/path/to/lib";
(标题应该是sharded 以反射(reflect) Hadoops shards 其跨多个文件的输出) 我将多个 Hadoop 作业链接在一起。其中一项早期作业生成的输出比其他作业小几个数量级,因此
是否有关于是否使用分布式缓存分发文件的指南? 我有一个大小为 86746785 的文件(我使用 hadoop dfs -dus - 不知道这是 bytes 还是什么)。分发这个文件是个好主意吗? 最佳
我正在尝试将 TreeSet 存储在 DistributedCache 上,以供 Hadoop map-reduce 作业使用。到目前为止,我有以下用于将文件从 HDFS 添加到 Distribute
我正在使用以 yarn 模式运行的 hadoop cdf4.7。 hdfs://test1:9100/user/tagdict_builder_output/part-00000 中有一个 MapFi
我是一名优秀的程序员,十分优秀!