欢迎投稿

今日深度:

hbase常用shell命令,hbaseshell

hbase常用shell命令,hbaseshell


一.启动hbase shell

bin/hbase shell  

二.查看服务器状态:
hbase(main)> status  

三.查看hbase版本:
hbase(main)> version  

四.hbase表相关操作:
1.查看所有表:
hbase(main)> list

2.创建表
base(main)> create 'table1',{NAME=>'cf1',VERSIONS=>2},{NAME=>'cf2',VERSIONS=>2}

3.删除表
base(main)> disable 'table1'
base(main)> drop 'table1'

4.查看表结构:
base(main)> describe 'table1'

5.修改表(修改表必须先disable表):
base(main)> disable 'table1'
hbase(main)> alter 'table1',{NAME=>'cf1',TTL=>'15552000'},{NAME=>'cf2',TTL=>'15552000'}
base(main)> enable 'table1'

6.表数据的增删查改:
添加数据:
hbase(main)> put 'table1','rowkey001','cf1:col1','value01'

7.查询数据:
hbase(main)> get 'table1','rowkey001','cf1:col1'
hbase(main)> get 'table1','rowkey001', {COLUMN=>'cf1:col1'}

8.扫描表:
hbase(main)> scan 'table1',{COLUMNS=>cf1:col1,LIMIT=>5} #可以添加STARTROW、TIMERANGE和FITLER等高级功能

9.查询表中的数据行数:
语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
hbase(main)> count 'table1',{INTERVAL => 100, CACHE => 500}

10.删除数据:
hbase(main)> delete 'table1','rowkey001','cf1:col1'
hbase(main)> truncate 'table1'

五.权限管理:
语法 : grant <user> <permissions> <table> <column family> <column qualifier> 参数后面用逗号分隔,权限用五个字母表示: "RWXCA".
分别是:READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
hbase(main)> grant 'table1','RW','cf1'

查看权限:
hbase(main)> user_permission 'hdfs'

收回权限:
hbase(main)> revoke 'hdfs','table1'

六.维护操作:
1.手动major_compact,进行操作前先将balancer关闭,操作完成后再打开balancer:
hbase(main)> balance_switch false
hbase(main)> major_compact 'table1'
hbase(main)> balance_switch true
通常生产环境会关闭自动major_compact(配置文件中hbase.hregion.majorcompaction设为0),选择一个晚上用户少的时间窗口手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期

2. flush表
hbase(main)> flush 'table1'
将所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件

3.balance_switch
hbase(main)> balance_switch true
配置master是否执行平衡各个regionserver的region数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance

4.重启一个regionserver
bin/graceful_stop.sh --restart --reload --debug nodename
这个操作是平滑的重启regionserver进程,对服务不会有影响,他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来,但我们修改一个配置时,可以用这种方式重启每一台机子,这个命令会关闭balancer,所以最后我们要在hbase shell里面执行一下balance_switch true,对hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过bin/hbase-daemon.sh stop regionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的请求会全部失败

5.regionserver关闭下线
bin/graceful_stop.sh --stop  nodename
和上面一样,系统会在关闭之前迁移所有region,然后stop进程,同样最后我们要手工balance_switch true,开启master的region均衡

6.检查region是否正常以及修复:
检查,有时集群正在启动或region正在做split操作,会造成数据不一致
bin/hbase hbck  
bin/hbase hbck -details 
bin/hbase hbck 'table1' 
bin/hbase hbck -fix  #修复

7.手动merge region:
找到需要合并的region的encoded name,
hbase(main)> merge_region ‘region1’,’region2’

8.手动分配region:
如果发现台regionServer资源占用特别高,可以检查这台regionserver上的region是否存在过多比较大的region,通过hbase shell将部分比较大的region分配给其他不是很忙的regions server:
move ‘regionId’,’serverName’
例:
hbase(main)> move ‘54fca23d09a595bd3496cd0c9d6cae85‘,‘vmcnod05,60020,1390211132297‘

七.hbase的迁移
1.copytable方式
bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=zookeeper1,zookeeper2,zookeeper3:/hbase 'table1'
这个操作需要添加hbase目录里的conf/mapred-site.xml,可以复制hadoop的过来

2.Export/Import
bin/hbase org.apache.hadoop.hbase.mapreduce.Export table1 /user/testtable [versions] [starttime] [stoptime]
bin/hbase org.apache.hadoop.hbase.mapreduce.Import table1 /user/testtable
export支持多版本,比copytable更实用一些

3.直接拷贝hdfs对应的文件
首先拷贝hdfs文件,如:
bin/hadoop distcp hdfs://srcnamenode:9000/hbase/testtable/ hdfs://distnamenode:9000/hbase/testtable/
然后在目的hbase上执行:
bin/hbase org.jruby.Main bin/add_table.rb /hbase/testtable
生成meta信息后,重启hbase.
这个操作是简单的方式,操作之前可以关闭hbase的写入,执行flush所有表(上面有介绍),再distcp拷贝,如果hadoop版本不一致,可以用hftp接口的方式,我推荐使用这种方式,成本低


本文参考:http://www.mamicode.com/info-detail-359862.html

www.htsjk.Com true http://www.htsjk.com/hbase/35712.html NewsArticle hbase常用shell命令,hbaseshell 一.启动hbase shell bin/hbase shell 二.查看服务器状态: hbase(main) status 三.查看hbase版本: hbase(main) version 四.hbase表相关操作: 1.查看所有表: hbase(main) list 2.创建表...
相关文章
    暂无相关文章
评论暂时关闭