2012-03-25 16 views
11

Tôi chỉ tìm ra cách gửi công việc được xử lý trên máy trên cụm bằng cách sử dụng Condor. Vì chúng tôi có rất nhiều máy móc và không phải mỗi máy đó đều được cấu hình giống nhau, tôi đã tự hỏi:Làm thế nào để nói với Condor chỉ gửi công việc tới các máy trên cụm, có cài đặt "numpy" trên chúng?

Chỉ có thể nói cho condor gửi công việc của tôi (máy in python) đến máy, đã cài đặt chúng kể từ khi kịch bản của tôi phụ thuộc vào gói này?

Trả lời

-2

Bạn có cần không? Theo số condor manual:

Condor không yêu cầu tài khoản (đăng nhập) trên các máy mà tại đó nó hoạt động. Condor có thể thực hiện điều này vì công nghệ cuộc gọi hệ thống từ xa của nó, sẽ chặn các cuộc gọi thư viện cho các hoạt động như đọc hoặc ghi từ các tệp đĩa. Các cuộc gọi được truyền qua mạng sẽ được thực hiện trên máy nơi công việc đã được gửi.

Với tôi điều này ngụ ý rằng nếu máy gửi công việc đã được cài đặt gọn gàng, nó sẽ hoạt động.

+0

Cảm ơn câu trả lời của bạn. Thật không may trường hợp của tôi chứng tỏ khôn ngoan khác. Các công việc được gửi đến các máy khác nhau. Một số lần gửi kết quả trong một ImportError của một khối u. Tôi đã kiểm tra kỹ các máy đó và chúng không có phần nào được cài đặt. Vì vậy, condor dường như không ngăn chặn việc gửi một công việc đến một máy không đáp ứng các yêu cầu của công việc - trong trường hợp của tôi là một cài đặt đầy ắp. Có lẽ nó là trường hợp trong cài đặt của chúng tôi condor, mặc dù. Bản thân tôi đã không thiết lập hệ thống và đây là lần đầu tiên tôi làm việc với condor. :-) – Aufwind

+0

Thời gian để liên hệ với nhà phát triển condor. Hướng dẫn của họ không chính xác, hoặc Python được xử lý khác với Java. –

+0

Trích dẫn này từ hướng dẫn sử dụng nằm ngoài ngữ cảnh. Tính năng gọi hệ thống từ xa Condor chỉ khả dụng cho các công việc "vũ trụ chuẩn".Mặc dù ông không nói như vậy, OP phải sử dụng vũ trụ "vanilla" vì vũ trụ tiêu chuẩn áp đặt các ràng buộc ngăn cản các trình thông dịch như Python chạy dưới nó. – Pinko

7

Giống như bất kỳ thuộc tính máy nào khác, bạn chỉ cần quảng cáo thuộc tính máy trong lớp máy và sau đó yêu cầu công việc của bạn cần.

Để quảng cáo nó trong máy classad, bạn có thể mã hóa cứng nó vào tập tin cấu hình condor mỗi máy bằng cách thêm một cái gì đó như thế này:

has_numpy = True 
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY 

... hoặc tốt hơn nữa, bạn có thể nói Condor để tự động phát hiện nó khi chạy với tập lệnh và quảng cáo kết quả qua một số startd classad hook. Để làm điều đó, hãy lắp một has_numpy kịch bản đơn giản trên mỗi máy như vậy:

#!/usr/bin/env python 
try: 
    import numpy 
except ImportError: 
    print "has_numpy = False" 
else: 
    print "has_numpy = True" 

... và sau đó nói với Condor để chạy nó mỗi năm phút và dính vào các kết quả trong classad startd, bằng cách thêm vào sau vào tệp cấu hình của máy condor của máy:

HASNUMPY = /usr/libexec/condor/has_numpy 
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY 
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY) 
STARTD_CRON_HASNUMPY_PERIOD = 300 

... và sau đó cấu hình lại máy tính của bạn sẽ tự động phát hiện và báo cáo xem có cài đặt numpy hay không.

Sau đó, bạn chỉ cần thêm một yêu cầu tương ứng với công việc của bạn nộp hồ sơ, như vậy:

Requirements = (has_numpy == True) 

... và công việc của bạn sẽ chỉ chạy trên máy nơi NumPy được cài đặt.

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