2013-04-24 24 views
15

Một số địa điểm cho biết số lần giảm số mặc định trong công việc Hadoop là 1. Bạn có thể sử dụng biểu tượng mapred.reduce.tasks để đặt số lượng bộ giảm tốc theo cách thủ công.Làm thế nào để Hive chọn số lượng bộ giảm tốc cho một công việc?

Khi tôi chạy công việc Hive (trên Amazon EMR, AMI 2.3.3), nó có một số bộ giảm số lớn hơn một. Nhìn vào các thiết lập công việc, một cái gì đó đã đặt mapred.reduce.tasks, tôi giả sử Hive. Làm thế nào để nó chọn số đó?

Lưu ý: đây là một số tin nhắn trong khi chạy một công việc Hive mà phải là một đầu mối:

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

Câu hỏi hay. Cụ thể, khi nào hive chọn để làm 'Số nhiệm vụ giảm được xác định tại thời gian biên dịch' và khi nào nó chọn làm' ước tính từ kích thước dữ liệu đầu vào'? – ihadanny

+0

thêm rằng trong câu trả lời dưới đây –

Trả lời

16

Giá trị mặc định của 1 người có thể cho một vani Hadoop cài đặt. Hive ghi đè nó.

Trong hive mã nguồn mở (và EMR khả năng)

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

This post nói hive.exec.reducers.bytes.per.reducer mặc định là 1G.

Bạn có thể giới hạn số lượng bộ giảm tốc do heuristic này sản xuất bằng cách sử dụng hive.exec.reducers.max.

Nếu bạn biết chính xác số lượng bộ giảm mà bạn muốn, bạn có thể đặt mapred.reduce.tasks và điều này sẽ ghi đè tất cả các chẩn đoán. (Theo mặc định, giá trị này được đặt thành -1, cho biết Hive nên sử dụng các chẩn đoán của nó.)

Trong một số trường hợp - nói 'select count (1) from T' - Hive sẽ đặt số lượng giảm xuống 1, không phân biệt kích thước của dữ liệu đầu vào. Chúng được gọi là 'tập hợp đầy đủ' - và nếu điều duy nhất mà truy vấn thực hiện là tập hợp đầy đủ - thì trình biên dịch biết rằng dữ liệu từ các trình lập bản đồ sẽ bị giảm xuống số lượng nhỏ và không có điểm nào chạy nhiều bộ giảm tốc.

+0

Mặc dù tổng hợp đầy đủ làm giảm số lượng dữ liệu đầu ra từ một giá trị đáng kể, nhiều bộ giảm tốc hơn có thể giúp giảm thời gian chạy. Chúng tôi đang đối mặt với vấn đề với Hive có hơn 1100 người vẽ bản đồ và chỉ với một bộ giảm tốc. Phải mất hàng giờ để hoàn thành sắp xếp. – dedunumax

+0

Liên kết không hợp lệ. Tốt để đăng liên kết Apache. –