2011-09-03 22 views
6

Trong trình ánh xạ của tôi, tôi muốn gọi phần mềm bên ngoài được cài đặt trên nút công nhân bên ngoài HDFS. Điều này có thể không? Cách tốt nhất để làm việc này là gì?Chạy Hadoop MapReduce, có thể gọi các tệp thi hành bên ngoài HDFS

Tôi hiểu rằng điều này có thể mất một số lợi thế/khả năng mở rộng của MapReduce, nhưng tôi muốn tương tác cả trong HDFS và gọi các mã phần mềm được biên dịch/cài đặt bên trong trình ánh xạ của tôi để xử lý một số dữ liệu.

Trả lời

5

Người lập bản đồ (và bộ giảm tốc) giống như bất kỳ quy trình nào khác trên hộp, miễn là người dùng TaskTracker có quyền chạy tệp thực thi, không có vấn đề gì xảy ra. Có một số cách để gọi các quá trình bên ngoài, nhưng vì chúng ta đã có trong Java, ProcessBuilder có vẻ là một nơi hợp lý để bắt đầu.

EDIT: Chỉ cần thấy rằng Hadoop có một lớp một cách rõ ràng cho mục đích này: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/util/Shell.html

+0

Chỉ cần thêm: Shell là gói có thể nhìn thấy, bạn không thể sử dụng chúng mà không cần gói trong gói. –

+0

Lớp Shell trong java có gọi quá trình trên nút ngoài HDFS không? – Joris

+0

@chris thanks - hoạt động! bạn có biết cách đặt quyền người dùng TaskTracker không? – Joris

0

này chắc chắn là doable. Bạn có thể tìm thấy nó tốt nhất để làm việc với Hadoop Streaming. Như đã nói trên trang web đó:

Phát trực tiếp Hadoop là một tiện ích đi kèm với bản phân phối Hadoop. Tiện ích này cho phép bạn tạo và chạy các công việc bản đồ/giảm bớt với bất kỳ tập tin thực thi hoặc tập lệnh nào làm người lập bản đồ và/hoặc bộ giảm tốc.

Tôi có xu hướng bắt đầu với mã bên ngoài bên trong luồng của Hadoop. Tùy thuộc vào ngôn ngữ của bạn, có nhiều ví dụ hay về cách sử dụng nó trong Streaming; một khi bạn nhận được bên trong ngôn ngữ của bạn lựa chọn, bạn thường có thể ống dữ liệu ra một chương trình khác, nếu muốn. Tôi đã có nhiều lớp chương trình bằng các ngôn ngữ khác nhau chơi độc đáo mà không cần thêm nỗ lực nào nếu tôi đã chạy nó trên một hộp Linux bình thường, ngoài việc chỉ nhận lớp ngoài làm việc với Hadoop Streaming.

+0

Liên kết của bạn bị hỏng –

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