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