就是一数据库
但是,是非关系型数据库(NoSql)【关系型数据库 vs 非关系型数据库(自行了解)】
特点
- 高可靠
- 高并发 读写
- 可伸缩
- 异构建
- 面向列
解释面向列:
数据库存储分两种 行存储 、列存储
总结:
行存储适合小数据量写,列存储适合大数据量读
总结
Hbase适合海量数据存储
快速随机访问
大量写操作应用
非结构化信息 -》Hbase -》结构化存储
Hbase数据模型
从逻辑上理解几个概念:
image.png行健RowKey:一定是按照字节顺序存储的,方便查询 byte array
列族ColumnFamily:类型
列Column:元数据
版本VersionNumber:默认值时间戳 Long类型
值Value:就是字面量
拆分理解:
image.png上面的表存储了2行记录,a行,b行
a行有2个列族, cf1,cf2,
cf1列族有2个列,"bar" , "foo"
bar列有2个版本,583,261
583版对应着1个值 7
这就是三维有序
按照三维去排序,前两维是字节顺序,第三维是倒序
从物理上理解存储
image.png一张表,是
image.pngregion:
按行划分region,如上图1-50行是regionA,50-100行是regionB
会按照大小分割,每张表一开始只有一个region,随着记录逐渐增多,达到一个阈值,等分成2个region
逻辑概念 物理概念
Region Hregion
RegionServer机器 HregionServer
HregionServer 包含很多 Hregion
Hregion 包含很多 Hstore
Hstore 由2部门组成 Memstore StoreFile 内存与磁盘
Hsore 与 column family 对应
架构
client、zookeeper 、hmaster、hregionServer
hmaster:负载均衡,管理分配hregion,管理table元数据,权限控制
hregionServer:存储hregion,读写hdfs管理table数据
hregionServer上可以存1000个hregion
zk负责与master,与regionserver交互
client缓存rowkey -> hregion 关系
memstore写缓存,每个cf上都有自己memstore,因为cf与hstore对应
blockcache读缓存,
hlog避免数据丢失,在hregion共享,先写hlog(WAL),再写memstore
每次写log时,首先HbaseClient 寻址,.Meta 对应着 hregionServer 的 region,
检查数据是否存在memstore中,存在就退出
不存在先写hlog(hdfs),然后写memstore,写成功后返回
memstore益写到storefile ,导致storefile 会冗余,通过时间戳或者标记等字段storefile会有combine操作,
表结构设计
rowkey
目的:减少数据倾斜
策略:逆排序,hash(md5,crc32)
cf
策略:尽量少,1-2个,因为flush与region合并时,触发基本单位是region级别
这个flush是指memstore flush filestore
实践
安装
0.98.6
①:安装
tar zxvf hbase-0.98.6-hadoop2.tar.gz
②:配置./bashrc
export HBASE_HOME=/opt/hbase-0.98.6-hadoop2
export PATH=$PATH:$HABSE_HOME/bin
3:配置conf/hbase.env.sh
export HBASE_MANAGES_ZK=true
export JAVA_HOME=/usr/local/src/jdk1.8.0_181
④:配置conf/hbase.site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value> false表示单机模式,true表示分布式模式
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
5:配置conf/regionservers
slave1
slave2
⑥:分发到othersNode
scp -rp hbase-0.98.6-hadoop2 slave1: /opt/
scp -rp hbase-0.98.6-hadoop2 slave2: /opt/
⑦:启动hbase
./start-hbase.sh
进程验证:jps验证hmaster、hregionServer进程
页面验证:http://master:60010/master-status
命令行验证:./bin/hbase shell 进入终端 status
shell操作
python操作
本地操作
集群操作
java操作
本地操作
网友评论