Hbase(Hadoop Database)是一种高可靠性,高性能,面向列,可伸缩的分布式存储系统。
行键:每行都有唯一的行键,行键没有数据类型,它内部被认为是一个字节数组。
列簇:数据在行中被组织成列簇,每行有相同的列簇,但是在行之间,相同的列簇 不需要有相同的列修饰符。在引擎中,HBase将列簇存储在它自己 的数据文件中,所以,它们需要事先被定义,此外,改变列簇并不容易。
列修饰符:列簇定义真实的列,被称之为列修饰符,你可以认为列修饰符就是列本身。
版本:每列都可以有一个可配置的版本数量,你可以通过列修饰符的制定版本获取数据。
Hbase原理
1. hbase的存储文件为HFile,每个HFile对应一个Family,结构为key-value
2. 表数据的存储形式为region,region中存储连续的row-key
3. 当region大于一定值后,从中间进行拆分成两个子region
4. 每一台region server包含多个region
5. memstore用于数据缓存的内存区
6. WAL为数据操作日志
7. memstore定期将数据依据WAL写入到HFile
8. master slave
hdfs namenode datanode
mr JobTracker TaskTracker
hbase Master RegionServer
9. 服务端出错,会将正确的值插入到库中;客户端出错,都不会提交,因此在catch里进行调用table.flushCommits
Hbase的安装模式
本地模式:
参数文件
配置参数
参考值
hbase-env.sh
JAVA_HOME
/usr/java/jdk/
hbase-site.xml
hbase.rootdir
file:///usr/local/cloud/hbase/data
伪分布式模式:
参数文件
配置参数
参考值
.bash_profile
HBASE_HOME
/usr/local/cloud/hbase
hbase-env.sh
JAVA_HOME
/usr/java/jdk/
HBASE_MANAGES_ZK
true
hbase-site.xml
hbase.rootdir
hdfs://192.168.56.81:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
192.168.56.31
dfs.replication
1
regionservers
localhost
全分布模式
参数文件
配置参数
参考值
.bash_profile
HBASE_HOME
/usr/local/cloud/hbase
hbase-env.sh
JAVA_HOME
/usr/java/jdk/
HBASE_MANAGES_ZK
true
hbase-site.xml
hbase.rootdir
hdfs://192.168.56.31:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
192.168.56.31
dfs.replication
2
hbase.master.maxclockskew
180000
regionservers
192.168.56.33
192.168.56.4
常用配置
hbase.client.write.buffer
20971520
本地缓存大小(字节),当达到该大小量时,进行提交操作
hbase.regionserver.lease.period
180000
设置每一次scan的超时时间
常用命令
创建table
create 'testtable','cf1','cf2'
# 为列族cf1和cf2指定保存的版本数量
create 'testtable',{NAME=>'cf1',VERSIONS=>3},{NAME=>'cf2',VERSIONS=>3}
插入数据
put 'testtable','r1','cf1:c1','v1'
put 'testtable','r1','cf1:c2','v2'
put 'testtable','r1','cf2:c3','v3'
put 'testtable','r1','cf2:c4','v4'
开启插入数据本地缓存 false开启 true关闭
setAutoFlush(false)
isAutoflush()
flushCommits()
设置本地缓存大小(单位字节)
setWriteBufferSize()
getWriteBufferSize()
判断数据是否存在,只返回布尔值
boolean exists(Get get)
getRowOrBefore
当rowkey存在时,直接输出
当rowkey不存在时,输出前一个
Result res = table.getRowOrBefore("r3".getBytes(), "cf1".getBytes());
查询数据
scan 'testtable'
# 查看三个版本以内的数据
scan 'testtable',{VERSIONS=>3}
get 'testtable','r1'
删除数据
delete 'testtable','r1','cf2:c4'
删除表
disable 'testtable'
drop 'testtable'
设置返回的行数
scan.setCaching(num)
设置返回行的列数
scan.setBatch(num)
hbase 行键设计原则 hbase的行健是什么意思
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HBASE行键在哪里看 hbase行健列键概念
HBase是一个NoSQL的数据库产品,用于解决海量数据的毫秒级简单查询的问题. HBase的特点: 
HBASE行键在哪里看 大数据 python 数据库 字段 -
HBase的行健是 hbase 行锁
HBase客户端的行锁会对相同rowkey的读写造成很大影响,同一个进程并发更新rowkey的计数有可能造成阻塞(场景 热门短链点击增加 热门微博评论数).
HBase的行健是 Hbase java apache hadoop -
hbaseshell 行键模糊查询 hbase行键是什么
数据模型的基本概念HBase 中的数据被存储在表中,具有行和列,是一个多维的映射结构。本节将对与 HBase 数据模型相关的基本概念进行统一介绍。,
hbaseshell 行键模糊查询 hbase hadoop 大数据 数据