2009-12-16 23 views
9

Gần đây tôi đã có một cuộc chơi xung quanh với Hadoop và rất ấn tượng với việc lên lịch, quản lý và báo cáo về các công việc MapReduce. Nó xuất hiện để làm cho việc phân phối và thực hiện các công việc mới khá liền mạch, cho phép các nhà phát triển tập trung vào việc thực hiện công việc của họ.Phân bổ công việc lên lịch, quản lý và báo cáo

Tôi tự hỏi liệu có bất kỳ điều gì tồn tại trong miền Java để thực thi phân tán các công việc không dễ dàng được thể hiện dưới dạng vấn đề MapReduce không? Ví dụ:

  • Công việc yêu cầu phối hợp nhiệm vụ và đồng bộ hóa. Ví dụ, họ có thể liên quan đến việc thực hiện tuần tự các nhiệm vụ nhưng nó là khả thi để thực hiện một số nhiệm vụ kiêm nhiệm:

       .-- B --. 
         .--A --|  |--. 
         |  '-- C --' | 
    Start --|     |-- Done 
         |     | 
         '--D -------------' 
    
  • CPU nhiệm vụ chuyên sâu mà bạn muốn phân phối nhưng không cung cấp bất kỳ kết quả đầu ra để giảm - hình ảnh chuyển đổi/thay đổi kích thước chẳng hạn.

Vì vậy, có một khung công tác/nền tảng Java cung cấp môi trường tính toán phân tán như vậy? Hay là loại điều này có thể chấp nhận/đạt được bằng cách sử dụng Hadoop - và nếu có thì có bất kỳ mẫu/nguyên tắc nào cho các loại công việc này không?

Trả lời

3

Tôi đã tìm thấy Spring BatchSpring Batch Integration xuất hiện để giải quyết nhiều yêu cầu của tôi. Tôi sẽ cho bạn biết làm thế nào tôi nhận được trên.

+0

Spring Batch giúp song song công việc trên một cụm như Hadoop như thế nào? – Marquez

0

Tôi đoán bạn đang tìm kiếm một công cụ quy trình làm việc cho các tác vụ chuyên sâu của CPU (cũng biết "quy trình làm việc khoa học", ví dụ: http://www.extreme.indiana.edu/swf-survey). Nhưng tôi không chắc bạn phân phối như thế nào. Thông thường tất cả các công cụ dòng công việc đều có một "điểm lỗi duy nhất".

0

Tôi tin rằng có một số vấn đề có thể được thể hiện dưới dạng vấn đề giảm bản đồ.

Đối với các sự cố mà bạn không thể sửa đổi để phù hợp với cấu trúc, bạn có thể xem thiết lập của riêng mình bằng cách sử dụng Java ExecutorService. Nhưng nó sẽ bị giới hạn trong một JVM và nó sẽ ở mức khá thấp. Nó sẽ cho phép dễ dàng phối hợp và đồng bộ hóa tuy nhiên.

2

Hãy xem Quartz. Tôi nghĩ rằng nó hỗ trợ các công cụ như quản lý công việc từ xa và phân cụm một số máy để chạy công việc.

+0

+1 khuôn khổ tuyệt vời – JamesC

0

ProActive Scheduler dường như phù hợp với yêu cầu của bạn, đặc biệt là quy trình công việc phức tạp mà bạn đã đề cập với phối hợp nhiệm vụ. Đây là nguồn mở và dựa trên Java. Bạn có thể sử dụng nó để chạy bất cứ điều gì, tác vụ Hadoop, kịch bản, mã Java, ...

Disclaimer: Tôi làm việc cho company đằng sau nó

0

Hãy thử Redisson khuôn khổ. Nó cung cấp api dễ dàng để thực hiện và lên lịch các nhiệm vụ java.util.concurrent.Callablejava.lang.Runnable. Đây là tài liệu về phân phối Executor serviceScheduler service

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