簡體   English   中英

使用hadoop指定內存限制

[英]Specifying memory limits with hadoop

我正在嘗試在Hadoop集群上運行高內存作業(0.20.203)。 我修改了mapred-site.xml以強制執行一些內存限制。

  <property>
    <name>mapred.cluster.max.map.memory.mb</name>
    <value>4096</value>
  </property>
  <property>
    <name>mapred.cluster.max.reduce.memory.mb</name>
    <value>4096</value>
  </property>
  <property>
    <name>mapred.cluster.map.memory.mb</name>
    <value>2048</value>
  </property>
  <property>
    <name>mapred.cluster.reduce.memory.mb</name>
    <value>2048</value>
  </property>

在我的工作中,我正在指定我需要多少內存。 不幸的是,即使我使用-Xmx2g運行我的進程(作為控制台應用程序,這個作用將運行得很好)我需要為我的映射器請求更多的內存(作為一個子問題,為什么這個?)或者它被殺了。

val conf = new Configuration()
conf.set("mapred.child.java.opts", "-Xms256m -Xmx2g -XX:+UseSerialGC");
conf.set("mapred.job.map.memory.mb", "4096");
conf.set("mapred.job.reduce.memory.mb", "1024");

由於我正在執行身份縮減器,因此減速器幾乎不需要任何內存。

  class IdentityReducer[K, V] extends Reducer[K, V, K, V] {
    override def reduce(key: K,
        values: java.lang.Iterable[V],
        context:Reducer[K,V,K,V]#Context) {
      for (v <- values) {
        context write (key, v)
      }
    }
  }

但是,reducer仍然使用大量內存。 是否有可能為reducer提供與mapper不同的JVM參數? Hadoop殺死了減速器並聲稱它正在使用3960 MB的內存! 減速器最終失敗了。 這怎么可能?

TaskTree [pid=10282,tipID=attempt_201111041418_0005_r_000000_0] is running beyond memory-limits.
Current usage : 4152717312bytes.
Limit : 1073741824bytes.
Killing task.

更新:即使我指定一個使用cat作為mapper和uniq作為reducer的流式作業和-Xms512M -Xmx1g -XX:+UseSerialGC我的任務需要超過2g的虛擬內存! 這似乎是最大堆大小的4倍。

TaskTree [pid=3101,tipID=attempt_201111041418_0112_m_000000_0] is running beyond memory-limits.
Current usage : 2186784768bytes.
Limit : 2147483648bytes.
Killing task.

更新:用於更改內存使用配置格式的原始JIRA特別提到Java用戶最感興趣的是物理內存以防止顛簸。 我認為這正是我想要的:如果物理內存不足,我不希望節點啟動映射器。 但是,這些選項似乎都是作為虛擬內存約束實現的,這些約束很難管理。

檢查你的ulimit。 來自Cloudera ,版本0.20.2,但類似的問題可能適用於更高版本:

...如果設置了mapred.child.ulimit,重要的是它必須是mapred.child.java.opts中設置的堆大小值的兩倍以上。 例如,如果設置1G堆,請將mapred.child.ulimit設置為2.5GB。 子進程現在保證至少分叉一次,而fork暫時需要兩倍的虛擬內存開銷。

以編程方式設置mapred.child.java.opts也可能“為時已晚”; 您可能想驗證它是否真的生效,如果沒有,請將它放在mapred-site.xml中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM