HBase

背景

  1. Nosql是非关系数据库的一种概念,目前比较成熟优秀的Nosql产品有HBase , Mongodb , Redis 等
  2. HBase是Hadoop平台下数据存储引擎,它能够为大数据提供实时的读/写操作,但是根据实际情况来看,HBase在实时的数据写入性能上优于查询性能。HBase具备开源、分布式、可扩展性以及面向列的存储特点,使得HBase可以部署在廉价的PC服务器集群上处理大规模的海量数据
  3. HBase的存储方式有2种,一种是使用操作系统的本地文件系统,另外一种则是在集群环境下使用Hadoop的HDFS,相对而言,使用HDFS将会使数据更加稳定

概述

  1. HBase是一个高可靠性、高性能、分布式的、可伸缩、面向列的开源数据库
  2. 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务
  3. HBase是基于Google BigTable模型开发的,典型的key/value系统;
  4. Hbase主要用来存储非结构化和半结构化的松散数据。
  5. 从逻辑上讲,HBase将数据按照表、行和列进行存储。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
  6. 行式数据库和列式数据库:
    在这里插入图片描述
    HDFS和HBase:
    在这里插入图片描述

HBase数据模型

在这里插入图片描述

HBase的存储机制

在这里插入图片描述在这里插入图片描述

HBase架构

在这里插入图片描述

Zookeeper
  1. 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
  2. 所有Region的寻址入口
  3. 实时监控Region server的上线和下线信息。并实时通知给Master
  4. 存储HBase的schema和table元数据
HMaster

HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:

  1. 管理用户对Table的增、删、改、查操作
  2. 管理HRegionServer的负载均衡,调整Region分布
  3. 在Region Split后,负责新Region的分配
  4. 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移
HRegionServer
  1. HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
  2. HRegionServer内部管理了一系列HRegion对象,HRegion中由多个HStore组成。每个HStore对应了一个CF(列族)
  3. HRegionServer负责切分运行过程中变得过大的region
HBase Region
  1. Table中所有行都按照row key的字典序排列;
  2. Table在行的方向上分割为多个Region,每个region会保存一个表里面某段连续的数据
  3. Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region
  4. Table中的行不断增多,就会有越来越多的region,这样一张完整的表被保存在多个RegionServer上。
  5. 当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理
  6. 相当于一个表
HStore

一、HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。
二、Memstore 与 storefile

  1. 一个region由多个store组成,一个store对应一个CF(列族)
  2. store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile
  3. 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(major),形成更大的storefile
  4. 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
  5. 客户端检索数据,先在memstore找,找不到再找storefile

搭建HBase伪分布

操作
  1. 将 hbase-0.98.12.1-hadoop2-bin.tar.gz 上传到node01的root目录下
  2. tar -zxvf hbase-0.98.12.1-hadoop2-bin.tar.gz -C /opt/hpe/ --> cd /opt/hpe --> mv hbase-0.98.12.1-hadoop2/ hbase-0.98 --> vi /etc/profile --> export HBASE_HOME=/opt/hpe/hbase-0.98 --> PATH最后追加:$HBASE_HOME/bin --> . /etc/profile --> 输入hbase测试
  3. cd conf --> vi hbase-site.xml --> 将以下添加到configuration中
 <property>
    <name>hbase.rootdir</name>
    <value>file:///home/testuser/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
  1. 启动hbase : start-hbase.sh
  2. 进入hbase客户端 :hbase shell --> help帮助文档 --> create ‘psn’,‘cf’(创建表,指定至少一个列族cf,语句结尾无需加分号)–> list(查看表)–> put ‘psn’,‘111’,‘cf:name’,‘zhangsan’(向表里添加数据)–> scan ‘psn’(全表扫描查询)–> disable ‘tbl’(禁用表)–> drop ‘tbl’(删除表)–> get ‘psn’,‘111’,‘cf:age’(查询某一列数据)–> quit(退出)

搭建HBase完全分布式环境

在这里插入图片描述

准备
  1. 环境准备:hostname hosts iptables
  2. 时间同步:使用时间服务器 ntp:ntpdate yum install ntp -y
  3. 免密钥
  4. 配置环境变量
  5. 修改配置文件
    ①hbase-env.sh (JAVA_HOME、Zookeeper)
    ②hbase-site.xml (指定hbase存储数据目录、是否启用集群模式、指定ZK)
    ③regionservers 指定那几台服务器充当regionservers (node02 node03 node04)
    ④backup-master : 指定备用的master 从而实现HA高可用
    ⑤拷贝hdfs中的一个配置文件 hdfs-site.xml 拷贝到HBase配置目录中
  6. 分发配置文件 :保证集群中的每一台服务器配置相同
  7. 启动hbase : start-hbase.sh
  8. 停止hbase : stop-hbase.sh
操作步骤
  1. rm -rf hbase-0.98/(node01删除伪分布文件,重新解压)–> tar -zxvf hbase-0.98.12.1-hadoop2-bin.tar.gz -C /opt/hpe/ --> cd /opt/hpe --> mv hbase-0.98.12.1-hadoop2/ hbase-0.98 --> scp -r hbase-0.98/ node02:pwd (给node02~04均分发)
  2. 在node01~04中 yum install ntp -y(下载时间同步器)–> ntpdate ntp1.aliyun.com
  3. 修改hbase-env.sh:cd /opt/hpe/hbase-0.98/conf --> vi hbase-env.sh --> 修改JAVA_HOME路径,另外修改并保存 export HBASE_MANAGES_ZK=false
  4. 修改hbase-site.xml : vi hbase-site.xml --> 粘贴下面配置到里面
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
<value>node02,node03,node04</value>
</property>

–> vi regionservers --> 里面内容改为node02 node03 node04(各个节点之间要换行) --> touch backup-masters (创建文件) --> vi backup-masters --> node02 (添加上备用节点) --> cp /opt/hpe/hadoop-2.7.5/etc/hadoop/hdfs-site.xml ./ --> scp ./* node02:pwd(分发给node02~node04)
5. node01中: start-hbase.sh–> hbase shell --> create ‘member’,‘member_id’,‘address’,‘info’ --> desc ‘member’ --> alter ‘member’,{NAME=>‘member_id’,METHOD=>‘delete’}(删除列族) --> (判断表是否enable)–> put ‘member’,‘hp’,‘info:age’,‘24’ (插入数据) --> scan ‘member’(查询整个表数据)
6. 停掉服务:stop-hbase.sh(node01)–> 启动hbase服务 start-hbase.sh --> jps --> 杀掉node01中Hbase的Master进程(查看主备切换) --> stop-hbase.sh

补充
  1. 分布式说明可以搭建集群
  2. Google公布的论文:GFS MapReduce BigTable --> HBase
  3. ntp1.aliyun.com : 免费的时间服务器网址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值