您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)hbase中怎么修改表名,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
hbase修改表名
hbase修改表名沒有直接的api可以調(diào)用,我們?nèi)绻胍薷谋砻?,可以利用快照的方式?/p>
需要開啟快照功能,在hbase-site.xml文件中添加如下配置項(xiàng):
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
命令
hbase shell> disable 'tableName'
hbase shell> snapshot 'tableName', 'tableSnapshot'
hbase shell> clone_snapshot 'tableSnapshot', 'newTableName'
然后我們就可以測(cè)試一下新表是否建立成功。
快照是什么?
快照就是一份元信息的合集,允許管理員恢復(fù)到表的先前狀態(tài)??煺詹皇潜淼膹?fù)制而是一個(gè)文件名稱列表,因而不會(huì)復(fù)制數(shù)據(jù)。完全快照恢復(fù)是指恢復(fù)到之前的“表結(jié)構(gòu)”以及當(dāng)時(shí)的數(shù)據(jù),快照之后發(fā)生的數(shù)據(jù)不會(huì)恢復(fù)。
操作
生成快照:本操作嘗試對(duì)指定表生成快照。如果集群在執(zhí)行數(shù)據(jù)均衡、分隔或合并等操作時(shí),可能會(huì)引起操作失敗。
克隆快照:本操作使用與指定快照相同的結(jié)構(gòu)數(shù)據(jù)構(gòu)建一張新表。操作結(jié)果會(huì)生成一張有完整功能的表,對(duì)該表的任意修改不會(huì)對(duì)原表或快照產(chǎn)生影響。
還原快照:本操作將表結(jié)構(gòu)和數(shù)據(jù)恢復(fù)到生成快照時(shí)的狀態(tài)。(注意:本操作會(huì)舍棄快照生成后任何改變)。
刪除快照:本操作將系統(tǒng)中的快照刪除,釋放未共享的磁盤空間,而且不會(huì)影響其他克隆或快照。
導(dǎo)出快照:本操作將快照數(shù)據(jù)和元數(shù)據(jù)復(fù)制到其他集群。操作只會(huì)涉及HDFS,不會(huì)與Master或域服務(wù)器產(chǎn)生任何聯(lián)系,因此HBase集群可以關(guān)閉。
零復(fù)制快照,恢復(fù),克隆
快照和復(fù)制/導(dǎo)出表之間的主要差異是快照操作只寫入元數(shù)據(jù),不涉及海量數(shù)據(jù)。
HBase的主要設(shè)計(jì)原則之一就是一旦文件寫入就不再修改。文件不可變意味著快照只需保持對(duì)快照產(chǎn)生時(shí)存在的文件追蹤,并且在壓縮時(shí)負(fù)責(zé)提示系統(tǒng)該文件不應(yīng)刪除而是應(yīng)當(dāng)歸檔保存。
同樣的原則也適用于克隆和恢復(fù)操作。因?yàn)槲募遣蛔兊模陆ㄒ粋€(gè)表只需要通過快照“鏈接”到文件引用即可。
導(dǎo)出快照是唯一需要復(fù)制數(shù)據(jù)的操作,因?yàn)槠渌簺]有數(shù)據(jù)文件。
導(dǎo)出快照 vs 復(fù)制/導(dǎo)出表
導(dǎo)出快照與復(fù)制/導(dǎo)出表除了更好地保持一致性外,主要的不同在于導(dǎo)出快照是在HDFS的層面操作的。這意味這Master和域服務(wù)器與操作無關(guān)。因此不需要為不必要的數(shù)據(jù)創(chuàng)建緩存空間,也不會(huì)有掃描過程因?yàn)榇罅繉?duì)象創(chuàng)建引起的GC暫停。對(duì)于HBase來說主要性能影響就是DataNode額外的網(wǎng)絡(luò)和磁盤負(fù)載。
HBase命令:快照操作
通過檢查hbase-site.xml中的hbase.snapshot.enabled是否設(shè)置為true確認(rèn)打開了快照許可。獲取指定表的快照使用snapshot命令(不產(chǎn)生文件復(fù)制)
hbase>snapshot ‘tableName’, ‘snapshotName’
列出所有的快照,使用 list_snapshot 命令。會(huì)展示出快照名稱,源表,以及創(chuàng)建日期和時(shí)間
hbase>list_snapshots
使用clone_snapshot命令從指定的快照生成新表(克?。?。由于不會(huì)產(chǎn)生數(shù)據(jù)復(fù)制,所以最終用到的數(shù)據(jù)不會(huì)是之前的兩倍。
hbase>clone_snapshot ‘snapshotName’, ‘newTableName’
使用restore_snapshot命令將指定快照內(nèi)容替換當(dāng)前表結(jié)構(gòu)/數(shù)據(jù)。
用快照恢復(fù)數(shù)據(jù),它需要先禁用表,再進(jìn)行恢復(fù)
hbase>disable 'myTable' hbase>restore_snapshot ‘snapshotName’
刪除快照使用 deleted_snapshot 命令。刪除快照不會(huì)影響到克隆表或者之后生成的快照。
hbase>delete_snapshot ‘snapshotName’
使用ExportSnapshot工具將現(xiàn)有快照導(dǎo)出至其他集群。導(dǎo)出工具不會(huì)影響到域服務(wù)器負(fù)載,只是工作在HDFS層面所以需要指定HDFS路徑(其他集群的hbase根目錄)
采用16個(gè)mappers來把一個(gè)名為MySnapshot的快照復(fù)制到一個(gè)名為hbfreeoa2的集群當(dāng)中
hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://hbfreeoa2:8020/hbase -mappers 16
看完上述內(nèi)容,你們對(duì)hbase中怎么修改表名有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。