大数据-HBase

HBase

Apache HBase是一个一个开源的,分布式的,可扩展的非关系数据库

HBase的集群角色:HMasterHRegionServer

HBase架构图

在这里插入图片描述

  1. Client访问HBase上的数据并不需要HMaster参与
  2. 寻址访问ZooKeeper和HRegionServer
  3. 数据读写访问HRegionServer
  4. HMaster仅仅维护Table和Region的元数据信息
  5. Table的元数据信息保存在ZooKeeper上
  6. 一个HRegionServer会有多个HRegion和一个HLog
  7. HRegionServer中有基于LRU的Block Cache机制
  8. 每个Table一般只有一个HRegion,Table的每个Column对应一个Store,每个Store都会有一个MemStore和0或多个StoreFile,每个StoreFile都会对应一个HFile,HFile就是实际的存储文件
HMaster
  • 对RegionServer监控
  • 处理一些元数据的变更
  • 对RegionServer进行故障转移
  • 空闲时对数据进行负载均衡
  • 对region进行管理
  • HDFS上的垃圾文件回收
  • 发布位置到客户端借助于zookeeper
HRegionServer
  • 存储HBase实际的数据
  • 刷新缓存数据到HDFS
  • 处理Region
  • 可以进行压缩
  • 对Hlog进行维护
  • 对region分片
HRegion
  • 每个表一般只有一个HRegion
  • 当HRegion的某个ColumnFamily达到一个阀值(默认256M)时就会分成两个新的HRegion
Store
  • 每一个HRegion由一个或多个Store组成
  • 每个ColumnFamily对应一个Store
  • 一个Store由一个MemStore和0或者多个StoreFile组成
  • HBase以Store的大小来判断是否需要切分HRegion
MemStore
  • MemStore 是放在内存里,保存的数据格式为key-value
  • 当MemStore的大小达到一个阀值(默认64MB)时,MemStore会被Flush到StoreFile文件
StoreFile
  • MemStore内存中的数据溢出写到StoreFile文件
  • StoreFile底层是以HFile的格式保存
HFile

在这里插入图片描述

  • 二进制格式文件
  • 不定长的,长度固定的是Trailer和FileInfo
  • Trailer中有指针指向其他数据块的起始点
  • FileInfo记录了文件的一些meta信息,不能被压缩
  • 每个Data块的大小可以在创建一个Table的时候通过参数指定(默认块大小64KB)
  • 每个Data块除了开头的Magic,就是一个个Key-Value对拼接而成
  • Magic是一些随机数字,为了防止数据损坏
  • 大号的Block有利于顺序Scan,小号的Block利于随机查询
  • Data Block和Meta Block可以被压缩,大大减少网络IO和磁盘IO
HLog
  • HLog记录数据的操作
  • 一旦RegionServer宕机,就可以从Log中进行恢复
定位HRegion的三层结构
  1. 通过zk里的文件/hbase/rs得到-ROOT-表的位置。-ROOT-表只有一个region
  2. 通过-ROOT-表查找.META.表的第一个表中相应的HRegion位置。其实-ROOT-表是.META.表的第一个region,META.表中的每一个Region在-ROOT-表中都是一行记录
  3. 通过.META.表找到所要的用户表HRegion的位置。用户表的每个HRegion在.META.表中都是一行记录

安装HBase集群

(1)解压hbase-2.1.4-bin.tar.gz压缩包

tar -xvzf hbase-2.1.4-bin.tar.gz

(2)配置conf文件夹下的hbase-env.sh文件

export JAVA_HOME=/usr/local/java/jdk1.8.0_11
export HBASE_MANAGES_ZK=false

(3)配置conf文件夹下的hbase-site.xml文件

<configuration>
        <!-- 设置NameNode所在位置,通过rootdir设置,也就是设置HDFS中存放的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://hadoop1:9000/hbase</value>
        </property>
        <!-- 是否开启集群 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <!-- 默认端口为60000 -->
        <property>
                <name>hbase.master.port</name>
                <value>16000</value>
        </property>
        <!-- zookeeper集群的位置 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
        </property>
        <!-- hbase的云数据信息存储在zookeeper的位置 -->
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/usr/local/zookeeper/data</value>
        </property>
</configuration>

(4)配置conf文件夹下的regionservers文件

# 配置集群服务器名
hadoop1
hadoop2
hadoop3

(5)软链接core-site.xml和hdfs-site.xml

ln -s /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/core-site.xml
ln -s /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/hdfs-site.xml

(6)替换lib文件夹下的hadoop的jar包

原:

在这里插入图片描述

新:

# 移除lib文件夹下hadoop的jar包
rm -f hadoop-*

在这里插入图片描述

(7)ssh发送到其他服务器

scp -r hbase hadoop2:/usr/local/
scp -r hbase hadoop3:/usr/local/

(8)启动HBase

# 同时启动hmaster和regionserver
start-hbase.sh
# 单个启动
hbase-daemon.sh start master
hbase-daemon.sh start regionserver
# 交互式启动
hbase shell

(9)输入网址IP地址:16010

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值