这是我参与「第四届青训营 」笔记创作活动的第8天
简介
HBase是一个分布式的开源列式存储数据库
HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
HBase的架构设计
- HMaster: 负责元数据的管理、集群的调度和保活。
- RegionServer: 提供读写服务,每个实例负责互相不重叠的行键区间内的数据。
- ThriftServer: 提供Thrift API的读写的代理层。
HBase同时对HDFS和ZooKeeper组件有一定的依赖:
- ZooKeeper: 负责HMaster的选举、任务分发、元数据变更管理等。
- HDFS: 作为HBase的数据存储底座。
RegionServer 包含下面组件:
- HFile: 又称StoreFile,即Hbase在HDFS存储数据的文件格式,其内数据按rowkey字典有序排序。
- Memstore: 基于SkipList数据结构实现的内存态存储,定期批量写入硬盘。
- Write-Ahead Log: 顺序记录写请求到持久化存储,用于故障恢复内存中丢失的数据。
HBase对大数据的支撑
- 水平扩展能力
通过增加 RegionServer 实例的数量,来分配部分region到新的实例。这样做的好处是能够让扩展的过程很平滑,无需移动实际的数据,以及可用性的影响事件很短,不会过分影响用户。
- Region热点切分
通过热点切分能够很好的缓解数据压力,HBase原生提供很多种切分策略,切分点的选择却是相同的 。
- 找到表中那个region的数据最大
- 找到最大region中哪一个column Famliy最大
- 找到最大column Famliy中最大的HFile
- 找到HFile最中间的Data Block
- 使用以上Data Block第一条KeyValue的RowKey作为切分点
- 碎片整合
当某些Region中的数据量很小,通过合并 相邻的Region 能整合优化数据分布,整合过程不移动实际的数据,通过reference file 定位原region的文件。
- 负载均衡
通过定期巡检各个RegionServer上的Region数量,来保证region的数量均匀分布在各个RegionServer上。
- HMaster高可用
HMaster通过多实例基于Zookeeper选主实现高可用。
安装Hbase
1 上传解压安装包
scp hbase压缩包 用户@机器IP:/上传/目录
tar -xzvf hbase压缩包 -C /解压/目录
2 修改配置文件
修改hbase-env.sh:
cd hbase-2.4.13/conf/
vim hbase-env.sh
export JAVA_HOME=/JDK安装路径
export HBASE_MANAGES_ZK=false
修改hbase-site.xml:
vim hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.19.5:8020/hbase</value>
</property>
<!--false单机模式、true分布式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--zookeeper位置-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.19.5:2181</value>
</property>
<!--zookeeper快照存储位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/sjj/install/apache-zookeeper-3.7.1-bin/data</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
3 配置环境变量
vim /etc/profile
# 配置HBase环境
export HBASE_HOME=/home/sjj/install/hbase-2.4.13
export PATH=$PATH:${HBASE_HOME}/bin:${HBASE_HOME}/sbin
source /etc/profile
4 复制jar包到lib
cd hbase-2.4.13/lib/client-facing-thirdparty
cp htrace-core4-4.2.0-incubating.jar ../lib
5 修改regionservers
cd hbase-2.4.13/conf
vim regionservers
你的节点机器
6 分发HBase包
scp -r hbase包 用户名@机器IP:/分发/目的地
分发完之后记得还要为分发的机器设置环境变量
启动HBase
# 注意要先启动zookeeper
start-dfs.sh
start-hbase.sh
hbase shell
HBase Shell操作
\