Thông tin chi tiết về Kiến trúc HBase



Bài đăng này thảo luận về HBase và hiểu biết sâu sắc về Kiến trúc HBase. Nó cũng thảo luận về các thành phần Hbase như Master, Region server và Zoo keeper & cách sử dụng chúng.

Trong bài đăng hôm nay, chúng ta hãy thảo luận về Kiến trúc HBase. Hãy cùng tìm hiểu những kiến ​​thức cơ bản về HBase trước khi tìm hiểu sâu hơn về kiến ​​trúc HBase.





HBase - Khái niệm cơ bản:

HBase là một cửa hàng mã nguồn mở, NoSQL, phân tán, không quan hệ, được tạo phiên bản, đa chiều, cửa hàng theo hướng cột đã được mô hình hóa theo Google BigTable chạy trên HDFS. '' NoSQL 'là một thuật ngữ rộng có nghĩa là cơ sở dữ liệu không phải là RDBMS hỗ trợ SQL làm ngôn ngữ truy cập chính. Nhưng có nhiều loại cơ sở dữ liệu NoSQL và Berkeley DB là một ví dụ điển hình về cơ sở dữ liệu NoSQL cục bộ, trong khi HBase rất nhiều một cơ sở dữ liệu phân tán.

hướng dẫn máy chủ sql cho người mới bắt đầu

HBase cung cấp tất cả các tính năng của Google BigTable. Nó bắt đầu như một dự án của Powerset để xử lý một lượng lớn dữ liệu để tìm kiếm ngôn ngữ tự nhiên. Nó được phát triển như một phần của dự án Apache’s Hadoop và chạy trên HDFS (Hệ thống tệp phân tán Hadoop). Nó cung cấp các cách có thể chịu lỗi để lưu trữ số lượng lớn dữ liệu thưa thớt. HBase thực sự là “Kho lưu trữ dữ liệu” hơn là “Cơ sở dữ liệu” vì nó thiếu nhiều tính năng có sẵn trong RDBMS, chẳng hạn như các cột đã nhập, chỉ mục phụ, trình kích hoạt và ngôn ngữ truy vấn nâng cao, v.v.



Trong cơ sở dữ liệu hướng theo cột, bảng dữ liệu được lưu trữ dưới dạng các phần của cột dữ liệu chứ không phải dưới dạng hàng dữ liệu. Mô hình dữ liệu của cơ sở dữ liệu hướng cột bao gồm Tên bảng, khóa hàng, họ cột, các cột, dấu thời gian. Trong khi tạo bảng trong HBase, các hàng sẽ được xác định duy nhất với sự trợ giúp của các phím hàng và dấu thời gian. Trong mô hình dữ liệu này, họ cột là tĩnh trong khi các cột là động. Bây giờ chúng ta hãy xem xét Kiến trúc HBase.

Khi nào thì sử dụng HBase?

HBase chỉ là một lựa chọn tốt khi có hàng trăm triệu hoặc hàng tỷ hàng. HBase cũng có thể được sử dụng ở những nơi khi xem xét chuyển từ RDBMS sang HBase như một thiết kế lại hoàn toàn thay vì một cổng. Nói cách khác, HBase không được tối ưu hóa cho các ứng dụng giao dịch cổ điển hoặc thậm chí là phân tích quan hệ. Nó cũng không thể thay thế hoàn toàn cho HDFS khi thực hiện MapReduce hàng loạt lớn. Vậy tại sao bạn nên sử dụng HBase ?? Nếu ứng dụng của bạn có một lược đồ thay đổi trong đó mỗi hàng hơi khác nhau, thì bạn nên xem HBase.

Kiến trúc HBase:

Hình sau giải thích rõ ràng về Kiến trúc HBase.



Thông tin chi tiết về Kiến trúc HBase

Trong HBase, có ba thành phần chính: Master, máy chủ khu vực và người giữ vườn thú . Các thành phần khác là Memstore, HFile và WAL.

Khi HBase chạy trên HDFS, nó sử dụng kiến ​​trúc Master-Slave trong đó HMaster sẽ là nút chính và Máy chủ Vùng là nút phụ. Khi máy khách gửi yêu cầu ghi, HMaster sẽ nhận yêu cầu đó và chuyển tiếp đến Máy chủ khu vực tương ứng.

Máy chủ Vùng:

Nó là một hệ thống hoạt động tương tự như một nút dữ liệu. Khi Máy chủ Vùng (RS) nhận được yêu cầu ghi, nó sẽ chuyển yêu cầu đến Vùng cụ thể. Mỗi Vùng lưu trữ tập hợp các hàng. Dữ liệu hàng có thể được phân tách trong nhiều họ cột (CF). Dữ liệu của CF cụ thể được lưu trữ trong HStore, bao gồm Memstore và một bộ HFiles.

Memstore làm gì?

Memstore theo dõi tất cả nhật ký cho các hoạt động đọc và ghi đã được thực hiện trong máy chủ khu vực cụ thể đó. Từ điều này, chúng ta có thể nói rằng nó hoạt động tương tự như một nút tên trong Hadoop. Memstore là bộ lưu trữ trong bộ nhớ, do đó Memstore sử dụng bộ nhớ trong bộ nhớ của mỗi nút dữ liệu để lưu trữ nhật ký. Khi các ngưỡng nhất định được đáp ứng, dữ liệu Memstore sẽ được chuyển vào HFile.

Mục đích chính của việc sử dụng Memstore là nhu cầu lưu trữ dữ liệu trên DFS được sắp xếp theo khóa hàng. Vì HDFS được thiết kế để đọc / ghi tuần tự, không được phép sửa đổi tệp, HBase không thể ghi dữ liệu vào đĩa một cách hiệu quả khi nó đang được nhận: dữ liệu đã ghi sẽ không được sắp xếp (khi đầu vào không được sắp xếp) có nghĩa là không được tối ưu hóa cho tương lai thu hồi. Để giải quyết vấn đề này, bộ đệm HBase nhận dữ liệu lần cuối trong bộ nhớ (trong Memstore), “sắp xếp” dữ liệu đó trước khi xả, sau đó ghi vào HDFS bằng cách ghi tuần tự nhanh. Do đó, HFile chứa danh sách các hàng đã được sắp xếp.

Mỗi lần xả Memstore xảy ra một HFile được tạo cho mỗi CF và việc xả thường xuyên có thể tạo ra hàng tấn HFiles. Vì trong quá trình đọc HBase sẽ phải xem nhiều HFiles nên tốc độ đọc có thể bị ảnh hưởng. Để tránh mở quá nhiều HFiles và tránh làm giảm hiệu suất đọc, quy trình nén HFiles được sử dụng. HBase sẽ định kỳ (khi các ngưỡng có thể định cấu hình được đáp ứng) kết hợp nhiều HFiles nhỏ hơn thành một tệp lớn. Rõ ràng, càng nhiều tệp do Memstore tạo ra, hệ thống càng làm việc nhiều hơn (tải thêm). Thêm vào đó, trong khi quá trình nén thường được thực hiện song song với việc phục vụ các yêu cầu khác và khi HBase không thể theo kịp với việc nén các HFiles (vâng, cũng có các ngưỡng được định cấu hình cho điều đó), nó sẽ chặn lại việc ghi trên RS. Giống như chúng tôi đã thảo luận ở trên, điều này rất không mong muốn.

Chúng tôi không thể chắc chắn rằng dữ liệu sẽ ổn định xuyên suốt trong Memstore. Giả sử rằng một nút dữ liệu cụ thể bị lỗi. Sau đó, dữ liệu nằm trên bộ nhớ của nút dữ liệu đó sẽ bị mất.

Để khắc phục vấn đề này, khi yêu cầu đến từ chủ, nó cũng được viết cho WAL. WAL không là gì ngoài Viết nhật ký phía trước nằm trên HDFS, một bộ nhớ vĩnh viễn. Bây giờ chúng ta có thể đảm bảo rằng ngay cả khi nút dữ liệu không hoạt động, dữ liệu sẽ không bị mất, tức là. chúng tôi có bản sao của tất cả các hành động mà bạn phải làm trong WAL. Khi nút dữ liệu hoạt động, nó sẽ thực hiện lại tất cả các hoạt động. Sau khi hoàn tất hoạt động, mọi thứ sẽ được xóa khỏi Memstore và WAL và được viết bằng HFile để đảm bảo rằng chúng ta không hết bộ nhớ.

Chúng ta hãy lấy một ví dụ đơn giản rằng tôi muốn thêm hàng 10 thì yêu cầu ghi đó xuất hiện, nó nói rằng nó cung cấp tất cả dữ liệu meta cho Memstore và WAL. Khi hàng cụ thể đó được ghi vào HFile, mọi thứ trong Memstore và WAL sẽ được xóa.

Người giữ vườn thú:

HBase được tích hợp với Zookeeper. Khi tôi khởi động HBase, phiên bản Zoo thủ môn cũng được bắt đầu. Lý do là người giữ Zoo giúp chúng tôi theo dõi tất cả các máy chủ khu vực có mặt cho HBase. Zookeeper theo dõi có bao nhiêu máy chủ khu vực, máy chủ khu vực nào đang giữ từ nút dữ liệu nào đến nút dữ liệu nào. Nó theo dõi các tập dữ liệu nhỏ hơn mà Hadoop đang bỏ sót. Nó làm giảm chi phí trên Hadoop, nơi theo dõi hầu hết dữ liệu Meta của bạn. Do đó HMaster có được thông tin chi tiết về máy chủ khu vực bằng cách thực sự liên hệ với người quản lý Zoo.

Có một câu hỏi cho chúng tôi? Đề cập đến họ trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.

Bài viết liên quan:

định dạng trong python là gì

Lệnh Hive hữu ích