Tại sao sử dụng HBase
một lựa chọn tốt hơn so với sử dụng Cassandra
với Hadoop
?Tại sao HBase là lựa chọn tốt hơn Cassandra với Hadoop?
Có ai vui lòng giải thích chi tiết về điều này không?
Cảm ơn
Tại sao sử dụng HBase
một lựa chọn tốt hơn so với sử dụng Cassandra
với Hadoop
?Tại sao HBase là lựa chọn tốt hơn Cassandra với Hadoop?
Có ai vui lòng giải thích chi tiết về điều này không?
Cảm ơn
Tôi không nghĩ là tốt hơn so với những người khác, nó không chỉ là một hay cách khác. Đây là những hệ thống rất khác nhau, mỗi hệ thống đều có điểm mạnh và điểm yếu, vì vậy nó thực sự phụ thuộc vào trường hợp sử dụng của bạn. Họ chắc chắn có thể được sử dụng để bổ sung cho nhau trong cùng một cơ sở hạ tầng.
Để giải thích sự khác biệt tốt hơn, tôi muốn mượn một bức ảnh từ Cassandra: the Definitive Guide, nơi chúng đi qua định lý CAP. Những gì họ nói về cơ bản cho bất kỳ hệ thống phân phối nào, bạn phải tìm sự cân bằng giữa tính nhất quán, tính khả dụng và dung sai phân vùng và bạn chỉ có thể thỏa mãn 2 thuộc tính này. Từ đó bạn có thể thấy rằng:
Khi nói đến Hadoop, HBase được xây dựng trên đầu trang của HDFS, mà làm cho nó khá thuận tiện để sử dụng nếu bạn đã có một chồng Hadoop. Nó cũng được hỗ trợ bởi Cloudera, một bản phân phối doanh nghiệp chuẩn cho Hadoop.
Nhưng Cassandra cũng tích hợp nhiều hơn với Hadoop, cụ thể là Datastax Brisk đang trở nên phổ biến. Bây giờ bạn cũng có thể tự động truyền dữ liệu từ đầu ra của một công việc Hadoop vào một cụm Cassandra bằng cách sử dụng một số định dạng đầu ra do Cassandra cung cấp (ví dụ: BulkOutputFormat
), chúng ta không còn là điểm mà Cassandra chỉ là một dự án độc lập.
Theo kinh nghiệm của tôi, tôi đã phát hiện ra rằng Cassandra là tuyệt vời cho ngẫu nhiên đọc, và không quá nhiều cho quét
Để đưa một chút màu sắc cho bức tranh, tôi đã sử dụng cả hai tại công việc của tôi trong cùng một cơ sở hạ tầng, và HBase có một mục đích rất khác với Cassandra. Tôi đã sử dụng Cassandra chủ yếu cho thời gian thực tra cứu rất nhanh, trong khi tôi đã sử dụng HBase nhiều hơn cho các công việc hàng loạt ETL nặng với yêu cầu độ trễ thấp hơn.
Đây là câu hỏi thực sự xứng đáng với một bài đăng trên blog, vì vậy thay vì tiếp tục, tôi muốn chỉ cho bạn an article tổng hợp nhiều điểm khác biệt giữa 2 hệ thống. Điểm mấu chốt là, không có IMHO giải pháp vượt trội, và bạn thực sự nên suy nghĩ về các trường hợp sử dụng của bạn để xem hệ thống nào phù hợp hơn.
Chúng tôi phải so sánh ưu điểm & chống lại cả hai cơ sở dữ liệu và đưa ra quyết định bảo vệ tùy thuộc vào yêu cầu kinh doanh.
Cassandra
Ưu điểm:
Nhược điểm:
HBase
Ưu điểm:
Nhược điểm:
Có một cái nhìn tại article 1, article 2 và điều này presentation để biết thêm chi tiết.
Làm thế nào MySql có thể có sẵn trong biểu đồ của bạn? Tính khả dụng được xác định như thế nào? Nó không có ý nghĩa với tôi, tôi nghĩ rằng bạn phải lựa chọn giữa C hoặc A, không phải bất kỳ 2. http://codahale.com/you-cant-sacrifice-partition-tolerance/ – user1944408
@ user1944408 Tất nhiên trong mọi hệ thống có một cảm giác thỏa hiệp, điều này đơn giản là minh họa cho các phụ thuộc trượt. Bạn không thể nhận được 100% của một tài sản trong khi giữ lại 100% tài sản khác, bạn phải thực hiện một số thỏa thuận. Bài viết của bạn đưa ra giả định về dung sai phân vùng, vì vậy tất nhiên bạn không thể có cả tính nhất quán và tính khả dụng với giả định này. Như được lấy từ cùng một cuốn sách, các hệ thống trên dòng CA có thể là các cam kết 2 pha cho các giao dịch phân tán, do đó hệ thống sẽ chặn khi một phân vùng mạng xảy ra. –
Điều đó có nghĩa là chúng không có sẵn khi phân vùng xảy ra, phải không? Nhưng điều đó cũng tương tự với HBase vì vậy nó có nghĩa là HBase là CA. Tôi nghĩ rằng các cơ sở dữ liệu có thể là CP hoặc AP nhưng không phải là CA. Thuộc tính nào của cơ sở dữ liệu CA không được chứa trong cơ sở dữ liệu CP? Bạn có thể cho tôi một ví dụ? Nếu một phân vùng xảy ra sự khác nhau giữa HBase và MySql bị phân mảnh là gì? – user1944408