Welcome to Huynh's Collections. We hope you enjoy your visit.


You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free.


Join our community!


If you're already a member please log in to your account to access all of our features:

Username:   Password:
Add Reply
Các Scheduler trong Hadoop
Topic Started: Jan 9 2014, 08:34 PM (205 Views)
Huynhnb8x
Member Avatar
Th1nk
[ *  *  * ]
Mô h́nh mapreduce đă cố định như vậy, khó có thể cải tiến hơn nữa. Do đó nhiều nghiên cứu tập trung vào scheduler. Scheduler hiệu quả không những giúp tận dụng được tài nguyên của hệ thống mà c̣n có thể giảm thiểu số lượng task cần backup (do chạy quá chậm), do đó rút ngắn thời gian tính toán. Với xu thế sử dụng cluster ngày càng phổ biến, và các node trong cluster có tài nguyên (cpu, gpu, ram, network…)không đồng nhất , việc có một scheduler hiệu quả càng trở nên quan trọng. Một scheduler tốt chắc chắn biết căn cứ vào tài nguyên hiện có của từng node để phân phát các nhiệm vụ phù hợp.

Bản thân Hadoop được kèm theo 3 loại scheduler: FIFO, Fair scheduler và Capacity scheduler. Trong đó, FIFO là loại được mặc định, không cần phải thiết lập ǵ thêm cả, cứ xong job này làm đến job khác. C̣n với Fair scheduler[1], các job sẽ chia nhau lượng tài nguyên, do đó CPU time là xấp xỉ nhau. Job nào tính ít th́ hoàn thành trước, thay v́ phải đợi job khác xong mới đến lượt ḿnh như cách mà FIFO làm. Trong cách này, mỗi user được phân cho một bể (pool) tài nguyên, các job mà user submit sẽ dùng chung lượng tài nguyên này. Capacity scheduler[2] khác với Fair scheduler ở chỗ nó không phân phát tài nguyên theo user mà theo queue. Khi có một TaskTracker trống, capacity scheduler sẽ chọn ra một queue có tỉ lệ tài nguyên trống nhiều nhất để lấy nhiệm vụ từ một job trong queue đó mà thực hiện, tất nhiên scheduler cũng phải đảm bảo TaskTracker đó có đủ memory.

Một điều dễ thấy là 3 loại scheduler trên đều nhắm vào việc schedule các job. Thực tế là việc tính toán nhanh hay chậm c̣n dựa vào tốc độ thực thi của các task, việc backup các task cũng ảnh hưởng không nhỏ đến thời gian tính toán chung. Hadoop mặc định, một task nào đó (map task hoặc reduce task) nếu chậm hơn 20% tiến độ trung b́nh của các task cùng loại th́ sẽ được backup. Điều này nghe có vẻ hợp lí trong các cluster đồng nhất (cấu h́nh các node tương đối đồng đều), tuy nhiên trong các cluster không đồng nhất, mà trong đó khả năng tính toán của các node rất khác nhau, điều này sẽ dẫn đến backup một lượng lớn task.

LATE[3](Longest Approximate Time to End)phần nào giải quyết vấn đề trên. Cách schedule này ước lượng thời gian mà mỗi task cần thêm để hoàn thành, task nào cần nhiều thời gian nhất (hoàn thành sau nhất) sẽ được xem xét backup. Tuy nhiên, tài liệu [4] chỉ ra rằng LATE đôi lúc không t́m đúng task cần backup, đồng thời nêu ra phương pháp mới SAMR hiệu quả hơn. SAMR (Self-adaptive MapReduce) dựa vào việc phân tích các thông tin của quá tŕnh chạy được lưu trong các node để t́m ra đúng task nào cần phải backup. Phương pháp này có xét đến tốc độ khác nhau của các giai đoạn trong mapreduce nên phần nào chính xác hơn LATE.

Tài liệu [5], [6] lại đề cập đến một khía cạnh khác của schedule: ứng dụng mapreduce trong các cluster không đồng nhất có chứa GPU. Ước ǵ có trong tay code của các vị này, tôi sẽ không phải làm công việc đau đầu mà thầy giao nữa. :D

Tham khảo

[1] http://hadoop.apache.org/common/docs/r0.20.2/fair_scheduler.html

[2] http://hadoop.apache.org/common/docs/r0.20.2/capacity_scheduler.html
Knowledge crawling
Offline Profile Quote Post Goto Top
 
« Previous Topic · Tài liệu sưu tầm · Next Topic »
Add Reply


Theme by James... of the ZBTZ and themeszetaboards.com