Tôi biết rằng có những câu hỏi tương tự như này, chẳng hạn như:Làm rõ trường hợp sử dụng cho Hadoop so với RabbitMQ + Cần tây
- https://stackoverflow.com/questions/8232194/pros-and-cons-of-celery-vs-disco-vs-hadoop-vs-other-distributed-computing-packag
- Differentiate celery, kombu, PyAMQP and RabbitMQ/ironMQ
nhưng tôi đang yêu cầu này bởi vì tôi đang tìm kiếm một sự khác biệt đặc biệt hơn được hỗ trợ bởi một vài ví dụ về trường hợp sử dụng.
Vì vậy, tôi là một người dùng python ai muốn làm chương trình hoặc/cả:
- Are quá lớn để
- Đi quá lâu để
làm trên một máy đơn và xử lý chúng trên nhiều máy. Tôi đã quen thuộc với gói đa xử lý (một máy) trong python, và tôi viết mã kiểu mapreduce ngay bây giờ. Tôi biết rằng chức năng của tôi, ví dụ, dễ dàng song song.
Trong hỏi thông thường của tôi thông minh CS lời khuyên-givers, tôi đã phrased câu hỏi của tôi là:
"Tôi muốn có một công việc, chia nó thành một loạt các nhiệm vụ nhỏ được thực hiện đồng thời trên một loạt các máy móc, sau đó các kết quả đó sẽ được tổng hợp và xử lý theo một số chức năng khác, có thể là giảm hoặc có thể là hướng dẫn để thêm vào cơ sở dữ liệu vào một cơ sở dữ liệu chẳng hạn. "
Theo phân tích này trong trường hợp sử dụng của tôi, tôi nghĩ rằng tôi cũng có thể sử dụng Hadoop hoặc một bộ công nhân Celery + nhà môi giới RabbitMQ. Tuy nhiên, khi tôi hỏi những người đưa ra nhà hiền triết, họ trả lời tôi như thể tôi hoàn toàn điên rồ khi nhìn Hadoop và Celery như những giải pháp có thể so sánh được. Tôi đã đọc một chút về Hadoop, và cũng về Celery --- Tôi nghĩ rằng tôi có một nắm bắt khá tốt về những gì cả hai làm --- những gì tôi dường như không hiểu là:
- Tại sao họ được coi là riêng biệt, quá khác biệt?
- Cho rằng chúng dường như được nhận như những công nghệ hoàn toàn khác nhau --- theo cách nào? Các trường hợp sử dụng phân biệt trường hợp nào với nhau hoặc tốt hơn cho trường hợp khác?
- Vấn đề gì có thể được giải quyết với cả hai trường hợp, và khu vực nào sẽ đặc biệt ngu ngốc khi sử dụng cái này hay cái kia?
- Có cách nào tốt hơn, đơn giản hơn để có được chức năng Pool.map() đa xử lý giống như nhiều máy không? Hãy tưởng tượng vấn đề của tôi không bị hạn chế bởi dung lượng lưu trữ, mà bởi CPU và RAM cần thiết để tính toán, do đó không có vấn đề gì trong việc có quá ít không gian để giữ kết quả trả về từ người lao động. (ví dụ, tôi đang làm một cái gì đó giống như mô phỏng nơi tôi cần tạo ra nhiều thứ trên các máy nhỏ hơn bằng một giá trị từ cơ sở dữ liệu, nhưng chúng được giảm trước khi chúng trở về máy/cơ sở dữ liệu nguồn.)
Tôi hiểu Hadoop là tiêu chuẩn dữ liệu lớn, nhưng Celery cũng được hỗ trợ tốt; Tôi đánh giá cao rằng nó không phải là java (các python API streaming đã sử dụng cho hadoop nhìn không thoải mái với tôi), vì vậy tôi muốn được nghiêng để sử dụng tùy chọn Celery.
Tôi đang điều tra điều này và tôi tin rằng bạn nói đúng và điều này cực kỳ hữu ích. ZeroMQ là khá tuyệt vời cho đến nay. Đây là một nơi xốp kỳ lạ giữa máy tính phân tán và định tuyến thông điệp thích hợp, lập trình mạng. Vẫn cố gắng sắp xếp nó ra. – Mittenchops
Tôi yêu ZeroMQ. Cảm ơn! – Mittenchops
@Mittenchops Vui mừng vì đã thắng bạn. Phải mất một thời gian để đi qua các rào cản ban đầu, nhưng cũng có giá trị nó. – RickyA