hbase常用shell命令,hbaseshell
一.启动hbase shell
bin/hbase shell
二.查看服务器状态:
hbase(main)> status 三.查看hbase版本:
hbase(main)> version 四.hbase表相关操作:
1.查看所有表:
hbase(main)> list2.创建表
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上的分布不均,这个时候需要手工的开启balance4.重启一个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/testtableexport支持多版本,比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
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。