2012-06-04 33 views

Trả lời

20

Chúng được gọi cho mỗi tác vụ, vì vậy nếu bạn có 20 người lập bản đồ đang chạy, thiết lập/dọn dẹp sẽ được gọi cho từng công việc.

One gotcha là phương pháp chạy chuẩn cho cả Mapper và Reducer không bắt ngoại lệ xung quanh các phương pháp giảm/giảm bản đồ - vì vậy nếu ngoại lệ được ném vào các phương pháp này, phương pháp dọn dẹp sẽ không được gọi.

+4

Người ta luôn có thể gọi phương thức dọn dẹp trong điều khoản bắt của một ngoại lệ trong bản đồ/giảm. Tuy nhiên, điều này đòi hỏi phải phân tích thông minh các ngoại lệ có thể xảy ra và đưa vào các mệnh đề 'try/catch' để bắt chúng. – abhinavkulkarni

4

Một cách làm rõ là hữu ích. Các phương pháp thiết lập/dọn dẹp được sử dụng để khởi tạo và làm sạch ở cấp nhiệm vụ. Trong một nhiệm vụ, khởi tạo đầu tiên xảy ra với một cuộc gọi đến phương thức setup() và sau đó tất cả các cuộc gọi đến hàm map() [hoặc reduce()] sẽ được thực hiện. Sau đó, một cuộc gọi khác sẽ được thực hiện cho phương thức cleanup() trước khi thoát khỏi nhiệm vụ.

2

Nó được gọi là nhiệm vụ Mapper hoặc Tác vụ giảm tốc. Đây là mã hadoop.

public void run(Context context) throws IOException, InterruptedException { 
    setup(context); 
    try { 
     while (context.nextKey()) { 
     reduce(context.getCurrentKey(), context.getValues(), context); 
     } 
    } finally { 
     cleanup(context); 
    } 
    } 
1

Theo mapreduce documentation thiết lập và dọn dẹp được gọi là cho mỗi Mapper, nhiệm vụ giảm tốc.

1

trên bộ giảm tốc bạn có thể thực hiện công việc. JobNsetReduceTasks (1); và theo cách đó, việc thiết lập và dọn dẹp bộ giảm tốc sẽ chỉ chạy một lần.

Các vấn đề liên quan