hbase修改表名java
hbase修改表名沒有直接的api能夠調用,咱們若是想要修改表名,能夠利用快照的方式。shell
須要開啓快照功能,在hbase-site.xml文件中添加以下配置項:
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>apache
命令
hbase shell> disable 'tableName'
hbase shell> snapshot 'tableName', 'tableSnapshot'
hbase shell> clone_snapshot 'tableSnapshot', 'newTableName'api
而後咱們就能夠測試一下新表是否創建成功。緩存
快照是什麼?服務器
快照就是一份元信息的合集,容許管理員恢復到表的先前狀態。快照不是表的複製而是一個文件名稱列表,於是不會複製數據。徹底快照恢復是指恢復到以前的「表結構」以及當時的數據,快照以後發生的數據不會恢復。網絡
操做app
生成快照:本操做嘗試對指定表生成快照。若是集羣在執行數據均衡、分隔或合併等操做時,可能會引發操做失敗。
克隆快照:本操做使用與指定快照相同的結構數據構建一張新表。操做結果會生成一張有完整功能的表,對該表的任意修改不會對原表或快照產生影響。
還原快照:本操做將表結構和數據恢復到生成快照時的狀態。(注意:本操做會捨棄快照生成後任何改變)。
刪除快照:本操做將系統中的快照刪除,釋放未共享的磁盤空間,並且不會影響其餘克隆或快照。
導出快照:本操做將快照數據和元數據複製到其餘集羣。操做只會涉及HDFS,不會與Master或域服務器產生任何聯繫,所以HBase集羣能夠關閉。
零複製快照,恢復,克隆工具
快照和複製/導出表之間的主要差別是快照操做只寫入元數據,不涉及海量數據。oop
HBase的主要設計原則之一就是一旦文件寫入就再也不修改。文件不可變意味着快照只需保持對快照產生時存在的文件追蹤,而且在壓縮時負責提示系統該文件不該刪除而是應當歸檔保存。
一樣的原則也適用於克隆和恢復操做。由於文件是不變的,新建一個表只須要經過快照「連接」到文件引用便可。
導出快照是惟一須要複製數據的操做,由於其餘集羣沒有數據文件。
導出快照 vs 複製/導出表
導出快照與複製/導出表除了更好地保持一致性外,主要的不一樣在於導出快照是在HDFS的層面操做的。這意味這Master和域服務器與操做無關。所以不須要爲沒必要要的數據建立緩存空間,也不會有掃描過程由於大量對象建立引發的GC暫停。對於HBase來講主要性能影響就是DataNode額外的網絡和磁盤負載。
HBase命令:快照操做
經過檢查hbase-site.xml中的hbase.snapshot.enabled是否設置爲true確認打開了快照許可。獲取指定表的快照使用snapshot命令(不產生文件複製)
hbase>snapshot ‘tableName’, ‘snapshotName’
列出全部的快照,使用 list_snapshot 命令。會展現出快照名稱,源表,以及建立日期和時間
hbase>list_snapshots
使用clone_snapshot命令從指定的快照生成新表(克隆)。因爲不會產生數據複製,因此最終用到的數據不會是以前的兩倍。
hbase>clone_snapshot ‘snapshotName’, ‘newTableName’
使用restore_snapshot命令將指定快照內容替換當前表結構/數據。
用快照恢復數據,它須要先禁用表,再進行恢復
hbase>disable 'myTable' hbase>restore_snapshot ‘snapshotName’
刪除快照使用 deleted_snapshot 命令。刪除快照不會影響到克隆表或者以後生成的快照。
hbase>delete_snapshot ‘snapshotName’
使用ExportSnapshot工具將現有快照導出至其餘集羣。導出工具不會影響到域服務器負載,只是工做在HDFS層面因此須要指定HDFS路徑(其餘集羣的hbase根目錄)
採用16個mappers來把一個名爲MySnapshot的快照複製到一個名爲hbfreeoa2的集羣當中hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://hbfreeoa2:8020/hbase -mappers 16