HBase|青训营笔记

195 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

简介

HBase是一个分布式的开源列式存储数据库

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库

HBase的架构设计

  • HMaster: 负责元数据的管理、集群的调度和保活。
  • RegionServer: 提供读写服务,每个实例负责互相不重叠的行键区间内的数据。
  • ThriftServer: 提供Thrift API的读写的代理层。

HBase同时对HDFS和ZooKeeper组件有一定的依赖:

  • ZooKeeper: 负责HMaster的选举、任务分发、元数据变更管理等。
  • HDFS: 作为HBase的数据存储底座。

HBase.jpg

RegionServer 包含下面组件:

  • HFile: 又称StoreFile,即Hbase在HDFS存储数据的文件格式,其内数据按rowkey字典有序排序。
  • Memstore: 基于SkipList数据结构实现的内存态存储,定期批量写入硬盘。
  • Write-Ahead Log: 顺序记录写请求到持久化存储,用于故障恢复内存中丢失的数据。

HBase对大数据的支撑

  • 水平扩展能力

通过增加 RegionServer 实例的数量,来分配部分region到新的实例。这样做的好处是能够让扩展的过程很平滑,无需移动实际的数据,以及可用性的影响事件很短,不会过分影响用户。

  • Region热点切分

通过热点切分能够很好的缓解数据压力,HBase原生提供很多种切分策略,切分点的选择却是相同的

  1. 找到表中那个region的数据最大
  2. 找到最大region中哪一个column Famliy最大
  3. 找到最大column Famliy中最大的HFile
  4. 找到HFile最中间的Data Block
  5. 使用以上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操作

可以参考我之前写的博客

\