使用Unix Shell脚本删除HBASE中30天以上的快照

时间:2017-06-20 09:09:15

标签: shell unix hbase hadoop2

我想使用shell脚本从HBASE删除30天的旧快照。我写了下面的函数,但该函数将删除所有快照。还需要实施30天的旧逻辑。

deleteSnapshot() {

  echo -e "list_snapshots '${NAMESPACE}_${TABLE}'" | hbase shell -n | grep ''${NAMESPACE}'_'${TABLE}'' 2>/dev/null

  local RET=$?

  if [ ${RET} -eq 0 ]; then
      echo "Deleting Snapshot ${NAMESPACE}_${TABLE}"
      echo -e "delete_snapshot '${NAMESPACE}_${TABLE}'" | hbase shell -n 2>/dev/null
      echo "Successfully deleted Snapshot ${NAMESPACE}_${TABLE}"
  fi
}

需要帮助。

2 个答案:

答案 0 :(得分:0)

您可以将时间戳附加到快照名称并应用正则表达式以仅匹配超过30天的快照。

您可以参考文件:

https://www.cloudera.com/documentation/enterprise/5-2-x/topics/cm_bdr_managing_hbase_snapshots.html#concept_aqd_sry_bp

答案 1 :(得分:0)

一次删除多个快照的快捷方法:

如果我们的快照名称为: table_name_snapshot_20190701

delete_all_snapshot 'table_name_snapshot_201907.*'

这将从7月删除任何内容。名称中的.用作快照名称其余部分(我们已将其替换为通配符*)的截止点