Khi làm việc với HBase, người quản lý thường xuyên phải xử lý các yêu cầu liên quan tới backup những dữ liệu cần thiết. Bài viết dưới đây sẽ giới thiệu các phương pháp xử lý và chi tiết cách thức thực hiện backup bằng snapshot.
Tổng quan các phương pháp backup dữ liệu HBase
Có rất nhiều cách thức để tiến hành công việc này:
- Snapshots
- Replication
- Export
- CopyTable
- API
- Manual
- | Performance Impact | Data Footprint | Downtime | Incremental Backups | Ease of Implementation | Mean Time To Recovery (MTTR) |
---|---|---|---|---|---|---|
Snapshots | Minimal | Tiny | Brief (Only on Restore) | No | Easy | Seconds |
Replication | Minimal | Large | None | Intrinsic | Medium | Seconds |
Export | High | Large | None | Yes | Easy | High |
CopyTable | High | Large | None | Yes | Easy | High |
API | Medium | Large | None | Yes | Difficult | Up to you |
Manual | N/A | Large | Long | No | Medium | High |
Bảng bên trên đưa ra so sánh cơ bản giữa các phương pháp thực hiện. Trong đó dễ dàng có thể thấy nổi bật lên là take snapshots với cách thức thực hiện dễ dàng, thời gian recovery cực nhanh, chỉ tính bằng giây, đặc biệtsnapshot không nhân bản dữ liệu hiện tại do đó cũng giảm đáng kể dung lượng cần để lưu trữ dữ liệu.
Cho tới CDH4.2 chỉ có một 1 cách duy nhất để backup hay clone table hbase là sử dụng CopyTable, ExportTable hoặc copy toàn bộ hfiles HDFS. Khi tiến hành các thao tác này cũng yêu cầu disable bảng đối tượng.
Theo khuyến cáo từ Cloudera CopyTable và ExportTable có thể làm giảm hiệu suất của RegionServer. Ngoài ra việc disable một bảng nào đó để tiến hành backup cũng gây phiền phức trong quá trình vận hành hệ thống.
Từ v5 Cloudera giới thiệu chức năng BDR(Cloudera-Backup-Data-Recovery). Với BDR người quản lý có thể dễ dàng lập lịch , chọn đối tượng backup,... Tuy nhiên tính năng này chỉ dành cho bản có phí. “This feature is available only with a Cloudera Enterprise license.”
Đối với người sử dụng phiên bản Clouder miễn phí, Cloudera vẫn hỗ trợ command để tiến hành thực hiện snapshot. Do đó, có thể tự viết bash script lên lịch cho hoạt động backup như mong muốn.
Hbase Snapshot
Để sử dụng snapshot cần thiết lập enable hbase.snapshot tại file : hbase-site.xml
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
Một số command được hỗ trợ:
snapshot 'tableX', 'snapshotX'
restore_snapshot ‘snapshotX’
list_snapshots
list_snapshots ‘my_snapshot_*’
delete_snapshot ‘snapshotX’
clone_snapshot ‘snapshotX’, ‘tableY’
File lưu trữ các thông tin liên quan đến snapshot mặc định: hbase/.hbase-snapshots
Dựa trên file Shell Script đơn giản lấy theo hướng dẫn của Cloudera như bên dưới, có thể dễ dàng tạo file take snapshot phù hợp.
#!/bin/bash
# Take a snapshot of the table passed as an argument
# Usage: snapshot_script.sh table_name
# Names the snapshot in the format snapshot-YYYYMMDD
# Parse the arguments
if [ -z $1 ]||[$1 == '-h' ]; then
echo "Usage: $0 <table>"
echo " $0 -h"
exit 1
fi
# Modify to suit your environment
export HBASE_PATH=/home/user/hbase
export DATE=`date +"%Y%m%d"`
echo "snapshot '$1', 'snapshot-$DATE'" | $HBASE_PATH/bin/hbase shell -n
status=$?
if [$status -ne 0]; then
echo "Snapshot may have failed: $status"
fi
exit $status
Tổng kết
HBase Snapshot với nhiều ưu điểm vượt trội là lựa chọn tối ưu nhất cho tới thời điểm hiện tại để tiến hành backup:
- Không cần disable table.
- Tốc độ thực hiện rất nhanh.
- Cho chép clone table mà không cần tạo dữ liệu copy.
- Giảm tác động ở mức tối thiểu tới RegionServers.
- Export table tới cluster khác dễ dàng.
Tham khảo
- https://hbase.apache.org/book.html
- http://www.cloudera.com/documentation/enterprise/5-6-x/topics/cm_bdr_managing_hbase_snapshots.html
- http://blog.cloudera.com/blog/2013/11/approaches-to-backup-and-disaster-recovery-in-hbase/
- https://slideshare.net/cloudera/internals-session-1
- https://blog.cloudera.com/blog/2013/03/introduction-to-apache-hbase-snapshots/