테이블 이름 바꾸기
테이블 이름 바꾸기 (Table Rename)
HBase에서 테이블 이름을 바꾸는 방법을 안내하는 페이지예요. 다운타임 없이 안전하게 이름을 바꾸려면 스냅샷 기능을 활용하면 됩니다.
출처: 문서
본문
HBase 0.90.x 이하 버전에서는 hdfs 테이블 디렉터리의 이름을 바꾼 뒤 hbase:meta 테이블을 편집해서 옛 테이블 이름을 전부 새 이름으로 치환하는 간단한 스크립트가 있었어요. 그 스크립트가 바로 ./bin/rename_table.rb였죠. 이 스크립트는 주로 유지보수가 안 되고 수행하는 작업이 너무 과격해서 deprecated 처리된 뒤 제거되었어요.
HBase 0.94.x부터는 스냅샷 기능을 이용해 테이블을 rename할 수 있어요. hbase shell에서 이렇게 하면 됩니다.
hbase shell> disable 'tableName' hbase shell> snapshot 'tableName', 'tableSnapshot' hbase shell> clone_snapshot 'tableSnapshot', 'newTableName' hbase shell> delete_snapshot 'tableSnapshot' hbase shell> drop 'tableName'
코드로는 다음과 같이 작성할 수 있어요.
void rename(Admin admin, String oldTableName, TableName newTableName) { String snapshotName = randomName(); admin.disableTable(oldTableName); admin.snapshot(snapshotName, oldTableName); admin.cloneSnapshot(snapshotName, newTableName); admin.deleteSnapshot(snapshotName); admin.deleteTable(oldTableName); }