HBase学习笔记 (壹)- HBase简介与环境部署 **

文章目录

  • HBase简介及其在大数据生态圈的位置
    • HBase简介
    • HBase在大数据生态中的位置
    • HBase与HDFS
    • HBase使用场景
  • Hbase数据存储模型及与关系型数据库的区别
    • CAP定理
    • ACID定义
    • Hbase核心概念
    • Hbase与传统关系型数据库的区别
    • Hbase数据模型
  • Hbase伪分布式集群安装
  • Hbase基础架构
    • HBase特点

HBase简介及其在大数据生态圈的位置

HBase简介

Apache HBase™是Hadoop数据库、分布式、可扩展、大数据存储。

使用Apache HBase™当你需要随机的,实时的大数据的读/写访问。这个项目的目标是在商品硬件集群上托管非常大的表——数十亿行X数百万列。Apache HBase是一个开源的、分布式的、版本化的、非关系型的数据库,模仿了谷歌的Bigtable: Chang等人为结构化数据构建的分布式存储系统。正如Bigtable利用了谷歌文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似于Bigtable的功能。

  • HBase是一个分布式的、面向列的开源数据库,
  • HBase在Hadoop之上提供了类似于Bigtable的能力
  • HBase不同于一般的关系数据库,它适合非结构化数据存储

BigTable是什么?

  • BigTable是一种压缩的高性能的高可扩展性的基于Google文件系统gfs的数据库。用于存储大规模的结构化数据;在扩展性和性能方面有很大的优势。

什么是面向列的数据库?

  • 它又叫列式数据库;把每一列的数据值放在一起进行存储;
    行式存储和列式存储:
    HBase学习笔记 (壹)- HBase简介与环境部署 **_第1张图片

为什么HBase适合非结构化数据存储?

结构化数据:可以用二维表格存储的
非结构化数据:比如图片文档和视频
HBase适合非结构化数据,存储查询都非常方便快捷

HBase在大数据生态中的位置

  • HBase是Apache基金会顶级项目
  • HBase基于Hadoop的核心HDFS系统进行数据存储,类似于Hive
  • HBase可以存储超大数据并适合用来进行大数据的实时查询

HBase与HDFS

  • HBase建立在Hadoop文件系统之上,利用了Hadoop的文件系统的容错能力
  • HBase提供对数据的随机实时读/写访问功能
  • HBase内部使用哈希表,并存储索引,可将在HDFS文件中的数据进行快速查找

HBase使用场景

  • 瞬间写入量很大,常用数据库不好支撑或需要很高成本支撑的场景
  • 数据需要长久保存,且量会持久增长到比较大的场景
  • HBase不适用于有join,多级索引,表关系复杂的数据模型

Hbase数据存储模型及与关系型数据库的区别

CAP定理

对于一个分布式计算系统不可能全部满足以下三点:hbase为cp类型;它的每一行有单个的regionserver、rowkey、多版本标签等组合来保证行的一致性。

  • 一致性(所有节点在同一时间具有相同的数据)
  • 可用性(保证每个请求不管成功或者失败都有响应,但不保证获取的数据为正确的数据)·
  • 分区容错性(系统中任意信息的丢失或失败不会影响系统的继续运作,系统如果不能在某一个时限内达成数据一致性,就必须在上面两个操作之间做出选择)

ACID定义

Hbase不支持严格的ACID ;只支持单个的行ACID

  • 原子性
    整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性
    一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
  • 隔离性
    隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
  • 持久性
    在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

Hbase核心概念

  • NameSpace:
    可以把NameSpace理解为RDBMS的“数据库”
  • Table:
    表名必须是能用在文件路径里的合法名字
  • Row:
    在表里面,每一行代表着一个数据对象,每一行都是以一个行键( Row Key )来进行唯一标识的,行键并没有什么特定的数据类型,以二进制的字节来存储
  • Column:
    HBase的列由Column family和Column qualifier组成 ,由冒号(:)进行进行间隔。比如family:qualifier
  • RowKey:
    可以唯一标识一行记录,不可被改变.
  • Column Family:
    在定义HBase表的时候需要提前设置好列族,表中所有的列都需要组织在列族里面
  • Column Qualifier:
    列族中的数据通过列标识来进行映射,可以理解为一个键值对,Column Qualifier就是Key.
  • Cell:
    每一个行键,列族和列标识共同组成一个单元,
  • Timestamp:
    每个值都会有一个timestamp,作为该值特定版本的标识符

Hbase与传统关系型数据库的区别

HBase学习笔记 (壹)- HBase简介与环境部署 **_第2张图片
传统存储:
HBase学习笔记 (壹)- HBase简介与环境部署 **_第3张图片
Hbase归类存储:
HBase学习笔记 (壹)- HBase简介与环境部署 **_第4张图片

Hbase数据模型

可想象为大的map;详见下图:
HBase学习笔记 (壹)- HBase简介与环境部署 **_第5张图片
访问数据步骤如下图:
HBase学习笔记 (壹)- HBase简介与环境部署 **_第6张图片

Hbase伪分布式集群安装

前置HDFS条件安装请参考大数据入门学习笔记(叁)- 布式文件系统HDFS
并且启动HDFS

  1. 下载HBase 传到服务器并且解压
    http://archive.cloudera.com/cdh5/cdh/5/
  2. 配置文件
    把Hadoop_Home/etc/hadoop/hdfs-site.xml和core.site.xml拷贝到HBase_home/conf下
  • 配置HBase_home/conf/hbase-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_79
  • 配置HBase_home/conf/hbase-site.xml
    <property>
        <name>hbase.rootdirname>  --hbase持久保存的目录
        <value>hdfs://hadoop000:8020/hbasevalue>   
    property>

    <property>        
         <name>hbase.zookeeper.property.dataDirname>   
         <value>zk的data目录路径value>    
    property>
    
    <property>        
         <name>hbase.cluster.distributedname> --是否以集群方式运行(虽然一个节点也可配置为true)  
         <value>truevalue>    
    property>
  1. 启动和停止
    hbase_home/bin/start-hbase.sh
    jps检查:
     HQuorumPeer
     HRegionServer
     HMaster
     NameNode
     SecondaryNameNode
     DataNode
    网页链接检查:
    http://hadoop000:16010

Hbase基础架构

HBase学习笔记 (壹)- HBase简介与环境部署 **_第7张图片

  • Hmaster
    • hmaster是hbase主/从集群架构中的中央节点
    • Hmaster将region分配给regionserver, 协调regionserver的
      负载并维护集群的状态
    • 维护表和region的元数据, 不参与数据的输入/输出过程
  • RegionServer
    • 维护hmaster分配给它的region, 处理对这些region的io请求
    • 负责切分正在运行过程中变的过大的region
  • Zookeeper
    • Zookeeper是集群的协调器
    • Hmaster启动将系统表加载到zookeeper
    • 提供hbase Regionserver状态信息

HBase特点

  • 线性和模块化的可伸缩性。
  • 严格一致的读写。
  • 自动和可配置的分片表
  • 区域服务器之间的自动故障转移支持。
  • 使用Apache HBase表支持Hadoop MapReduce作业的方便基类。
  • 易于使用Java API进行客户端访问。
  • 用于实时查询的块缓存和布鲁姆过滤器。
  • 查询谓词通过服务器端过滤器向下推
  • 节俭网关和支持XML、Protobuf和二进制数据编码选项的rest式Web服务
  • 可扩展的基于jruby的(JIRB) shell
  • 支持通过Hadoop metrics子系统将指标导出到文件或Ganglia或通过JMX

你可能感兴趣的:(Hbase学习笔记)