Trong Phần 1 của loạt bài này về ảnh chụp nhanh Apache HBase, bạn đã học cách sử dụng tính năng Ảnh chụp nhanh mới và một chút lý thuyết đằng sau việc triển khai. Bây giờ, đã đến lúc đi sâu vào các chi tiết kỹ thuật sâu hơn một chút.
Bảng là gì?
Bảng HBase bao gồm một tập hợp thông tin siêu dữ liệu và một tập hợp các cặp khóa / giá trị:
- Thông tin Bảng :Tệp kê khai mô tả "cài đặt" của bảng, chẳng hạn như họ cột, codec nén và mã hóa, các loại bộ lọc nở, v.v.
- Khu vực :Bảng “phân vùng” được gọi là vùng. Mỗi khu vực chịu trách nhiệm xử lý một tập hợp khóa / giá trị liền kề và chúng được xác định bằng khóa bắt đầu và khóa kết thúc.
- WALs / MemStore :Trước khi ghi dữ liệu lên đĩa, các lệnh sẽ được ghi vào Ghi nhật ký phía trước (WAL) và sau đó được lưu trữ trong bộ nhớ cho đến khi áp suất bộ nhớ kích hoạt xả vào đĩa. WAL cung cấp một cách dễ dàng để khôi phục các đĩa không bị hỏng.
- Hồ sơ :Tại một thời điểm nào đó, tất cả dữ liệu được chuyển vào đĩa; HFile là định dạng HBase chứa khóa / giá trị được lưu trữ. HFiles là bất biến nhưng có thể bị xóa khi nén hoặc xóa vùng.
(Lưu ý:Để tìm hiểu thêm về HBase Write Path, hãy xem bài đăng trên blog HBase Write Path.)
Ảnh chụp nhanh là gì?
Ảnh chụp nhanh là một tập hợp thông tin siêu dữ liệu cho phép quản trị viên quay lại trạng thái trước đó của bảng mà nó được sử dụng. Ảnh chụp nhanh không phải là bản sao của bảng; cách đơn giản nhất để nghĩ về nó là một tập hợp các thao tác để theo dõi siêu dữ liệu (thông tin bảng và vùng) và dữ liệu (HFiles, memstore, WALs). Không có bản sao của dữ liệu nào được tham gia trong quá trình thao tác chụp nhanh.
- Ảnh chụp nhanh Ngoại tuyến :Trường hợp đơn giản nhất để chụp ảnh nhanh là khi bảng bị vô hiệu hóa. Tắt bảng có nghĩa là tất cả dữ liệu được xóa trên đĩa và không có lần ghi hoặc đọc nào được chấp nhận. Trong trường hợp này, việc chụp ảnh nhanh chỉ là việc xem qua siêu dữ liệu bảng và các tệp HF trên đĩa và giữ một tham chiếu đến chúng. Cái chính thực hiện thao tác này và thời gian cần thiết được xác định chủ yếu bằng thời gian mà nút tên HDFS yêu cầu để cung cấp danh sách các tệp.
- Ảnh chụp nhanh Trực tuyến :Tuy nhiên, trong hầu hết các tình huống, các bảng được bật và mỗi máy chủ khu vực đang xử lý các yêu cầu đặt và nhận. Trong trường hợp này, máy chủ nhận được yêu cầu chụp nhanh và yêu cầu từng máy chủ khu vực chụp nhanh các vùng mà nó chịu trách nhiệm.
Giao tiếp giữa máy chủ chính và máy chủ khu vực được thực hiện thông qua Apache ZooKeeper bằng cách sử dụng giao dịch giống như cam kết hai giai đoạn. Master tạo ra một znode có nghĩa là “chuẩn bị ảnh chụp nhanh”. Mỗi máy chủ khu vực sẽ xử lý yêu cầu và chuẩn bị ảnh chụp nhanh cho các khu vực từ bảng mà nó chịu trách nhiệm. Sau khi hoàn tất, họ thêm một nút phụ vào znode chuẩn bị yêu cầu với ý nghĩa "Tôi đã hoàn thành".
Khi tất cả các máy chủ khu vực đã báo cáo lại trạng thái của chúng, máy chủ sẽ tạo một znode khác có nghĩa là “Ảnh chụp nhanh cam kết”; mỗi máy chủ khu vực sẽ hoàn thiện ảnh chụp nhanh và báo cáo trạng thái như trước khi tham gia nút. Sau khi tất cả các máy chủ khu vực đã báo cáo lại, máy chủ sẽ hoàn thiện ảnh chụp nhanh và đánh dấu hoạt động là hoàn tất. Trong trường hợp máy chủ khu vực báo lỗi, máy chủ sẽ tạo một znode mới được sử dụng để phát thông báo hủy bỏ.
Vì máy chủ khu vực liên tục xử lý các yêu cầu mới, các trường hợp sử dụng khác nhau có thể yêu cầu các mô hình nhất quán khác nhau. Ví dụ:ai đó có thể quan tâm đến một ảnh chụp nhanh cẩu thả mà không có dữ liệu mới trong MemStore, người khác có thể muốn một ảnh chụp nhanh hoàn toàn nhất quán yêu cầu khóa ghi trong một thời gian, v.v.
Vì lý do này, quy trình chụp ảnh nhanh trên máy chủ khu vực có thể cắm được. Hiện tại, triển khai duy nhất hiện có là “Flush Snapshot”, thực hiện xả trước khi chụp nhanh và chỉ đảm bảo tính nhất quán của hàng. Các thủ tục khác với các chính sách nhất quán khác có thể được thực hiện trong tương lai.
Trong trường hợp trực tuyến, thời gian cần thiết để chụp nhanh bị giới hạn bởi thời gian do máy chủ khu vực chậm nhất yêu cầu để thực hiện thao tác chụp nhanh và báo cáo thành công lại cho máy chủ. Thao tác này thường diễn ra theo thứ tự trong vài giây.
Lưu trữ
Như chúng ta đã thấy trước đây, HFiles là bất biến. Điều này cho phép chúng tôi tránh sao chép dữ liệu trong quá trình chụp nhanh hoặc sao chép, nhưng trong quá trình nén, chúng sẽ bị loại bỏ và thay thế bằng một phiên bản nén. Trong trường hợp này, nếu bạn có ảnh chụp nhanh hoặc bảng sao chép đang tham chiếu đến một trong những tệp đó, thay vì xóa chúng, chúng sẽ được chuyển đến vị trí “lưu trữ”. Nếu bạn xóa một ảnh chụp nhanh và không có ai khác đang tham chiếu đến các tệp được tham chiếu bởi ảnh chụp nhanh, các tệp đó sẽ bị xóa.
Bảng sao chép và khôi phục
Ảnh chụp nhanh có thể được coi là một giải pháp sao lưu nơi chúng có thể được sử dụng để khôi phục / khôi phục bảng sau lỗi người dùng hoặc ứng dụng, nhưng tính năng ảnh chụp nhanh có thể cho phép nhiều hơn là sao lưu và khôi phục đơn giản. Sau khi sao chép một bảng từ ảnh chụp nhanh, bạn có thể viết một công việc MapReduce hoặc một ứng dụng đơn giản để kết hợp có chọn lọc những điểm khác biệt hoặc những gì bạn cho là quan trọng, vào sản xuất. Một trường hợp sử dụng khác là bạn có thể kiểm tra các thay đổi lược đồ hoặc cập nhật dữ liệu mà không phải đợi hàng giờ để sao chép bảng và không có nhiều dữ liệu được sao chép trên đĩa.
Sao chép Bảng từ Ảnh chụp nhanh
Khi quản trị viên thực hiện thao tác sao chép, một bảng mới với lược đồ bảng có trong ảnh chụp nhanh sẽ được tạo tách trước bằng các phím bắt đầu / kết thúc trong thông tin vùng ảnh chụp nhanh. Khi siêu dữ liệu bảng được tạo, thay vì sao chép dữ liệu vào, bạn sẽ sử dụng thủ thuật tương tự như với ảnh chụp nhanh. Vì các tệp HF là không thể thay đổi, chỉ cần một tham chiếu đến tệp nguồn được tạo; điều này cho phép thao tác tránh sao chép dữ liệu và cho phép chỉnh sửa bản sao mà không ảnh hưởng đến bảng nguồn hoặc ảnh chụp nhanh. Thao tác sao chép được thực hiện bởi bản chính.
Khôi phục Bảng từ Ảnh chụp nhanh
Thao tác khôi phục tương tự như thao tác nhân bản; bạn có thể nghĩ về nó như việc xóa bảng và sao chép nó khỏi ảnh chụp nhanh. Thao tác khôi phục trả lại dữ liệu cũ có trong ảnh chụp nhanh, xóa bất kỳ dữ liệu nào khỏi bảng không có trong ảnh chụp nhanh và cả lược đồ của bảng cũng được hoàn nguyên về lược đồ của ảnh chụp nhanh. Bên dưới, khôi phục được thực hiện bằng cách thực hiện sự khác biệt giữa trạng thái bảng và ảnh chụp nhanh, xóa các tệp không có trong ảnh chụp nhanh và thêm các tham chiếu đến những tệp trong ảnh chụp nhanh nhưng không có trong trạng thái hiện tại. Ngoài ra, bộ mô tả bảng cũng được sửa đổi để phản ánh “lược đồ” bảng tại thời điểm chụp nhanh. Thao tác khôi phục được thực hiện bởi cái chính và bảng phải bị vô hiệu hóa.
Hợp đồng tương lai
Hiện tại, triển khai snapshot bao gồm tất cả các chức năng cơ bản cần thiết. Như chúng ta đã thấy, các chính sách nhất quán về ảnh chụp nhanh mới cho ảnh chụp nhanh trực tuyến có thể cung cấp các cải tiến về hiệu suất, tính nhất quán hoặc tính linh hoạt hơn. Quản lý tệp tốt hơn có thể giảm tải cho Nút tên HDFS và cải thiện quản lý dung lượng ổ đĩa. Hơn nữa, các chỉ số, giao diện người dùng Web (Hue) và hơn thế nữa đều nằm trong danh sách việc cần làm.
Kết luận
Ảnh chụp nhanh HBase bổ sung chức năng mới như “điều phối quy trình” được sử dụng bởi ảnh chụp nhanh trực tuyến hoặc ảnh chụp nhanh sao chép khi ghi, khôi phục và sao chép.
Ảnh chụp nhanh cung cấp một giải pháp thay thế nhanh hơn và tốt hơn cho các giải pháp “sao lưu” và “sao chép” thủ công dựa trên distcp hoặc CopyTable. Tất cả các hoạt động chụp nhanh (chụp nhanh, khôi phục, sao chép) không liên quan đến bản sao dữ liệu, dẫn đến ảnh chụp nhanh bảng nhanh hơn và tiết kiệm dung lượng đĩa.
Để biết thêm thông tin về cách bật và sử dụng ảnh chụp nhanh, vui lòng tham khảo tài liệu quản lý hoạt động của HBase.
Matteo Bertozzi là Kỹ sư phần mềm trong nhóm Nền tảng và là Người cam kết HBase.