Sự khác biệt giữa HBase và Hadoop / HDFS


130

Đây là loại câu hỏi ngây thơ nhưng tôi chưa quen với mô hình NoQuery 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.

Cho đến bây giờ, tôi đã làm một số nghiên cứu và acc. Theo hiểu biết của tôi, Hadoop cung cấp khung để làm việc với khối dữ liệu thô (tệp) trong HDFS và HBase là công cụ cơ sở dữ liệu trên Hadoop, về cơ bản hoạt động với dữ liệu có cấu trúc thay vì khối 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?

Xin vui lòng sửa cho tôi.

Cảm ơn.


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

Câu trả lời:


248

Hadoop về cơ bản là 3 thứ, một FS (Hệ thống tệp phân tán Hadoop), khung tính toán (MapReduce) và cầu nối quản lý (Yet Another Resource đàm phán). HDFS cho phép bạn lưu trữ lượng dữ liệu khổng lồ theo cách phân tán (cung cấp truy cập đọc / ghi nhanh hơn) và dự phòng (cung cấp tính khả dụ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 tán 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à lúc HBase xuất hiện. Đây là cơ sở dữ liệu NoQuery chạy trên cụm Hadoop hàng đầu của bạn và cung cấp cho bạn quyền truy cập đọc / ghi thời gian thực ngẫu nhiên 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ấ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ư hệ vỏ 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 để truy cập trực tuyến các tập tin lớn.
  2. Theo sau viết một lần đọc nhiều ý thức hệ.
  3. Không hỗ trợ đọc / ghi ngẫu nhiên.

HBase

  1. Lưu trữ các cặp khóa / giá trị theo kiểu cột (các cột được ghép lại với nhau như các họ 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ác 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.

Một so sánh tương tự sẽ là giữa MySQL và Ext4.


Còn việc sử dụng hbase làm datalake cho một lượng dữ liệu rất lớn (các tệp nhỏ) thì sao? anh ta có thể quản lý nhiều dữ liệu như hdfs không?
Mehdi TAZI

@MehdiTAZI chắc chắn. HBase chạy trên HDFS, vì vậy đừng 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

Còn vấn đề hoạt động thì sao?
Mehdi TAZI

Tôi sẽ không nói rằng HBase là cơn ác mộng của nhóm, nhưng nó có một vài lĩnh vực vẫn còn một số phạm vi cải thiện và cộng đồng đang làm việc rất chăm chỉ để khắc phục điều đó. Nhưng điều đó đúng với mọi phần mềm. Không có vấn đề bằng chứng công cụ / công nghệ IMHO. Nếu nó phù hợp với yêu cầu của bạn thì bạn chắc chắn nên thử. Đây là một công cụ mê cung để xử lý các nhu cầu đọc / ghi thời gian thực ngẫu nhiên của bạn.
Tariq

22

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

  1. Hadoop Common : Các tiện ích phổ biến hỗ trợ các mô-đun Hadoop khác.
  2. Hệ thống tệp phân tán Hadoop (HDFS ™) : Một hệ thống tệp phân tán 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 để lập lịch công việc và quản lý tài nguyên cụm.
  4. Hadoop MapReduce : Một hệ thống dựa trên YARN để xử lý song song các tập dữ liệu lớn.

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

Khi nào nên sử dụng HBase:

  1. Nếu ứng dụng của bạn có một lược đồ biến trong đó mỗi hàng 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 các bộ sưu tập, thì tất cả đều được khóa 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 chính dựa trên dữ liệu khi lưu trữ hoặc truy xuất.
  5. Nếu bạn có lượng dữ liệu khổng lồ với cụm Hadoop hiện có

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

Tóm lược:

Hãy xem xét HBase khi bạn đang tải dữ liệu theo khóa, tìm kiếm dữ liệu theo khóa (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 Do và and Don't of HBase từ blog cloudera .


Còn việc sử dụng hbase làm datalake cho một lượng dữ liệu rất lớn (các tệp nhỏ) thì sao? anh ta có thể quản lý nhiều dữ liệu như hdfs không?
Mehdi TAZI

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

4

Hadoop sử dụng hệ thống tệp phân tán, ví dụ 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ác cơ sở dữ liệu NoQuery như HBase, Cassandra và Mongodb đã ra đời.

Hadoop chỉ có thể thực hiện xử lý hàng loạt và dữ liệu sẽ chỉ được truy cập theo cách liên tiếp. Đ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ả những công việc đơn giản nhất. Tập dữ liệu khổng lồ khi được xử lý kết quả trong một tập dữ liệu khổng lồ khác, cũng cầ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 vào 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 lưu trữ, nhưng theo cách chịu lỗi với thông lượng cao và rủi ro mất dữ liệu thấp hơn (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à kho lưu trữ dữ liệu lớn, có thể mở rộng, có thể mở rộng, được mô phỏng theo BigTable của Google. Cassandra có phần giống với hbase.


4

Cả HBase và HDFS trong một hình ảnh

Cả HBase và HDFS trong một hình ảnh

Ghi chú:

Kiểm tra các con quỷ HDFS (Được tô sáng màu xanh lá cây) như DataNode (Máy chủ khu vực được phối hợp) và NameNode trong cụm có cả HBase và Hadoop HDFS

HDFS là một hệ thống tệp phân tán rất phù hợp để lưu trữ các tệp lớn. mà không cung cấp tra cứu hồ sơ cá nhân nhanh chóng trong các tập tin.

HBase , mặt khác, được xây dựng dựa trên HDFS và cung cấp tra cứu bản ghi nhanh (và cập nhật) cho các bảng lớn. Điều này đôi khi có thể là một điểm nhầm lẫn khái niệm. HBase đặt nội bộ dữ liệu của bạn vào "StoreFiles" được lập chỉ mục tồn tại trên HDFS để tra cứu tốc độ cao.

Làm thế nào để điều này trông như thế nào?

Chà, ở cấp độ cơ sở hạ tầng, mỗi cỗ máy cứu hộ trong cụm có những con quỷ đi theo

  • Máy chủ khu vực - HBase
  • Nút dữ liệu - HDFS

Máy nô lệ

Làm thế nào là nhanh chóng với tra cứu?

HBase đạt được tra cứu nhanh trên HDFS (đôi khi cũng là các hệ thống tệp phân tán khác) làm bộ lưu trữ cơ bản, sử dụng mô hình dữ liệu sau

  • Bàn

    • Một bảng HBase bao gồm nhiều hàng.
  • Hàng

    • Một hàng trong HBase bao gồm một khóa hàng và một hoặc nhiều cột với các giá trị được liên kết với chúng. Các hàng được sắp xếp theo thứ tự abc theo phím hàng khi chúng được lưu trữ. Vì lý do này, thiết kế của phím hàng là rất quan trọng. Mục tiêu là lưu trữ dữ liệu theo cách các hàng liên quan ở gần nhau. Một mẫu khóa hàng phổ biến là một tên miền trang web. Nếu các khóa hàng của bạn là tên miền, có lẽ bạn nên lưu trữ chúng theo chiều ngược lại (org.apache.www, org.apache.mail, org.apache.jira). Theo cách này, tất cả các tên miền Apache nằm gần nhau trong bảng, thay vì được trải ra dựa trên chữ cái đầu tiên của tên miền phụ.
  • Cột

    • Một cột trong HBase bao gồm họ cột và vòng loại cột, được phân định bằng ký tự: (dấu hai chấm).
  • Cột gia đình

    • Các họ cột tập trung vật lý một tập hợp các cột và giá trị của chúng, thường vì lý do hiệu suất. Mỗi họ cột có một tập các thuộc tính lưu trữ, chẳng hạn như liệu các giá trị của nó có được lưu trong bộ nhớ hay không, cách dữ liệu của nó được nén hoặc các khóa hàng của nó được mã hóa và các khóa khác. Mỗi hàng trong một bảng có cùng họ cột, mặc dù một hàng nhất định có thể không lưu trữ bất cứ thứ gì trong một họ cột đã cho.
  • Vòng loại cột

    • Một vòng loại cột được thêm vào một họ cột để cung cấp chỉ mục cho một phần dữ liệu nhất định. Với một nội dung họ cột, một vòng loại cột có thể là nội dung: html và một nội dung khác có thể là nội dung: pdf. Mặc dù các họ cột được cố định khi tạo bảng, vòng loại cột có thể thay đổi và có thể khác nhau rất nhiều giữa các hàng.
  • Tế bào

    • Một ô là sự kết hợp của hàng, họ cột và vòng loại cột và chứa một giá trị và dấu thời gian, đại diện cho phiên bản của giá trị.
  • Dấu thời gian

    • Dấu thời gian được viết cùng với mỗi giá trị và là định danh cho một phiên bản nhất định của một giá trị. Theo mặc định, dấu thời gian biểu thị thời gian trên Máy chủ Vùng khi dữ liệu được ghi, nhưng bạn có thể chỉ định một giá trị dấu thời gian khác khi bạn đưa dữ liệu vào ô.

Luồng khách đọc yêu cầu:

Luồng yêu cầu của khách hàng

Bảng meta trong hình trên là gì?

bảng meta

Sau tất cả thông tin, luồng đọc HBase dành cho tra cứu chạm vào các thực thể này

  1. Đầu tiên, trình quét tìm các ô Row trong Bộ đệm ẩn - bộ đệm đọc. Các giá trị chính đã đọc gần đây được lưu trong bộ nhớ cache ở đây và Ít nhất được sử dụng gần đây được gỡ bỏ khi cần bộ nhớ.
  2. Tiếp theo, trình quét tìm trong MemStore , bộ đệm ghi trong bộ nhớ chứa lần ghi gần đây nhất.
  3. Nếu máy quét không tìm thấy tất cả các ô hàng trong MemStore và Block Cache, thì HBase sẽ sử dụng các chỉ mục Block Cache và bộ lọc nở để tải HFiles vào bộ nhớ, có thể chứa các ô hàng đích.

nguồn và nhiều thông tin hơn:

  1. Mô hình dữ liệu HBase
  2. Kiến trúc sư HBase

1

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

Hadoop là tên chung cho một số 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 xử lý dự phòng, v.v. 2) Bản đồ thu nhỏ. Một hệ thống quản lý công việc trên HDFS - để quản lý các công việc thu nhỏ 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à một 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ý nó bằng cách chạy các công việc.

Mặt khác, HBase trong cơ sở dữ liệu dựa trên cột. Nó sử dụng HDFS làm bộ lưu trữ - chăm sóc sao lưu \ dự phòng \ vv nhưng 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 cụ thể, v.v. và nhận giá trị ngay lập tức.


0

HDFS là một hệ thống tệp phân tán dựa trên Java, cho phép bạn lưu trữ dữ liệu lớn trên nhiều nút trong một cụm Hadoop. Trong đó HBase là một cơ sở dữ liệu NoQuery (tương tự như NTFS và MySQL).

Vì cả HDFS và HBase đều lưu trữ tất cả các loại dữ liệu như có cấu trúc, bán cấu trúc và không cấu trúc trong môi trường phân tán.

Sự khác biệt giữa HDFS & HBase

  • HBase cung cấp quyền truy cập độ trễ thấp vào một lượng nhỏ dữ liệu trong các tập dữ liệu lớn trong khi HDFS cung cấp các hoạt động có độ trễ cao.
  • HBase hỗ trợ đọc và ghi ngẫu nhiên trong khi HDFS hỗ trợ WORM (Viết một lần Đọc nhiều hoặc nhiều lần).
  • HDFS về cơ bản hoặc chủ yếu được truy cập thông qua các công việc MapReduce trong khi HBase được truy cập thông qua các lệnh shell, API Java, REST, Avro hoặc Thrift API.

HDFS lưu trữ các tập dữ liệu lớn trong môi trường phân tán và thúc đẩy xử lý hàng loạt trên dữ liệu đó.

Trong khi HBase lưu trữ dữ liệu theo cách định hướng theo cột trong đó mỗi cột được lưu trữ cùng nhau để việc đọc trở nên nhanh hơn thúc đẩy xử lý thời gian thực.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.