2010-04-29 25 views
14

Ai đó có thể giải thích cách MapReduce hoạt động với Cassandra .6? Tôi đã đọc qua ví dụ đếm từ, nhưng tôi không hoàn toàn theo dõi những gì đang xảy ra ở đầu Cassandra so với kết thúc "khách hàng".Làm thế nào để sử dụng Bản đồ của Cassandra Giảm với hoặc w/o Lợn?

https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

Ví dụ, giả sử tôi đang sử dụng Python và Pycassa, thế nào tôi sẽ được tải trong một bản đồ mới giảm chức năng, và sau đó gọi nó? Chức năng giảm bản đồ của tôi có phải là java được cài đặt trên máy chủ cassandra không? Nếu vậy, làm thế nào để tôi gọi nó từ Pycassa?

Ngoài ra còn có đề cập đến Pig làm cho tất cả điều này dễ dàng hơn, nhưng tôi là một Hadoo noob hoàn chỉnh, vì vậy mà không thực sự giúp đỡ.

Câu trả lời của bạn có thể sử dụng Tiết kiệm hoặc bất cứ điều gì, tôi vừa đề cập Pycassa để biểu thị phía máy khách. Tôi chỉ cố gắng để hiểu sự khác biệt giữa những gì chạy trong cụm Cassandra so với máy chủ thực tế làm cho các yêu cầu.

Trả lời

10

Từ những gì tôi đã nghe (và từ here), cách nhà phát triển viết chương trình MapReduce sử dụng Cassandra làm nguồn dữ liệu như sau. Bạn viết một chương trình MapReduce thông thường (ví dụ bạn liên kết là cho phiên bản thuần Java) và các lọ hiện đang có sẵn cung cấp một CustomInputFormat cho phép nguồn đầu vào là Cassandra (thay vì mặc định, là Hadoop).

Nếu bạn đang sử dụng Pycassa, tôi muốn nói rằng bạn không may mắn cho đến khi (1) người duy trì dự án đó thêm hỗ trợ cho MapReduce hoặc (2) bạn kết hợp một số hàm Python với nhau để viết một MapReduce của Java và chạy nó. Sau này chắc chắn là một chút của một hack nhưng sẽ giúp bạn có được và đi.

+1

Vì vậy, các nút Cassandra không làm bản đồ giảm, bất cứ nơi nào Java của bạn đang chạy là? – UltimateBrent

+0

Có, bộ công việc Hadoop chạy các công việc m/r. – jbellis

+1

vì vậy không phải là điểm của bản đồ giảm mà nó được phân phối? Nếu nó không chạy trên các nút cassandra, thì vấn đề là gì? – UltimateBrent

1

Chiến thắng bằng cách sử dụng InputFormat trực tiếp từ cassandra là nó truyền dữ liệu hiệu quả, một chiến thắng rất lớn. Mỗi phân chia đầu vào bao gồm một loạt các thẻ và cuộn ra khỏi đĩa ở băng thông đầy đủ của nó: không tìm kiếm, không truy vấn phức tạp. Tôi không nghĩ rằng nó biết về địa phương - để có mỗi tasktracker thích chia tách đầu vào từ một quá trình cassandra trên cùng một nút.

Bạn có thể thử sử dụng Pig với phương pháp STREAM làm bản hack cho đến khi có thêm hỗ trợ phát trực tuyến Hadoop trực tiếp.

1

Nó biết về địa phương; Các Cassandra InputFormat ghi đè getLocations() để bảo tồn dữ liệu địa phương

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