İş başarısız mı, yoksa sunucunuz çöküyor mu? İşiniz düğümlerdeki OutOfMemmory nedeniyle başarısız oluyorsa, azami harita ve redüktör sayınızı seçebilirsiniz ve JVM her biri için bir tercihte bulunmaz. mapred.child.java.opts (varsayılan değer 200Xmx'dir), genellikle veri düğümlerine özgü donanımınıza bağlı olarak artırılmalıdır.
http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/
En görevleri Namenode kurulum veya geçersiz olduğu (ve son set) farklı donanım düzenlemelerine sahip olabilir veri düğümlerde olabilir. Maksimum görevler, hem eşleştiriciler hem de redüktörler için ayarlanır. Bunu hesaplamak için, işlemci (çekirdekler) ve sahip olduğunuz RAM miktarını ve ayrıca mapred.child.java.opts içinde ayarladığınız JVM max'ı (varsayılan değer 200) temel alır. Datanode ve Tasktracker'ın her biri 1GB'a ayarlanır, bu yüzden 8GB'lık bir makine için mapred.tasktracker.map.tasks.maximum, 7'ye ve mapred.tasktracker.reduce.tasks.maximum, mapred.child.java ile 7'ye ayarlanabilir. .opts -400Xmx'e ayarlandı (8 çekirdeği varsayar). Lütfen 1'den fazla çekirdekli 1 CPU'nuz varsa, bu görev maksimumları CPU'nuz tarafından yapılıyorsa, o zaman veri düğümünüz için yeni donanım almanın veya maske görevlerini 1'e ayarlamanın zamanı olduğunu unutmayın. 4 çekirdekli 1 CPU'nuz varsa haritayı 3'e ayarlamak ve 3'e küçültmek iyi olacaktır (daemon için 1 çekirdekten tasarruf etmek).
Varsayılan olarak, yalnızca bir redüktör vardır ve mapred.reduce.tasks öğelerini birden çok olacak şekilde yapılandırmanız gerekir. Bu değer, düğüm başına düşen maksimum görev sayısının .95 ile 1.75 katı arasında bir sayı olmalıdır. Bu nedenle, 3 veri düğümünüz varsa ve en fazla 7 görevini ayarladıysanız, bunu 25 ile 36 arasında yapılandırın.
Sunucunuz OutOfMemory sorunları ile çöküyorsa, HADOOP_HEAPSIZE yalnızca işlem yığını için gelir (burada değil). görev yürütme).
Son olarak, İşiniz o kadar uzun sürüyorsa, başka bir iyi yapılandırma eklemenizin olup olmadığını kontrol edebilirsiniz: mapred.compress.map.output. Bu değerin true olarak ayarlanması (özellikle sıkıştırmak için aktarma zamanı arasındaki denge), özellikle büyük veri kümeleriyle çalışırken redüktörlerin kopyalanmasını büyük ölçüde hızlandırır. Genellikle işler zaman alır, ancak işleri hızlandırmak için çimdikleme seçenekleri de vardır. = 8 ^)
HADOOP_HEAPSIZE'nın * başarısız olmasından ne gibi bir şey olduğunu düşünüyorsunuz? Senin deneyimlerinden olduğu gibi geliyor. Sadece verilerinizi/işinizi incelemenizden bilinen nedenlerden dolayı, durumunuz en azından bu büyüklükte bir yığın boyutu gerektirmektedir. İşinizi bu kadar büyük bir yığına ihtiyaç duymayacak şekilde yeniden düzenleyebilir misiniz? –
İşimi değiştirdim, bu yüzden bu kadar büyük bir yığın kullanmıyor, aynı zamanda bu sırada HADOOP_HEAPSIZE değiştirdim. Ve ben bu kargaşanın gerçek bir sonucunu görmüyorum, demek istediğim: Neden yığın daha küçük ayarla: miktar_of_my_RAM/number_of_mappers_or_reducers? – wlk