2015-03-12 35 views
8

YARN'de bellek ayarlamayı denemek istiyorum. Bu yüzden, yarn-site.xml ve mapred-site.xml öğelerindeki bazı parametreleri yapılandırmayı deneyeceğim. Bu arada hadoop 2.6.0 kullanıyorum. Ancak, bir mapreduce iş yaptığımda bir hata alıyorum. Şöyle diyor:Neden YARN java yığın bellek alanı hatası?

15/03/12 10:57:23 INFO mapreduce.Job: Task Id : 
attempt_1426132548565_0001_m_000002_0, Status : FAILED 
Error: Java heap space 
Container killed by the ApplicationMaster. 
Container killed on request. Exit code is 143 
Container exited with a non-zero exit code 143 

Ben doğru, ben map.java.opts vermek yapılandırmış ve küçük boyutlu = 64 MB reduce.java.opts düşünüyorum. Map.java.opts dosyasını değiştirmek ve map.-site.xml üzerindeki map.java.opts komutunu değiştirmek gibi bazı parametreleri yapılandırmaya çalışıyorum ve hala bu hatayı alıyorum. Sanırım YARN belleğinin nasıl çalıştığını gerçekten anlamadım. Bunun için tek düğümlü bilgisayar üzerinde çalışıyorum.

+0

64MB çok azdır yeniden başlatın benzer bir sorun vardı. Başlangıç ​​noktası olarak 1 GB'yi deneyin. –

+0

Aklınızda, bu hatayı neden? Bilgisayar belleğim çok küçük olduğu için 64 MB'yi ayarlıyorum. 64 MB, java işlemi için doğru, yarn.app.mapreduce.am.command-opts veya yarn.app.mapreduce.am.resource.mb dosyasından daha küçük olmalıdır. Lütfen bana bir açıklama verin ... Çok teşekkürler –

cevap

8

İplik, kaynak yönetimini işler ve ayrıca MapReduce ve gerçek zamanlı iş yüklerini kullanabilen toplu iş yükleri sunar.

İplik kabı seviyesinde ve ayrıca eşleyici ve redüktör seviyesinde ayarlanabilen hafıza ayarları vardır. Yarn konteyner büyüklüğünde artışlarla bellek istenir. Eşleyici ve düşürücü görevler bir kapsayıcının içinde çalışır.

mapreduce.map.memory.mb ve mapreduce.reduce.memory.mb

yukarıdaki parametreler harita azaltmak görev ve bu görevi ile abone hafıza bu sınırı aşarsa, üst bellek sınırını tanımlamak karşılık gelen konteyner öldürecek.

Bu parametreler, eşleştirmeye atanabilecek maksimum bellek miktarını belirler ve sırasıyla görevleri azaltır. Bir örneğe bakalım: Mapper, mapreduce.map.memory.mb yapılandırma parametresinde tanımlanan bellek için bir üst sınır tarafından bağlanır.

Ancak yarn.scheduler.minimum-ayırma-mb değeri mapreduce.map.memory.mb bu değerden daha büyük ise, o zaman yarn.scheduler.minimum ayırma-MB saygı duyulur ve bu boyuttaki kaplar verilir.

Bu parametrenin dikkatle ayarlanması ve doğru ayarlanmadığında, bu durumun kötü performansa veya OutOfMemory hatalarına neden olması gerekir. mapreduce.map.memory tanımlanan

mapreduce.reduce.java.opts ve mapreduce.map.java.opts

Bu özellik değeri/harita için üst sınır daha az görev azaltmak gerekiyor Harita/azaltma görevi için bellek ayırma içine sığması gerektiği gibi .mb/mapreduce.reduce.memory.mb.

+0

Yardımlarınız için çok teşekkürler Mr Gaurav.Bu arada, tekrar sormak istiyorum, harita görev numarasına göre harita kabı sayısı mı? Mesela harita görev numarası 7, yani 5 harita kabım varsa? Harita kapım bittikten sonra harita kapsayıcım yeni bir kap oluşturmadan başka bir harita görevi yaparsa bu doğru mu? Çok teşekkürler .... –

+0

Merhaba Kenny, soruyu almadım. Bunu detaylandırır mısın? –

+0

Merhaba kenny, lütfen bu bağlantıyı kullanarak size yardımcı olabilir. http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/ –

2

@Gaurav'un ​​söylediği doğrudur. Ben yarn-site.xml mülklerin aşağıda below.Include gibi bazı şey denedik ve VM

<property> 
<name>yarn.nodemanager.vmem-check-enabled</name> 
<value>false</value> 
<description>Whether virtual memory limits will be enforced for containers</description> 
</property> 

<property> 
<name>yarn.nodemanager.vmem-pmem-ratio</name> 
<value>4</value> 
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description> 
</property> 
İlgili konular