HBase 笔记2
Hadoop 服务启动顺序: zookeeper -》journalnode-》namenode -> zkfc -> datanode
HBase Master WEB控制台: <Master>:60010
如果RegionServer正常启动,但是连接不上Master自己又停止,而Master/Region Server之间网络连接,端口可见性正常,多半是/etc/hosts内映射不正确或/etc/sysconfig/network内hostname设置有问题
HBase自带一个命令行工具 hbase shell
进入hbase 命令行: $HBASE_HOME/bin/hbase shell
创建表: create 'test','cf' ====>创建表test,包含一个列族cf
查看库中有哪些表: list
查看表的属性:describe 'test'
建新列族: alter 'test','cf2' ====>新增列族cf2
插入数据:put 'test','row1','cf:name','jack' 向表test的行键为row1的行的cf列族下的name列插入数据,值为Jack
修改HBase保留的版本数:alter 'test',{NAME=>'cf',VERSION=>5} ===>设置表test的cf列族保留版本数为5,默认为1(即使单元格插入多个版本数据,也只会保留最新版本)
查看数据:get 'test','row2',{COLUMN=>'cf:name',VERSION=>3} ====>获取表test,row2行,cf列族下name列的最近3个版本数据
get 'test','row7','cf:name' ===》显示某个单元格的全部数据
遍历表的全部数据: scan '表名'
遍历表的部分数据:scan 'test',{STARTROW=>'row3'} ===>显示所有rowkey大于且等于row3的数据
scan 'test',{ENDROW=>'row4'} ====>显示所有rowkey小于row4的数据
删除数据: delete 'test','row4','cf:name' ====>删除表test中的row4行中的cf:name单元格数据
根据版本删除数据:delete 'test','row1','cf:name',ts ====>删除ts版本之前的所有版本数据(包含这个版本)
HBase删除数据并不是真正删除数据,而是放置了一个墓碑标记,导致这个版本+之前的版本都不可见
删除整行数据: deleteall 'test','row3' ===>删除test表的row3的整行数据
查看打上墓碑标记的数据:scan 'test',{RAW=>true,VERSION=>5} ===>查询最近的5个版本的数据,墓碑隐藏数据也显示
停用表: disable 'test'
删除表: 删除表之前需要停用表
drop 'test'
通用命令:
查看集群状态 status 'summary' | 'simple' | 'detailed'
查看HBase版本: version
查看当前用户: whoami
查看表操作信息: table_help
表操作:
list 列出所有的表名
alter 更改表/列族的定义
1)建立/修改列族
列族属性 BLOOMFILTER REPLICATION_SCOPE MIN_VERSIONS COMPRESSION TTL BLOCKSIZE IN_MEMORY IN_MEMORY_COMPACTION BLOCKCACHE KEEP_DELETED_CELLS DATA_BLOCK_ENCODING
CACHE_DATA_ON_WRITE CACHE_DATA_IN_L1 CACHE_BLOOMS_ON_WRITE CACHE_INDEX_ON_WRITE EVICT_BLOCKS_ON_CLOSE PREFETCH_BLOCKS_ON_OPEN ENCRYPTION ENCRYPTION_KEY IS_MOB_BYTES
MOB_THRESHOLD_BYTES
格式: alter '表名',NAME=>'列族',属性名1=>属性值1,....
2)修改/建立多个列族
格式:alter '表名',{NAME=>'列族',属性名1=>属性值1,....},{NAME=>'列族',属性名1=>属性值1,....}
3)删除列族:
格式: alter '表名',‘delete’=>‘列族名’
4)修改表级别的属性
格式:alter '表名',属性名1=>属性值1,......
5)设置表的配置
格式 : alter '表名',CONFIGURATION => {'配置名' => '配置值'}
alter '表名',{NAME=> '列族名',CONFIGURATION => {'配置名' => '配置值'}}
例: alter 'test',{NAME=>'cf1',CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '15'}}
6) 删除表级别的属性
格式:alter '表名',METHOD=>'table_att_unset',NAME=>'属性名'
7)同时执行多个命令
格式:alter '表名‘,command1,command2,command3,....
create 建立新表
格式:create '表名','列族1',’列族2‘,....
create '表名’,{NAME=>'列族1',属性名=>属性值},{NAME=>'列族2',属性名=>属性值},....
alter_status 查看表的各个Region的更新状况
alter_async 异步更新表
格式:alter_async '表名',参数列表
describe 输出表的描述信息
格式:describe '表名‘ 或 desc '表名'
dsiable 停用指定表
格式:disable '表名'
disable_all 使用正则表达式来停用多个表
格式:disable_all '正则表达式'
is_disabled 检测指定表是否被停用
格式: is_disabled ’表名‘
drop 删除指定表
格式 drop '表名'
drop_all 通过正则表达式删除多个表
格式:drop_all 正则表达式
enable 启动指定表
格式:enable '表名'
enable_all 通过正则表达式启动指定表
格式:enable_all '正则表达式'
is_enabled 判断表是否启用
格式: is_enabled '表名'
exists 判断表是否存在
格式:exists ’表名‘
show_filters 列出所有过滤器
get_table 把表名转换成一个对象
格式: 变量 = get_table '表名'
locate_region 定位传入的行键对应的行在哪个Region里面
格式:locate_region '表名',’行键‘
数据操作:
scan 按照字典排序遍历表的数据
格式:scan '表名'
scan '表名',{COLUMNS => ['列1 ',....]} 遍历指定列
scan ‘表名' {STARTROW => '起始行键',END_ROW =》 ’结束行键‘}
scan '表名',{LIMIT => 行数量} 指定返回的行数量
scan '表名',{TIMERANGE => [最小时间戳,最大时间戳]} ===》包含最小时间戳,最大不包含
scan '表名',{VERSIONS => 版本数} 显示多个版本值
scan '表名',{RAW =》 true ,VERSIONS => 版本数} 显示原始单元格记录
scan '表名',{FILTER => '过滤器'}
get 通过行键获取某行记录
格式: get '表名',’行键‘
count 计算表的行数
格式: count ’表名‘
1)指定计算步长
格式:count '表名',INTERVAL => 行数计算步长
2)指定缓存加速计算过程
格式: count '表名',cache => 缓存条数
INTERVAL 和CACHE可以同时使用
delete 删除某列数据
格式:delete ’表名‘,’行键‘,’列名‘ 【,时间戳】
deleteall 删除整行数据
格式:deleteall ’表名‘ ,’行键‘
deleteall '表名',’行键‘,‘列名’
deleteall '表名',‘行键’,‘列明’,时间戳
incr 为计数器单元格的值加一,若单元格不存在则创建
格式: incr '表名',‘行键’,‘列名’【,加减值】
put 新增记录 or 设置属性
格式:put '表名',‘行键’,‘列名’,‘值’【,时间戳】
通过查询hbase:meta获取某个region的信息,如服务器的标识码