2013-05-22 39 views
10

Tôi đang làm việc trên Hệ thống Máy tính Cụm Spark (Berkeley). Trong nghiên cứu của tôi, tôi đã học về một số hệ thống trong bộ nhớ khác như Redis, Memcachedb vv Sẽ thật tuyệt vời nếu ai đó có thể cho tôi so sánh giữa SPARK và REDIS (và MEMCACHEDB). Trong những trường hợp nào, Spark có lợi thế so với các hệ thống trong bộ nhớ khác?So sánh các hệ thống tính toán cụm trong bộ nhớ

Trả lời

30

Chúng hoàn toàn khác nhau.

Redis và memcachedb là các cửa hàng được phân phối. Redis là một hệ thống trong bộ nhớ tinh khiết với độ bền tùy chọn gồm các cấu trúc dữ liệu khác nhau. Memcachedb cung cấp một API memcached trên đầu trang của Berkeley-DB. Trong cả hai trường hợp, chúng có nhiều khả năng được sử dụng bởi các ứng dụng OLTP hoặc cuối cùng, cho phân tích thời gian thực đơn giản (tổng hợp dữ liệu trực tuyến).

Cả Redis và memcachedb đều thiếu cơ chế để lặp lại hiệu quả dữ liệu được lưu trữ song song. Bạn không thể dễ dàng quét và áp dụng một số xử lý cho dữ liệu được lưu trữ. Chúng không được thiết kế cho việc này. Ngoài ra, ngoại trừ bằng cách sử dụng sharding thủ công phía máy khách, chúng không thể được thu nhỏ trong một cụm (một thực thi cụm Redis đang diễn ra).

Spark là một hệ thống để tiến hành các công việc phân tích quy mô lớn (và đặc biệt là các công việc lặp lại) bằng cách cung cấp các bộ dữ liệu được phân phối trong bộ nhớ. Với Spark, bạn có thể triển khai thực hiện các bản đồ/giảm công việc lặp lại hiệu quả trên một cụm máy.

Redis và Spark đều dựa vào quản lý dữ liệu trong bộ nhớ. Nhưng Redis (và memcached) chơi trong cùng một ballpark như các cửa hàng OLTP NoSQL khác, trong khi Spark khá giống với hệ thống bản đồ/giảm Hadoop.

Redis hoạt động tốt với nhiều hoạt động lưu trữ/truy xuất nhanh với thông lượng cao với độ trễ dưới miligiây. Spark tỏa sáng tại triển khai các thuật toán lặp lại quy mô lớn cho việc học máy, phân tích biểu đồ, khai phá dữ liệu tương tác, v.v ... trên một lượng dữ liệu đáng kể.

Cập nhật: thêm câu hỏi về bão câu hỏi

là để so sánh Spark bão (xem bình luận dưới đây).

Spark vẫn dựa trên ý tưởng rằng, khi khối lượng dữ liệu hiện có là rất lớn, sẽ rẻ hơn để di chuyển quy trình sang dữ liệu, thay vì di chuyển dữ liệu đến quy trình. Mỗi nút lưu trữ (hoặc lưu trữ) tập dữ liệu của nó và các công việc được gửi đến các nút. Vì vậy, quá trình di chuyển đến dữ liệu. Nó rất giống với bản đồ/giảm Hadoop, ngoại trừ bộ nhớ lưu trữ được sử dụng tích cực để tránh I/O làm cho nó hiệu quả cho các thuật toán lặp (khi đầu ra của bước trước là đầu vào của bước tiếp theo). Shark chỉ là một công cụ truy vấn được xây dựng trên đầu trang của Spark (hỗ trợ các truy vấn phân tích đặc biệt).

Bạn có thể thấy Storm là kiến ​​trúc hoàn chỉnh đối diện với Spark. Storm là một công cụ phát trực tuyến phân tán. Mỗi nút thực hiện một quá trình cơ bản, và các mục dữ liệu chảy vào/ra một mạng các nút được kết nối với nhau (trái với Spark). Với Storm, việc di chuyển dữ liệu đến quy trình.

Cả hai khuôn khổ được sử dụng để song song tính toán lượng lớn dữ liệu.

Tuy nhiên, Storm có thể xử lý động nhiều mục dữ liệu nhỏ được tạo/thu thập (chẳng hạn như tính toán một số hàm tổng hợp hoặc phân tích theo thời gian thực trên luồng Twitter).

Spark áp dụng trên kho dữ liệu hiện có (như Hadoop) đã được nhập vào cụm Spark, cung cấp khả năng quét nhanh do quản lý trong bộ nhớ và giảm thiểu số I/O toàn cầu cho các thuật toán lặp lại.

+2

Còn Storm thì sao? Làm thế nào bạn có thể so sánh nó với Spark (hoặc Shark)? – void

+0

Xem thông tin cập nhật của tôi ... –

+0

Cảm ơn bạn đã cập nhật.Có thêm một câu hỏi nữa nếu bạn không bận tâm. Spark có công cụ 'Spark Streaming' để phân tích thời gian thực. Có thể so sánh với Storm (một công cụ phân tích thời gian thực khác) không? Có lợi thế nào cho nó không? – void