0

我正在尝试使用 rmr2 在 hadoop 上运行 kmeans 集群的分布式实现(在伪分布式模式下使用 Hadoop 2.6.0-cdh5.4.2 的单机集群上)。只要数据文件大小(在 HDFS 上)很小(大约 1000 个数据点),它就可以正常工作。

但是当我将点数增加到 5000 点时,仍然非常小(数据文件的大小只有 ~1MB),它开始抛出如下错误:

container_1473314686409_0005_01_000006 运行超出物理内存限制。当前使用情况:已使用 1.5 GB 的 1 GB 物理内存;使用了 3.2 GB 的 2.1 GB 虚拟内存。杀死容器。

我已经从其他帖子中尝试过以下内容,但没有任何影响:

rmr.options(backend.parameters = 
  list(
    hadoop = 
      list(
        D = "mapred.map.memory.mb=2048",
        D = "mapred.reduce.memory.mb=2048",           
        D = "mapred.map.java.opts=-Xmx400M",
        D = "mapred.reduce.java.opts=-Xmx400M"
    )
   )

我的操作系统版本是:Linux quickstart.cloudera 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

首先我不明白为什么它需要> 1G内存来处理一个小文件。

其次,我想将实现扩展到巨大的数据集(至少几 GB)。我怎样才能做到这一点?

最后,我发现大多数(如果不是全部)R-hadoop 帖子都已经很老了,人们在 2014 年之后停止使用 R-hadoop 了吗?Spark-R 是更好的选择吗?

任何有关这些方面的帮助将不胜感激。

4

0 回答 0