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

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 &lt;table&gt;"

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