2013-04-24 11 views
15

Bazı yerler, Hadoop işindeki varsayılan redüktör sayısıdır. 1 redüktör sayısını manuel olarak ayarlamak için mapred.reduce.tasks simgesini kullanabilirsiniz.Hive bir iş için redüktör sayısını nasıl seçer?

Bir Kovan işini çalıştırdığımda (Amazon EMR, AMI 2.3.3'de), birden fazla redüktöre birden büyüktür. İş ayarlarına baktığımızda, bir şey mapred.reduce.tasks ayarladı, ben Hive'ı farz ediyorum. Bu numarayı nasıl seçer?

Not: Bir ipucu olması gereken bir kovan işi çalıştırırken burada bazı mesajlar şunlardır:

... 
Number of reduce tasks not specified. Estimated from input data size: 500 
In order to change the average load for a reducer (in bytes): 
    set hive.exec.reducers.bytes.per.reducer=<number> 
In order to limit the maximum number of reducers: 
    set hive.exec.reducers.max=<number> 
In order to set a constant number of reducers: 
    set mapred.reduce.tasks=<number> 
... 
+0

İyi soru. Özellikle, kovan ne zaman "derleme zamanında belirlenen azaltılmış görevlerin sayısı" nı yapmayı ve ne zaman girdi veri boyutundan tahmini yapılmasını seçmeyi seçer? – ihadanny

+0

, aşağıdaki cevabın –

cevap

16

belki vanilya Hadoop için 1 varsayılan yükleyin. Hive onu geçersiz kılar. açık kaynak kovanı (ve muhtemelen EMR)

# reducers = (# bytes of input to mappers) 
      /(hive.exec.reducers.bytes.per.reducer) 

This post yılında

varsayılan hive.exec.reducers.bytes.per.reducer 1G olduğunu söylüyor.

hive.exec.reducers.max'u kullanarak bu buluşsal yöntemle üretilen redüktör sayısını sınırlayabilirsiniz.

Tam olarak istediğiniz redüktör sayısını biliyorsanız, mapred.reduce.tasks'u ayarlayabilir ve bu tüm buluşsallıkları geçersiz kılar. (Varsayılan olarak, bu değer, Hive'un sezgilerini kullanması gerektiğini belirten -1 olarak ayarlanır.)

Bazı durumlarda - 'sayma (1)' den T'yi seçin - Hive, redüktör sayısını 1'e, giriş verilerinin büyüklüğü. Bunlara 'tam kapsamlı' denir - ve eğer sorgunun yaptığı tek şey tam yığınlarsa - derleyici, haritacıların verilerinin önemsiz bir miktara indirgeneceğini ve birden fazla redüktörün çalıştığı bir nokta olmadığını bilir.

+0

altında olduğunu gösterdi. Tam yığınlar, çıkış verisi miktarını önemli bir değerden düşürse de, daha fazla redüktör çalışma süresini azaltmaya yardımcı olabilir. 1100+ haritacıya ve yalnızca bir redüktöre sahip olan Hive ile ilgili bir sorunla karşı karşıyayız. Sıralamayı bitirmek saatler alır. – dedunumax

+0

Bağlantı daha geçerli değil. Apache bağlantıları göndermek için iyi. –