HBase介绍,工作原理,增删改查。
简介:
HBase是一个分布式的、面向列的开源数据库,一个结构化数据的分布式存储系统,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。利用Hadoop HDFS作为其文件存储系统。
由Hive和mysql作为引子来介绍HBase
Mysql和Hive,都是用来管理数据的,但是有区别。读写速度上,mysql很快,hive因为底层实mapreduce所以速度没有mysql快。mysql能进行文件的修改,而hive则不行。数据仓库管理软件,历史数据统计,构建数据仓库,运算能力强。
mysql为什么不用理构建数据仓库,容量问题,hive存储在hdfs中容量大。mysql适合联机事务处理:交互性强,在线实时。
HBase可以快速实时操作数据。CRUD,也可以构建联机事务处理。Nosql数据库。
HBase的特性:
- 数据的持久化存储基于HDFS--存储容量随时在线扩容
- CRUD的功能模块:分布式系统。---分布式数据库系统
- NoSql表结构:表明、rowkey(行键唯一标识),列族(可以好多列)
- 同一数据可以多版本,查的话默认最新版。
- 插入的数据自动排序,先看行键,再看列族,再看列名key的字典顺序。
- 没有数据类型,都是二进制数组,在hbase内部。byte[] rowkey key value 表名 列族名
HBase表结构:
建一个表如果一直往里面放数据,数据很大,查的时候就慢了,都往一台表中查,请求很多的时候效率很低。
多做几台服务器?cli请求找哪台?-->服务器分任务,每个服务器负责表中的一部分,按照行键的范围-->region0,1,23...
客户端查的时候按照行键去找相应的服务器(region)-->最终也得去hdfs中查(实际数据存储在那里)。
如果都去一个文件找数据,底层文件也是在block中,某个datanode还会被频繁请求,吞吐有限。---region也是有目录的,
而且列族也是有目录的,达到分散存储,不会平凡请求一个datanode。
HBase表的数据存在哪?HDFS,服务器只是帮用户操作数据,只做逻辑功能操作。其实这个服务器就是region server。
某个region server只能管一个region?可以管理很多个region(同一个表或者不同表),不管哪个表都分成若干个region,看服务器能力
某台机器挂了怎么办?---master 角色,不负责查数据,只负责监控server,
master如何知道server状态----用zookeeper,master监听server状态
master挂了怎么办 ?如果server正常依然可以查数据,不经过master。
hbase两种角色:
- master:负责监控region server。
- region server :负责数据的CRUD ,一般部署到datanode,查数据可能不经过网络。
如果有一台region server挂了,master会把挂掉的region的任务交给其他region,
客户端找数据怎么知道在哪台region server??找meta表(记在了系统表里,在某台region server中),cli怎么知道meta表在哪里?zookeeper有何数据节点(meta-region-server),放了meta表放在了那个机器。
master和standby master组成解决单点故障。HA
根据 Meta 表中的数据,可以确定客户端所访问的 RowKey 所处的实际位置。
HBase工作机制图:
安装配置:1解压安装包2修改配置文件3
如何使用hbase:
注意没有sql,help查看哪些命令,
建表:create ‘表明’,‘列族名’,‘列族名’ ....
插数据:put ‘表名’,‘行键’,‘列族名:key’,‘value’
查询:get ‘表’,‘行键’,‘列族:key’ 只写行键的话,查询列中所有内容
扫描:scan ‘表’ 全表扫描
delete:delete ‘表’,‘行键’,‘列族:key’
deleteall ‘表’,‘行键’ 删一行
删表:drop ‘表’ 得先停用。disable ‘表’
每个region都分配 一部分内存空间,热数据放在里面。
内存缓存热数据:插入数据量小的时候放在内存里面,刚刚被访问的数据叫热数据。如果宕机咋办?不会丢数据,对数据操作会记日志里(WAL)面到hdfs。
如果满了,写入到hdfs中,退出服务的时候也会写入到hdfs中。
以下为HBase其他博客相关介绍:https://blog.****.net/t894690230/article/details/80515426