欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程资源 > 编程问答 >内容正文

编程问答

5 hbase命令行接口 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 编程问答 22 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 5 hbase命令行接口 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

hbase shell

  • 进入退出
  • hbase shell #在任意节点都可以进入hbase shell exit
  • 查看帮助信息
  • help

    通用命令

  • 查询服务器状态,例如服务器的数量

    status
  • 查询hbase版本

    version
  • 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命令可查看当前用户

    whoami
  • ddl(data definition language 数据定义语言)

    创建一个表(create)

    语法:create

    , {name=>,versions=>}

    例如:创建表t1,有两个family name:f1,f2,且版本均为2

    create 't1',{name=>'f1',versions=>2},{name=>'f2',versions=>2}

    注意点:

    • 区分大小写,name不能写成name
    • 表名,列名需要以字符串的形式输入,即用单引号修饰,如’t1’

    还有一种非标准创建的语法,创建表member,列族是member_id,address,info,版本为1(默认版本)。如下:

    create 'member','member_id','address','info'

    获得表的描述/结构(describe)

    语法:describe

    list #列出所有的表 describe 'member' #查看表的描述 desc 'member'简写

    删除一个列族,alter,disable,enable

    alter 'member',{name=>'member_id',method=>'delete'}#只能删除disabled的表的列族,没有添加列族 #将表enable,启用表 enable 'member' #将表disabled,禁用表 disable 'member'

    删表, drop

    create 'temp_table','member_id','address','info'#创建一个示例 is_enabled 'temp_table' #查看是否可用 is_disabled 'temp_table' #查看是否禁用 drop 'temp_table' #只有被禁用的表才能被删除

    删除并重新创建一个表

    truncate 't1'

    查询表是否存在

    exists 'member'

    查看文件存储路径

    打开hdfs的web页面 /hbase/data/default/member

    default是默认的命名空间,member是表名

    dml(数据操纵语言)

    插入/更新数据,put

    语法:put ,,,

    put 'member' ,'guojing','info:company','alibaba' put 'member' ,'guojing','info:age','24' put 'member' ,'guojing','address:contry','china' put 'member' ,'guojing','address:province','zhejiang' put 'member' ,'guojing','address:city','hangzhou'

    注:现在表的数据都在内存中,并没有落地到磁盘。如果这时候想要落地到磁盘只能手动落地

    先插入memstore,到达阈值和时间后才会插入内存,可以不运行flush,查看hdfs文件中相应表的info文件,为空,说明未插入内存。
    命令: flush< table >

    flush 'member'

    更新一条数据

    #将guojing的年龄更新为18,原数据还在原位置 put 'member','guojing','info:age','18'

    实现加入数据的递增

    #给'xiaofeng'这个rowkey增加'info:age'字段,并使用counter实现递增 incr 'member','xiaofeng','info:age' get 'member','xiaofeng','info:age' incr 'member','xiaofeng','info:age' get 'member','xiaofeng','info:age' #获取当前counter的值 get_counter 'member','xiaofeng','info:age'

    查询数据,get

    获取一个rowkey的所有数据(一行数据)
    get < table> , < rk>

    get 'member','guojing'


    获取一个rowkey中,一个列族的所有数据

    get 'member','guojing','info'

    获取一个rowkey中,一个列键(列族:列)的所有数据

    get 'member','guojing','info:age'

    获取不同版本的数据

    #通过timestamp获取不同版本的数据 get 'member','guojing',{column=>'info:age',timestamp=>1627474097682}

    查询表中有多少行

    count 'member'

    全表扫描(scan)

    scan < table >

    #注:全表扫描时一般和过滤器一起使用,不指定版本默认显示一个版本 #(1)扫描时指定列族 scan 'member',{column=>'info'} #(2)扫描时指定列族,并限定显示最新的5个版本 要在创建表的时候设置版本,如果只有一个版本就没有历史数据了 scan 'member',{column=>'info',versions=>5} #(3)设置开启row模式,开启row模式会把那些已经删除标记但未删除的数据也显示出来 scan 'member',{column=>'info',raw => true} #(4)列的过滤 # 查询member表中列族为info和address的信息 scan 'member',{columns=>{'info','address'}} # 查询member表中列键为info:name和address:city scan 'member',{columns=>{'info:name','address:city'}} # 查询member表中列族为info和address且列名含有a字符的信息 scan 'member',{columns=>{'info','data'},filter=>"(qualifierfilter(=,'substring:a'))"} # 查询member表中列族为info,rk范围是[rk0001,rk0003)的数据 scan 'member',{columns=>'info',startrow=>'00001',endrow=>'00003'} # 查询member表中rowkey中以rk字符开头 scan 'member',{filter=>"prefixfilter('0')"} # 查询member表中指定时间范围的数据 scan 'member',{timerange=>{12341234,43214321}}

    删除数据,delete

    删除一次是删除标记,get能获得上一个版本的数据,如果只有一个版本,就不能获得,但是其实是添加删除标记并没有真正删除,用scan可以看见其为type为delete

    #删除id为guojing的值的'info:age'字段 delete 'member','guojing','info:age' #删除整行 delete 'member','guojing'

    清空整张表

    truncate 'member'

    region操作

    1)移动region

    语法:move ‘encoderegionname’,‘servername’

    encoderegionname指的是regionname后面的编码,servername指的是master-status的region servers列表

    # 将表'member'移动到节点node2上 move '2d47b41ebf2c0be89e5b7d5f7e97bf3a','node2,16020,1628232102271'

    寻找encoderegionname的过程,进入hbase的web页面(端口号默认为16010),找到相应的servername

    点击进入后即可看到相应的region信息,编码值表名后面的一长串

    点击相应的表进入复制相应的encoderegionname

    进入hbase的web页面(端口号默认为16010),找到相应的servername

    2)开启关闭region

    语法:balance_switch true|false

    hbase是一种支持自动负载均衡的分布式kv数据库,在开启balance的开关(balance_switch)后,hbase的hmaster进程会自动根据指定策略挑选出一些region,并将这些region分配给负载比较低的regionserver上。

    (当有新的节点进入hbase,为了负载均衡一种方式是手动将一部分region移动到新的节点,另一种方案是开启自动均衡策略,当region数据增多后,分裂时进入新的节点)

    balance_switch true

    3)手动split

    语法:split ‘regionname’,‘splitkey’

    split '2d47b41ebf2c0be89e5b7d5f7e97bf3a','001'

    4)手动触发major compaction

    hbase是基于一种lsm-tree(log-structured merge tree)存储模型设计的,写入路径上是先写入wal(write-ahead-log)即预写日志,再写入memstore缓存,满足一定条件后执行flush操作将缓存数据刷写到磁盘,生成一个hfile数据文件。随着数据不断写入,磁盘hfile文件就会越来越多,文件太多会影响hbase查询性能,主要体现在查询数据的io次数增加。为了优化查询性能,hbase会合并小的hfile以减少文件数量,这种合并hfile的操作称为compaction。

    minor compaction:指选取一些小的、相邻的hfile将他们合并成一个更大的hfile。默认情况下,minor compaction会删除选取hfile中的ttl过期数据。

    major compaction:指将一个store中所有的hfile合并成一个hfile,这个过程会清理三类没有意义的数据:被删除的数据(打了delete标记的数据)、ttl过期数据、版本号超过设定版本号的数据。

    #compact all regions in a table:压缩表中所有region major_compact 't1' #compact an entire region:压缩一个region major_compact 'r1' #compact a single column family within a region:压缩region中的一个列族 major_compact 'r1', 'c1' #compact a single column family within a table:压缩表中的一个列族 major_compact 't1', 'c1' ```cmd #compact all regions in a table:压缩表中所有region major_compact 't1' #compact an entire region:压缩一个region major_compact 'r1' #compact a single column family within a region:压缩region中的一个列族 major_compact 'r1', 'c1' #compact a single column family within a table:压缩表中的一个列族 major_compact 't1', 'c1' 与50位技术专家面对面20年技术见证,附赠技术全景图

    总结

    以上是凯发ag旗舰厅登录网址下载为你收集整理的5 hbase命令行接口的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图