Hadoop 클러스터 (0.20.203)에서 높은 메모리 작업을 실행하려고합니다. 일부 메모리 제한을 적용하기 위해 mapred-site.xml을 수정했습니다.hadoop을 사용하여 메모리 제한 지정
<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");
감속기는 ID 감속기를 수행하기 때문에 메모리가 거의 필요하지 않습니다.
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)
}
}
}
그러나 감속기는 여전히 많은 메모리를 사용하고 있습니다. 감속기에 매퍼보다 다른 JVM 인수를 제공 할 수 있습니까? Hadoop은 감속기를 죽이고 3960MB의 메모리를 사용한다고 주장합니다! 그리고 감속기는 결국 실패하게됩니다. 이것이 어떻게 가능한지?
TaskTree [pid=10282,tipID=attempt_201111041418_0005_r_000000_0] is running beyond memory-limits.
Current usage : 4152717312bytes.
Limit : 1073741824bytes.
Killing task.
업데이트 : 맵퍼로 cat
및 감속기 등 uniq
및 -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.
업데이트 : 메모리 사용의 구성 형식을 변경하는 original JIRA 특히 자바 사용자가 래싱을 방지하기 위해 물리적 메모리에 주로 관심이 있음을 언급하고있다. 나는 이것이 내가 원하는 바라고 생각한다. 부적절한 물리적 메모리를 사용할 수 있다면 노드가 매퍼를 위로 올리는 것을 원하지 않는다. 그러나 이러한 옵션은 모두 관리하기 어려운 가상 메모리 제약 조건으로 구현 된 것 같습니다.
궁금한 점 - mapred.child.java.opts/-Xmx 및 mapred.job.map.memory.mb/mapred.job.reduce.memory.mb를 사용하여 최대 메모리를 설정하는 것과는 어떤 차이가 있습니까? SO (http://goo.gl/aIBLr)에서 검색어를 제기했지만 응답이 없습니다. –