首页 > 其他分享 >Hbase跨集群迁移以及常用命令

Hbase跨集群迁移以及常用命令

时间:2023-05-08 15:35:46浏览次数:49  
标签:list namespace echo 集群 student 常用命令 test Hbase hbase

场景:

由于Hbase版本升级以及集群切换,现需要将Hbase从A集群(源)迁移至B集群(目的)

迁移过程:

将源A集群的Hbase需要迁移的表(注意namespace)通过snapshot方式打成快照,然后再通过ExportSnapshot方式迁移至目的B集群,此时目的集群的HDFS目录下的hbase目录会生成 .hbase_snapshot和archive目录,最后在目的集群恢复快照即可

 

迁移脚本

A集群(源)执行脚本

#!/bin/bash
#将dst_ip设置为目的集群IP
dst_ip=1.1.1.1

echo "开始Hbase迁移"
echo "start : $(date)"
#将源集群中的Hbase和dbb相关的表输出到本地文件
echo "list" | hbase shell | grep '^dbbd_namespace*'>/root/jws/hbase_list.txt

#读取列表的数据循环执行快照操作
while read line
do
    #echo "$line"
    dst_name=`echo "$line" | awk -F ':' '{print $2}'`
    #echo "$dst_name"
    echo "snapshot '$line','snapshot_$dst_name'" | hbase shell
done < /root/jws/hbase_list.txt

echo "list_snapshots" | hbase shell | grep '^snapshot_*'>/root/jws/snapshots_list.txt

#使用hbase用户执行命令
while read line
do
    dst_name=`echo "$line" | awk -F ':' '{print $2}'`
    echo "$dst_name"
    # 迁移快照
    su hbase -c "hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot_$dst_name -copy-to hdfs://$dst_ip/apps/hbase/data/"
done < /root/jws/hbase_list.txt

echo "执行完成,请在目的集群执行恢复操作"
echo "end : $(date)"

 

B集群(目的)执行脚本:

#!/bin/bash

#开始恢复
echo "开始恢复!"
echo "start : $(date)"
#进入Hbase执行list_snapshots重定向到snapshots_list.txt
echo "list_snapshots" | hbase shell | grep '^ snapshot*' > /root/jws/snapshot_list.txt

#判断Hbase中是否有dbbd的namespace,没有则创建
if ! echo "list_namespace" | hbase shell | grep '^dbbd_namespace$';then
    echo "create_namespace 'dbbd_namespace'" | hbase shell
    echo "创建dbbd_namespace成功"
fi

#循环读取快照并恢复
while read line
do
    #echo "$line"
    dst_line=`echo "$line" | awk -F ' ' '{print $1}'`
    echo "$dst_line"
    echo "restore_snapshot '$dst_line'" | hbase shell
done < /root/jws/snapshot_list.txt

echo "执行完成!"
echo "end : $(date)"

  

 

HBase入门基本:命名空间、建表、增删改查

进入HBase数据库

# hbase shell

注意HBase Shell 中的回格键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。

HBase帮助命令:

hbase> help 'create'

  

命名空间

列出所有命名空间

hbase> list_namespace

新建命名空间

hbase> create_namespace 'ns1'

删除命名空间

hbase> drop_namespace 'ns1'

  该命名空间必须为空,否则会报错。

修改命名空间

hbase> alter_namespace 'ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

  

列出所有表

hbase> list

  

新建表

hbase> create 'ns1:t1', 'cf1'

  新建一个以命名空间ns1的表t1,列族为cf1。

删除表

hbase> disable 'ns1:t1'
hbase> drop 'ns1:t1' 

修改表名
HBase没有rename命令,可以通过快照功能修改表名,详见下述。

查看表内容

hbase> scan 'ns1:t1'
hbase> scan 'ns1:t1', {LIMIT=>5} # 查看前5行数据

插入

hbase> put 'ns1:t1', 'r1', 'cf1:c1', 'value'

 

快照

查看快照

hbase> list_snapshots

新建快照:

hbase> snapshot 'sourceTable', 'snapshotName'

从快照复制生成一个新表:

hbase> clone_snapshot 'snapshotName', 'gld:student'

  

命令罗列:

1、进入到hbase shell
hbase shell

2、查看当前版本
version

3、查看命名空间
list_namespace

4、查看命名空间下的表
list_namespace_tables 命名空间

5、创建namespace(命名空间)
create_namespace 'test'

6、删除namespace(命名空间),删除表空间前,要先把表空间内的表全部删除
drop_namespace 'test'

7、查看命名空间下有多少表
list_namespace_tables 'test'

8、创建表
create 'test:student','baseInfo','schoolInfo'

9、删除表操作,删除表之前先禁用表,否则删除失败
disable 'test:student'
drop 'test:student'

10、查询表结构
describe 'test:student'

11、插入数据
put 'test:student','rowkey1','baseInfo:name','zhangsan'

12、查询表数据
get 'test:student','rowkey1','baseInfo'

13、查看状态
status

14、帮助命令
help '命令'

15、判断表是否存在
exists 'test:student'

16、新增列簇
alter 'test:student','teacherInfo'

17、删除列簇
alter 'test:student','teacherInfo',,{NAME=>'teacherInfo',METHOD=>'delete'}

18、设置列簇记录三个版本
alter 'test:student',{NAME=>'baseInfo',VERSIONS=>3}

19、全表扫描查询
scan 'test:student'

20、条件过滤查询
scan 'test:student',{COLUMN=>'baseInfo'}

21、删除指定列簇下的列
delete 'test:student','rowkey1','baseInfo:age''

22、删除指定行 rowkey
exists 'test:student'

 

标签:list,namespace,echo,集群,student,常用命令,test,Hbase,hbase
From: https://www.cnblogs.com/yizhipanghu/p/17381820.html

相关文章

  • 【Redis】常用命令介绍
    一、Redis常用基本命令官方文档:https://redis.io/commands/参考文档:http://redisdoc.com/#可以使用help命令查看各redis命令用法[root@Client-Ubuntu-1804-250:~]#redis-cli-aredis--no-auth-warninghelpredis-cli5.0.14TogethelpaboutRediscommandstype:......
  • Docker CLI docker compose push常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • k8s集群组件
    k8s集群有以下组件:Master:Kubernetes集群的控制中心,包括:APIServer:在Kubernetes集群中,APIserver扮演一个接口,使用户和管理员可以通过kubectl或其他工具与集群进行交互,而不必直接与底层组件打交道。同时,所有其他Kubernetes组件,包括kubelet、kube-proxy、controllerman......
  • 有关本地集群的linux操作tips
    免密登录认证-1.使用rsa加密技术,生成公钥和私钥。一路回车即可[root@username01~]#cd~[root@username01~]#ssh-keygen-trsa -2.进入~/.ssh目录下,使用ssh-copy-id命令[root@username01~]#cd~/.ssh [[email protected]]#ssh-copy-idroot@username01-3.......
  • openGauss 5.0 主从集群 日常运维
    在之前的博客我们看了openGauss主从集群的搭建,如下:openGauss5.0一主两从复制环境搭建手册https://www.cndba.cn/dave/article/116528本篇我们看下主从集群的维护。 1查看集群状态查看集群所有节点:[[email protected]~]$gs_om-tstatus--detail[CMServerSta......
  • 部署repmgr PG14集群<无autofailover>
    系统环境OS:CentOS7192.168.56.11node1192.168.56.12node2部署操作流程1.系统环境初始化echoredhat|passwdroot--stdinecho-e"192.168.56.11node1">>/etc/hostsecho-e"192.168.56.12node2">>/etc/hostsse......
  • docker学习二 docker 常用命令
    一、docker的基本命令也可以通过docker官网查询docker名:官网->Reference->Command-lineReferencehttps://docs.docker.com/reference/#启动dockersystemctlstartdocker#关闭dockersystemctlstopdocker#重启dockersystemctlrestartdocker​#docker设置随服务启动......
  • MongoDB中缩减Shard集群(删除一个Shard)--删除一个分片
    关键字:MongoDB中缩减Shard集群(删除一个Shard)--删除一个分片对MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了。但是缩减集群(删除分片)这种一般很少用到。由于某服务器挂了,所以想送修之前必须把它上面的数据自动迁移到其他Shard上。以下......
  • cassandra-0.6.1安装配置(与集群)
    关键字:cassandra-0.6.1安装配置(与集群)1下载Cassandrahttp://cassandra.apache.org/下载版本0.5.1。2安装Cassandra安装目录D:\apache-cassandra-0.5.1。在此需要修改两个配置文件1修改conf目录下的log4j.properties文件:log4j.appender.R.Fil......
  • Hbase Memstore刷新方式与Region的数目上限
    目录Region数目上限Region大小上限MemStore的刷新方式(触发条件)HLog(WAL)Size&MemstoreFlush频繁的MemstoreFlushesRegion数目上限RegionServer的region数目取决于memstore的内存使用,每个region拥有一组memstore(memstore的数量有hstore决定,hstore的数据由创建表时的指定的列族......