Bản phát hành (4.2) hiện tại của CDH - bản phân phối nguồn mở 100% của Apache Hadoop của Cloudera và các dự án liên quan (bao gồm cả Apache HBase) - đã giới thiệu một tính năng HBase mới, gần đây đã cập nhật trong thân cây, cho phép quản trị viên chụp nhanh một bảng.
Trước CDH 4.2, cách duy nhất để sao lưu hoặc sao chép bảng là sử dụng Sao chép / Xuất Bảng hoặc sau khi tắt bảng, hãy sao chép tất cả các tệp trong HDFS. Copy / Export Table là một bộ công cụ sử dụng MapReduce để quét và sao chép bảng nhưng có tác động trực tiếp đến hiệu suất của Máy chủ Vùng. Việc tắt bảng sẽ dừng tất cả các lần đọc và ghi, điều này hầu như luôn không được chấp nhận.
Ngược lại, ảnh chụp nhanh HBase cho phép quản trị viên sao chép bảng mà không có bản sao dữ liệu và với tác động tối thiểu đến Máy chủ vùng. Việc xuất ảnh chụp nhanh sang một cụm khác không ảnh hưởng trực tiếp đến bất kỳ Máy chủ Vùng nào; export chỉ là một bản phân phối với một chút logic bổ sung.
Dưới đây là một số trường hợp sử dụng cho ảnh chụp nhanh HBase:
- Khôi phục từ lỗi người dùng / ứng dụng
- Khôi phục / Khôi phục từ trạng thái an toàn đã biết.
- Xem ảnh chụp nhanh trước đó và kết hợp có chọn lọc sự khác biệt vào quá trình sản xuất.
- Lưu ảnh chụp nhanh ngay trước khi nâng cấp hoặc thay đổi ứng dụng lớn.
- Kiểm tra và / hoặc báo cáo về các chế độ xem dữ liệu tại một thời điểm cụ thể
- Thu thập dữ liệu hàng tháng cho các mục đích tuân thủ.
- Chạy báo cáo cuối ngày / tháng / quý.
- Kiểm tra ứng dụng
- Kiểm tra các thay đổi của lược đồ hoặc ứng dụng trên dữ liệu tương tự như trong sản xuất từ một ảnh chụp nhanh và sau đó loại bỏ nó. Ví dụ:chụp ảnh nhanh, tạo bảng mới từ nội dung ảnh chụp nhanh (lược đồ cộng với dữ liệu) và thao tác với bảng mới bằng cách thay đổi lược đồ, thêm và xóa hàng, v.v. (Bảng gốc, ảnh chụp nhanh và bảng mới vẫn độc lập với nhau.)
- Khối lượng công việc
- Chụp nhanh, xuất nó sang một cụm khác và chạy các công việc MapReduce của bạn. Vì ảnh chụp nhanh xuất hoạt động ở cấp HDFS nên bạn không làm chậm cụm HBase chính của mình nhiều như CopyTable.
Ả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. Ảnh chụp nhanh không phải là bản sao của bảng; nó chỉ là một danh sách tên tệp và không sao chép dữ liệu. Khôi phục toàn bộ ảnh chụp nhanh có nghĩa là bạn quay lại “lược đồ bảng” trước đó và bạn lấy lại dữ liệu trước đó của mình khi mất bất kỳ thay đổi nào được thực hiện kể từ khi ảnh chụp nhanh được thực hiện.
Hoạt động
- Chụp nhanh:Thao tác này cố gắng chụp nhanh trên một bảng được chỉ định. Thao tác này có thể không thành công nếu các vùng di chuyển xung quanh trong quá trình cân bằng, chia tách hoặc hợp nhất.
- Sao chép một ảnh chụp nhanh:Thao tác này tạo một bảng mới bằng cách sử dụng cùng một lược đồ và với cùng dữ liệu có trong ảnh chụp nhanh được chỉ định. Kết quả của thao tác này là một bảng đầy đủ chức năng mới có thể được sửa đổi mà không ảnh hưởng đến bảng gốc hoặc ảnh chụp nhanh.
- Khôi phục ảnh chụp nhanh:Thao tác này đưa lược đồ bảng và dữ liệu trở lại trạng thái ảnh chụp nhanh. (Lưu ý:thao tác này loại bỏ bất kỳ thay đổi nào được thực hiện kể từ khi ảnh chụp nhanh được thực hiện.)
- Xóa ảnh chụp nhanh:Thao tác này xóa ảnh chụp nhanh khỏi hệ thống, giải phóng dung lượng đĩa không được chia sẻ mà không ảnh hưởng đến bất kỳ bản sao hoặc ảnh chụp nhanh nào khác.
- Xuất ảnh chụp nhanh:Thao tác này sao chép dữ liệu ảnh chụp nhanh và siêu dữ liệu sang một cụm khác. Hoạt động chỉ liên quan đến HDFS nên không có giao tiếp với Máy chủ chính hoặc Máy chủ khu vực và do đó, cụm HBase có thể ngừng hoạt động.
Ảnh chụp nhanh, khôi phục, sao chép không sao chép
Sự khác biệt chính giữa ảnh chụp nhanh và CopyTable / ExportTable là các thao tác chụp nhanh chỉ ghi siêu dữ liệu. Không có bản sao dữ liệu lớn nào liên quan.
Một trong những nguyên tắc thiết kế chính của HBase là một khi tệp đã được viết, nó sẽ không bao giờ bị sửa đổi. Có các tệp không thay đổi có nghĩa là một ảnh chụp nhanh chỉ theo dõi các tệp được sử dụng tại thời điểm thực hiện thao tác chụp nhanh và trong quá trình nén, ảnh chụp nhanh có trách nhiệm thông báo cho hệ thống rằng tệp không nên bị xóa mà thay vào đó nó nên được lưu trữ.
Nguyên tắc tương tự cũng áp dụng cho thao tác Sao chép hoặc Khôi phục. Vì các tệp là không thể thay đổi nên một bảng mới được tạo chỉ bằng các “liên kết” đến các tệp được tham chiếu bởi ảnh chụp nhanh.
Xuất Ảnh chụp nhanh là thao tác duy nhất yêu cầu bản sao dữ liệu, vì cụm khác không có tệp dữ liệu.
Xuất Ảnh chụp nhanh so với Sao chép / Xuất Bảng
Bên cạnh tính nhất quán tốt hơn đảm bảo rằng ảnh chụp nhanh có thể cung cấp so với Công việc sao chép / xuất, sự khác biệt chính giữa Xuất ảnh chụp nhanh và sao chép / xuất bảng là ExportSnapshot hoạt động ở cấp HDFS. Điều này có nghĩa là Máy chủ Chính và Máy chủ Vùng không tham gia vào hoạt động này. Do đó, không có bộ đệm nào không cần thiết cho dữ liệu được tạo và không có kích hoạt thêm GC tạm dừng do số lượng đối tượng được tạo trong quá trình quét. Tác động về hiệu suất trên cụm HBase bắt nguồn từ khối lượng công việc bổ sung của mạng và ổ đĩa mà DataNodes đã trải qua.
HBase Shell:Thao tác Chụp nhanh
Xác nhận rằng hỗ trợ chụp nhanh đã được bật bằng cách kiểm tra xem hbase.snapshot.enabled
thuộc tính trong hbase-site.xml được đặt thành true. Để chụp nhanh một bảng cụ thể, hãy sử dụng snapshot
yêu cầu. (Không có bản sao tệp nào được thực hiện)
hbase> snapshot ‘tableName’, ‘snapshotName’
Để liệt kê tất cả các ảnh chụp nhanh, hãy sử dụng list_snapshot
yêu cầu. nó sẽ hiển thị tên ảnh chụp nhanh, bảng nguồn và ngày giờ tạo.
hbase> list_snapshots SNAPSHOT TABLE + CREATION TIME TestSnapshot TestTable (Mon Feb 25 21:13:49 +0000 2013)
Để xóa một ảnh chụp nhanh, hãy sử dụng delete_snapshot
yêu cầu. Việc xóa một ảnh chụp nhanh không ảnh hưởng đến các bảng được sao chép hoặc các ảnh chụp nhanh khác được chụp sau đó.
hbase> delete_snapshot 'snapshotName'
Để tạo một bảng mới từ một ảnh chụp nhanh (bản sao) được chỉ định, hãy sử dụng clone_snapshot
yêu cầu. Không có bản sao dữ liệu nào được thực hiện, vì vậy, bạn sẽ không sử dụng gấp đôi dung lượng cho cùng một dữ liệu.
hbase> clone_snapshot 'snapshotName', 'newTableName'
Để thay thế lược đồ / dữ liệu bảng hiện tại bằng một nội dung ảnh chụp nhanh được chỉ định, hãy sử dụng restore_snapshot
lệnh.
hbase> restore_snapshot 'snapshotName'
Để xuất một ảnh chụp nhanh hiện có sang một cụm khác, hãy sử dụng ExportSnapshot
dụng cụ. Quá trình xuất không ảnh hưởng đến khối lượng công việc của RegionServers, nó hoạt động ở cấp HDFS và bạn phải chỉ định vị trí HDFS (hbase.rootdir của cụm khác).
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot SnapshotName -copy-to hdfs:///srv2:8082/hbase
Hạn chế hiện tại
Ảnh chụp nhanh dựa trên một số giả định và hiện tại có một số công cụ chưa được tích hợp đầy đủ với tính năng mới:
- Việc hợp nhất các vùng được tham chiếu bởi ảnh chụp nhanh sẽ làm mất dữ liệu trên ảnh chụp nhanh và trên các bảng được sao chép.
- Khôi phục bảng có bật tính năng sao chép cho bảng được khôi phục kết thúc với hai cụm không đồng bộ. Bảng không được khôi phục trên bản sao.
Kết luận
Hiện tại, tính năng chụp nhanh bao gồm tất cả các chức năng cơ bản cần thiết, nhưng vẫn còn nhiều việc phải làm, bao gồm chỉ số, tích hợp giao diện người dùng Web, tối ưu hóa việc sử dụng đĩa và hơn thế nữa.
Để tìm hiểu thêm về cách định cấu hình HBase và sử dụng ảnh chụp nhanh, hãy xem lại tài liệu.
Matteo Bertozzi là Kỹ sư phần mềm trong nhóm Nền tảng và là người cam kết HBase.