2013-04-24 15 views
15

Kilka miejsc mówi, że domyślne # reduktorów w zadaniu Hadoop to 1. Możesz użyć symbolu mapred.reduce.tasks, aby ręcznie ustawić liczbę reduktorów.W jaki sposób Hive wybiera liczbę reduktorów do pracy?

Kiedy uruchamiam zadanie Hive (na Amazon EMR, AMI 2.3.3), ma kilka reduktorów więcej niż jeden. Patrząc na ustawienia pracy, coś ustawiło mapred.reduce.tasks, domyślam się Hive. Jak wybiera ten numer?

Uwaga: oto kilka wiadomości podczas jazdy ula zadania, które powinny być wskazówką:

... 
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

Dobre pytanie. W szczególności, kiedy ula wybiera opcję "Ilość zadań redukcji określanych podczas kompilacji" i kiedy wybiera "oszacowane na podstawie rozmiaru danych wejściowych"? – ihadanny

+0

dodał, że w odpowiedzi poniżej –

Odpowiedz

16

Domyślnym 1 może na waniliowym Hadoop zainstalować. Hive nadpisuje to.

W ulu open source (i prawdopodobnie EMR)

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

This post mówi domyślny hive.exec.reducers.bytes.per.reducer jest 1G.

Możesz ograniczyć liczbę reduktorów wyprodukowanych przez tę heurystyczną przy użyciu hive.exec.reducers.max.

Jeśli dokładnie znasz liczbę reduktorów, które chcesz, możesz ustawić mapred.reduce.tasks, a to zastąpi wszystkie heurystyki. (Domyślnie jest to ustawione na -1, wskazując, że Hive powinien używać heurystyki.)

W niektórych przypadkach - powiedz "wybierz liczbę (1) z T" - Hive ustawi liczbę reduktorów na 1, niezależnie od rozmiar danych wejściowych. Są one nazywane "pełnymi agregatami" - i jeśli jedyną rzeczą, którą robi zapytanie, są pełne agregaty - wówczas kompilator wie, że dane z maperów zostaną zredukowane do niewielkiej ilości i nie ma sensu uruchamianie wielu reduktorów.

+0

Mimo że pełne agregaty zmniejszają ilość danych wyjściowych ze znacznej wartości, Większe reduktory mogą pomóc w zmniejszeniu czasu działania. Mamy do czynienia z problemem z Hive, który ma 1100 użytkowników map i tylko z jednym reduktorem. Zwykłe sortowanie zajmuje godziny. – dedunumax

+0

Link nie jest już poprawny. Dobrze publikować linki do Apache. –

Powiązane problemy