2013-06-05 30 views
101

Đây là một câu hỏi ngây thơ nhưng tôi mới mẻ với mô hình NoSQL và không biết nhiều về nó. Vì vậy, nếu ai đó có thể giúp tôi hiểu rõ sự khác biệt giữa HBase và Hadoop hoặc nếu đưa ra một số gợi ý có thể giúp tôi hiểu sự khác biệt.Sự khác biệt giữa HBase và Hadoop/HDFS

Cho đến bây giờ, tôi đã thực hiện một số nghiên cứu và acc. theo hiểu biết của tôi, Hadoop cung cấp khuôn khổ để làm việc với dữ liệu thô (các tệp) trong HDFS và HBase là cơ sở dữ liệu trên Hadoop, cơ bản làm việc với dữ liệu có cấu trúc thay vì dữ liệu thô. Hbase cung cấp một lớp logic trên HDFS giống như SQL. Nó có đúng không?

Vui lòng sửa lỗi cho tôi.

Cảm ơn.

+7

Có lẽ tiêu đề câu hỏi phải là "Sự khác biệt giữa HBase và HDFS"? –

+0

Tại sao vậy? –

Trả lời

208

Hadoop về cơ bản là 2 thứ, một FS (Hệ thống tệp phân tán Hadoop) và khung tính toán (MapReduce). HDFS cho phép bạn lưu trữ một lượng lớn dữ liệu trong một phân phối (cung cấp truy cập đọc/ghi nhanh hơn) và dự phòng (cung cấp khả năng sẵn sàng tốt hơn). Và MapReduce cho phép bạn xử lý dữ liệu khổng lồ này theo cách phân phối và song song. Nhưng MapReduce không chỉ giới hạn ở HDFS. Là một FS, HDFS thiếu khả năng đọc/ghi ngẫu nhiên. Nó là tốt cho truy cập dữ liệu tuần tự. Và đây là nơi HBase đi vào hình ảnh. Đây là cơ sở dữ liệu NoSQL chạy trên cụm Hadoop của bạn và cung cấp cho bạn quyền truy cập đọc/ghi ngẫu nhiên trong thời gian thực vào dữ liệu của bạn.

Bạn có thể lưu trữ cả dữ liệu có cấu trúc và không có cấu trúc trong Hadoop và HBase. Cả hai đều cung cấp cho bạn nhiều cơ chế để truy cập dữ liệu, như trình bao và các API khác. Và, HBase lưu trữ dữ liệu dưới dạng cặp khóa/giá trị theo kiểu cột trong khi HDFS lưu trữ dữ liệu dưới dạng tệp phẳng. Một số tính năng nổi bật của cả hai hệ thống là:

Hadoop

  1. Tối ưu hóa cho streaming truy cập các tập tin lớn.
  2. Theo dõi hệ tư tưởng đọc nhiều lần.
  3. Không hỗ trợ đọc/ghi ngẫu nhiên. cặp

HBase

  1. Stores chìa khóa/giá trị trong thời trang cột (cột được đập cùng nhau như gia đình cột).
  2. Cung cấp quyền truy cập độ trễ thấp cho một lượng nhỏ dữ liệu từ trong một tập dữ liệu lớn.
  3. Cung cấp mô hình dữ liệu linh hoạt.

Hadoop phù hợp nhất cho công cụ xử lý hàng loạt ngoại tuyến trong khi HBase được sử dụng khi bạn có nhu cầu thời gian thực.

So sánh tương tự sẽ nằm giữa MySQL và Ext4.

+0

điều gì về việc sử dụng HBase làm datalake cho một lượng lớn dữ liệu (tệp nhỏ)? anh ta có thể quản lý nhiều dữ liệu như hdfs không? –

+0

@MehdiTAZI chắc chắn. HBase chạy trên đầu HDFS nên bạn không phải lo lắng về khả năng mở rộng. bạn chỉ cần đảm bảo rằng bạn đang sử dụng HBase vì nó nên được sử dụng để có được hiệu suất tối đa – Tariq

+0

về các vấn đề hoạt động? –

1

tham khảo: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop là một cái tên chung của nhiều hệ thống con: 1) HDFS. Một hệ thống tệp phân tán phân phối dữ liệu trên một cụm máy chăm sóc dự phòng, vv 2) Bản đồ Giảm. Một hệ thống quản lý công việc trên đầu trang của HDFS - để quản lý các công việc giảm bản đồ (và các loại khác) xử lý dữ liệu được lưu trữ trên HDFS.

Về cơ bản, nó có nghĩa là hệ thống ngoại tuyến - bạn lưu trữ dữ liệu trên HDFS và bạn có thể xử lý dữ liệu bằng cách chạy công việc.

HBase mặt khác trong cơ sở dữ liệu dựa trên cột. Nó sử dụng HDFS như là lưu trữ - sẽ lưu trữ \ redundency \ etc nhưng nó là "cửa hàng trực tuyến" - nghĩa là bạn có thể truy vấn nó cho hàng \ hàng vv và nhận giá trị ngay lập tức.

4

Hadoop sử dụng hệ thống tệp phân tán tức là HDFS để lưu trữ bigdata. Nhưng có một số Hạn chế nhất định của HDFS và Inorder để khắc phục những hạn chế này, cơ sở dữ liệu NoSQL như HBase, Cassandra và Mongodb.

Hadoop chỉ có thể thực hiện xử lý theo lô và dữ liệu sẽ chỉ được truy cập theo cách tuần tự. Điều đó có nghĩa là người ta phải tìm kiếm toàn bộ tập dữ liệu ngay cả đối với các công việc đơn giản nhất. Một tập dữ liệu khổng lồ khi xử lý kết quả trong một tập dữ liệu khổng lồ khác, cũng nên được xử lý tuần tự. Tại thời điểm này, một giải pháp mới là cần thiết để truy cập bất kỳ điểm dữ liệu nào trong một đơn vị thời gian (truy cập ngẫu nhiên).

Giống như tất cả các hệ thống tệp khác, HDFS cung cấp cho chúng tôi dung lượng lưu trữ, nhưng có khả năng chịu lỗi với thông lượng cao và giảm nguy cơ mất dữ liệu (vì sao chép) .Nhưng là Hệ thống tệp, HDFS thiếu quyền truy cập đọc và ghi ngẫu nhiên . Đây là nơi HBase đi vào hình ảnh. Đó là một cửa hàng dữ liệu lớn, có thể mở rộng, được phân phối, được mô hình hóa sau BigTable của Google. Cassandra có phần tương tự như hbase.

16

dự án Apache Hadoop bao gồm bốn mô-đun chính

  1. Hadoop Common: Các tiện ích phổ biến mà hỗ trợ các module Hadoop khác.
  2. Hệ thống tệp phân tán Hadoop (HDFS ™): Hệ thống tệp được phân phối cung cấp quyền truy cập thông lượng cao vào dữ liệu ứng dụng.
  3. Hadoop YARN: Một khung công tác lập kế hoạch công việc và quản lý tài nguyên cụm.
  4. Hadoop MapReduce: A YARN hệ thống dựa trên để xử lý song song các tập dữ liệu lớn.

HBase là cơ sở dữ liệu có thể mở rộng, được phân phối hỗ trợ lưu trữ dữ liệu có cấu trúc cho các bảng lớn. Cũng giống như Bigtable thúc đẩy lưu trữ dữ liệu được phân phối do Hệ thống tệp của Google cung cấp, Apache HBase cung cấp khả năng giống như Bigtable trên Hadoop và HDFS.

Khi sử dụng HBase:

  1. Nếu ứng dụng của bạn có một sơ đồ biến nơi mỗi hàng là hơi khác nhau
  2. Nếu bạn thấy rằng dữ liệu của bạn được lưu trữ trong bộ sưu tập, đó là tất cả keyed trên cùng một giá trị
  3. Nếu bạn cần truy cập đọc/ghi ngẫu nhiên, thời gian thực vào Dữ liệu lớn của bạn.
  4. Nếu bạn cần truy cập dựa vào dữ liệu quan trọng khi lưu trữ hoặc truy xuất.
  5. Nếu bạn có số lượng lớn dữ liệu với cụm Hadoop hiện

Nhưng HBase có một số hạn chế

  1. Nó không thể được sử dụng cho các ứng dụng giao dịch cổ điển hay thậm chí là phân tích quan hệ.
  2. Nó cũng không thay thế hoàn toàn cho HDFS khi thực hiện MapReduce hàng loạt lớn.
  3. Nó không nói SQL, có trình tối ưu hóa, hỗ trợ giao dịch ghi chép chéo hoặc tham gia.
  4. Nó không thể được sử dụng với các mẫu truy cập phức tạp (ví dụ như tham gia)

Tóm tắt:

Cân nhắc HBase khi bạn đang tải dữ liệu theo mã, tìm kiếm dữ liệu bằng phím (hoặc phạm vi), phân phát dữ liệu theo khóa, truy vấn dữ liệu theo khóa hoặc khi lưu trữ dữ liệu theo hàng không phù hợp với lược đồ.

Hãy xem xét Do and Don't of HBase từ blog cloudera.

+0

điều gì về việc sử dụng HBase như datalake cho một lượng lớn dữ liệu (tệp nhỏ)? anh ta có thể quản lý nhiều dữ liệu như hdfs không? –

+1

Nếu bạn đang sản xuất nhiều tệp nhỏ, thì tùy thuộc vào mẫu truy cập, một loại lưu trữ khác có thể phù hợp hơn.Hãy lưu trữ dữ liệu trong MapFiles (được lập chỉ mục SequenceFiles) và là lựa chọn tốt nếu bạn cần thực hiện kiểu MapReduce phân tích trực tuyến với thỉnh thoảng tìm kiếm ngẫu nhiên –

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