Hbase安装及简介

什么是hbase

1.简介

HBase 是一个面向列式存储分布式数据库,其设计思想来源于 Google 的 BigTable 论文。

HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。

HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾是大数据领域中 Key-Value 数据结构存储最常用的数据库方案

2.特点

  1. 易扩展

Hbase 的扩展性主要体现在两个方面,一个是基于运算能力(RegionServer) 的扩展,通过增加 RegionSever 节点的数量,提升 Hbase 上层的处理能力;另一个是基于存储能力的扩展(HDFS),通过增加 DataNode 节点数量对存储层的进行扩容,提升 HBase 的数据存储能力。

  1. 海量存储

HBase 作为一个开源的分布式 Key-Value 数据库,其主要作用是面向 PB 级别数据的实时入库和快速随机访问。这主要源于上述易扩展的特点,使得 HBase 通过扩展来存储海量的数据。

  1. 列式存储

Hbase 是根据列族来存储数据的。列族下面可以有非常多的列。列式存储的最大好处就是,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段时,能大大减少读取的数据量。

  1. 高可靠性

WAL 机制保证了数据写入时不会因集群异常而导致写入数据丢失,Replication 机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且 Hbase 底层使用 HDFS,HDFS 本身也有备份。

  1. 稀疏性

在 HBase 的列族中,可以指定任意多的列,为空的列不占用存储空间,表可以设计得非常稀疏。

  1. 模块组成

HBase 可以将数据存储在本地文件系统,也可以存储在 HDFS 文件系统。在生产环境中,HBase 一般运行在HDFS 上,以 HDFS 作为基础的存储设施。HBase 通过 HBase Client 提供的 Java API 来访问 HBase 数据库,以完成数据的写入和读取。HBase 集群主由HMaster、Region Server 和 ZooKeeper 组成。

3.使用场景

HBase擅长于存储结构简单的海量数据但索引能力有限,而Oracle,mysql等传统关系型数据库(RDBMS)能够提供丰富的查询能力,但却疲于应对TB级别的海量数据存储,HBase对传统的RDBMS并不是取代关系,而是一种补充。

适合使用 对于关系型数据库的一种补充,而不是替代

  • 数据库中的很多列都包含了很多空字段(稀疏数据),在 HBase 中的空字段不会像在关系型数据库中占用空间。

  • 需要很高的吞吐量,瞬间写入量很大。

  • 数据有很多版本需要维护,HBase 利用时间戳来区分不同版本的数据。

  • 具有高可扩展性,能动态地扩展整个存储系统。

比如:用户画像(给用户打标签),搜索引擎应用,存储用户交互数据等

不适合使用

  1. 需要数据分析,比如报表(rowkey) 对sql支持不好

  2. 单表数据不超过千万(数据量小)

4hbase的架构

HBase 系统遵循 Master/Salve 架构,由三种不同类型的组件组成:

client

  1. 提供了访问hbase的接口

  2. 提供cache缓存提高访问hbase的效率 , 比如region的信息

Zookeeper

  1. 保证任何时候,集群中只有一个 Master;

  2. 存储所有 Region 的寻址入口;

  3. 实时监控 Region Server 的状态,将 Region Server 的上线和下线信息实时通知给 Master;

  4. 存储 HBase 的 Schema,包括有哪些 Table,每个 Table 有哪些 Column Family 等信息。

Master/master

  1. 为 Region Server 分配 Region;

  2. 负责 Region Server 的负载均衡 ;

  3. 发现失效的 Region Server 并重新分配其上的 Region;

  4. GFS 上的垃圾文件回收;

  5. 处理 Schema 的更新请求

Region Server

  1. Region Server 负责维护 Master 分配给它的 Region ,并处理发送到 Region 上的 IO 请求;

  2. Region Server 负责切分在运行过程中变得过大的 Region

 安装

因为hbase需要依赖zookeeper和hdfs,所以在安装hbase集群之前需要确保zookeeper和hdfs的环境

1 时间同步

由于HBase默认的容忍间隔是30s,超过这个阈值,就会报“Master rejected startup because clock is out of sync”异常,所以三台机器的时间 间隔不能超过30s

2下载上传解压

3hbase配置

  1. 在conf目录下找到hbase-env.sh

命令

cd /opt/app/hbase-2.2.5/conf

vi hbase-env.sh

修改的地方: #1.配置java的环境变量,注意需要将前面的注释打开

export JAVA_HOME=/opt/app/jdk1.8

#2.hbase中内嵌了一个zookeeper,默认使用的是内置的zoopkeeper,将等号后面的true改成false

export HBASE_MANAGES_ZK=false

  1. 在 conf目录下找到hbase-site.xml

命令:

vi hbase-site.xml 在最下面输入下面的配置文件,黄色部分需要自己修改主机名 <configuration>

<!-- 指定hbase在HDFS上存储的路径 -->

<property>

<name>hbase.rootdir</name>

<value>hdfs://linux001:8020/hbase</value>

</property> <!-- 指定hbase是分布式的 --> <property> <name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<!-- 分布式中一定要配置该参数,否则可能会出现无法启动HMaster的情况 -->

<property>

<name>hbase.unsafe.stream.capability.enforce</name>

<value>false</value>

</property>

<!-- 指定zk的地址,多个用“,”分割 --> <property> <name>hbase.zookeeper.quorum</name> <value>linux001:2181,linux002:2181,linux003:2181</value>

</property>

</configuration>

  1. regionservers 配置 启动集群中的Regionserver机器

命令:

vi regionservers

输入自己的三台机器域名 linux01 linux02 linux03

2.4集群分发

[root@linux01 apps]# pwd /usr/apps

[root@linux01 apps]# scp -r hbase-2.0.4/ linux02:$PWD [root@linux01 apps]# scp -r hbase-2.0.4/ linux03:$PWD

在app目录下执行: for i in 2 3 do scp -r hbase-2.2.5/ linux0$i:$PWD done

2.5启动

单节点启动:

bin/hbase-daemon.sh start master bin/hbase-daemon.sh start regionserver

提示:如果regionserver无法启动,请先检查下集群之间的节点时间是否同步

一键启动:

bin/start-hbase.sh

猜你喜欢

转载自blog.csdn.net/m0_53400772/article/details/131133623
今日推荐