HBase的学习以及安装

目录

HBase数据库

Linux下软件的安装

1.下载相关的包并解压

2. 配置相关的路径

a.配置JDK的路径

b. 配置hbase-site.xml文件

c.配置/etc/profile文件

        d.启动HBase

理论知识学习

1.架构

2.数据模型:

3.数据操作:

4.HBase的特点

5.数据持久化与缓存:

6.容错机制:

7.性能优化:

8.集成与生态:

9.应用场景:

10.架构图展示​编辑

参考资料

HBase数据库

  • Linux下软件的安装

HBase的安装也分为三种,单机版伪分布版分布版

1.下载相关的包并解压

去官方网站下载好HBase的安装包,将压缩包放置到自己创建好的目录下面。

(这里是将HBase压缩包下载到了/opt目录下,然后将HBase解压到/app目录下)

mkdir  /app      #自己创建一个放置hbase软件的目录

cd  /opt       

tar  -zxvf  hbase-2.1.1-bin.tar.gz   -C    /app     将HBase解压到/app目录下

(语句解析:

  • tar:Linux系统下的归档工具,用于创建、维护和提取归档文件。
  • -zxvf:tar命令的选项,分别表示:
    • z:通过gzip解压文件。
    • x:从归档文件中提取文件。
    • v:显示详细信息,即在解压过程中显示每个被解压的文件名。
    • f:指定要处理的文件名。
  • hbase-2.1.1-bin.tar.gz:要解压的压缩文件名。
  • -C /app:将解压后的文件放到/app目录下。)

2. 配置相关的路径

a.配置JDK的路径

  在HBase的conf目录下,输入echo $JAVA_HOME来复制JAVA_HOME的路径,以后面的配置:

这里我们要记着这个路径。

接着我们编辑HBase 的conf目录下的hbase-env.sh文件,将其中的JAVA_HOME指向到你Java的安装目录,最后保存设置:

export JAVA_HOME=你自己的JAVA_HOME的路径

b. 配置hbase-site.xml文件

hbase-site.xml文件,在<configuration>标签中添加如下内容:

<configuration>

  <property>

       <name>hbase.rootdir</name>

       <value>file:///root/data/hbase/data</value>

  </property>

  <property>

       <name>hbase.zookeeper.property.dataDir</name>

       <value>/root/data/hbase/zookeeper</value>

  </property>

  <property>    

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

        <value>false</value>

  </property>

</configuration>

对上述参数的解释:

  1. hbase.rootdir这个属性是设置HBase的根目录,即存储HBase数据的HDFS路径。在这个例子中,它被设置为file:///root/data/hbase/data。
  2. hbase.zookeeper.property.dataDir这个属性设置了ZooKeeper的数据目录,ZooKeeper是HBase用来管理集群状态和协调分布式操作的服务。在这个例子中,它被设置为/root/data/hbase/zookeeper。
  3. hbase.unsafe.stream.capability.enforce这个属性是一个布尔值,用于控制是否强制执行流能力检查。将其设置为false表示不强制执行流能力检查。这可能会导致性能下降或不稳定,但在某些情况下可能是必要的。
c.配置/etc/profile文件

配置好了之后我们就可以启动HBase了,在启动之前我们可以将Hbase的bin目录配置到/etc/profile中,这样更方便我们以后操作。

在etc/profile的文件末尾添加如下内容:

# SET HBASE_enviroment

HBASE_HOME=/app/hbase-2.1.1

export PATH=$PATH:$HBASE_HOME/bin

        d.启动HBase

首先需要启动Hadoop,输入命令start-dfs.sh来启动Hadoop,输入jps查看是否启动成功,

接着我们输入start-hbase.sh来启动HBase,同样输入jps查看是否启动成功,出现了HMaster即表示启动成功了。

  • 理论知识学习

HBase是一个基于Hadoop的分布式数据库,是 Google 的 Bigtable 开发的java版本。和传统的关系数据库不同,HBase采用了BigTable的数据模型。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce进行处理,他将对数据存储和并行计算完美结合在了一起。同时他也可以理解为一个非常大的分布式HashMap,在hadoop集群的各个节点中以行主键+列族(包含列)+时间戳为键,以储存的值为值。

1.架构

    • HMaster:负责协调所有RegionServer的操作,如负载均衡和故障恢复。
    • RegionServer:存储和管理数据的物理服务器,每个服务器可以有多个region。
    • Region:HBase表被分割成多个Region,每个Region包含一个或多个列族的数据。
    • Store:每个Region由多个Store组成,每个Store对应于一个列族。
    • StoreFile:Store将数据存储在多个StoreFile中,这些文件是不可变的。

2.数据模型

    • 表由行键(Row Key)、列族(Column Family)和列限定符(Column Qualifier)组成。
    • 数据通过行键进行排序,这决定了数据的物理布局,因此设计良好的行键对于查询性能至关重要。
    • 每个单元格的数据有版本控制,支持时间戳。

3.数据操作

    • Put:向表中插入或更新数据。
    • Get:从表中获取数据。
    • Scan:返回表中的连续行范围。
    • Delete:删除行或特定的单元格数据。
  1. 进入 HBase 客户端命令行。hbase shell
  2. 查看帮助命令。help
  3. 查看当前数据库中有哪些表。list
  4. 查看表结构,describe '表名'
  5. 创建表:create。如:我们新建一个名为test的表,使其中包含一个名为data的列,表和列族属性都为默认值,则可以使用如下命令:create ‘test’ , ‘data’
  6. 添加数据,使用put命令可以用来添加数据,使用get命令可以获取数据
  7. 查看所有数据,使用scan
  8. 删除整行数据:deleteall 表名,行名称即可删除正行数据。如:deleteall 'test','row1'
  9. 删除表,有两个步骤:disable 表名  ; drop 表名 ;

(为了移除test这个表,首先我们要把它设为禁用,然后再删除)

  1. 清空表数据,truncate '表名'。提示:清空表的操作顺序为先disable,然后再truncate。
  2. 更新指定字段的数据,如put 'student','1001','info:age','100'。
  3. 变更表信息,如alter 'student',{NAME=>'info',VERSIONS=>3}
  1. 查看命名空间:list_namespace
  2. 创建命名空间:create_namespace '空间名'
  3. 在新的命名空间中创建表:create 'bigdata:student','info'
  4. 删除命名空间

只能删除空的命名空间,如果不为空,需要先删除该命名空间下的所有表

drop_namespace '空间名'

4.HBase的特点

    • 海量存储

Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据;同时能够达到随机读取20~100k ops/s(每秒操作次数)的速度。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。

    • 列式存储

这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。需要注意的是,列族理论上可以很多,但实际上建议不要超过6个。

    • 极易扩展

Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。

通过横向添加RegionSever的机器,扩展的机器可以达到20000+,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。通过横向添加Datanode的机器,进行HDFS存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。

    • 高并发

由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几IO延迟下降并不多。能获得高并发、低延迟的服务。

    • 稀疏

稀疏主要是针对Hbase列的灵活性,不同于传统RDBMS,null也占用空间,HBase在列数据为空的情况下,是不会占用存储空间的。在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

5.数据持久化与缓存

    • 数据首先写入WAL(Write Ahead Log),然后写入MemStore。
    • MemStore达到一定大小后,数据会被flush到磁盘上的StoreFile。
    • StoreFile过大时会触发compaction,合并多个StoreFile减少数量并清理过期数据。scan’表的名称’

6.容错机制

    • RegionServer故障时,HMaster会重新分配其管理的Region到其他健康的RegionServer上。
    • WAL和多副本机制确保数据的持久性和可用性。

7.性能优化

    • 通过预分区和合理的列族设计来改善性能。
    • 利用Bloom Filters减少不必要的磁盘访问。
    • 通过设置合适的缓存策略来提高读取速度。

8.集成与生态

    • HBase可以与HDFS(Hadoop Distributed File System)紧密集成,利用HDFS的存储能力。
    • 支持使用MapReduce进行数据分析和处理。
    • 提供多种接口,如Java API、Thrift Gateway等,便于应用程序访问。

9.应用场景

    • 适用于大规模数据分析,如实时分析和历史数据分析。
    • 高并发读写场景,如物联网、社交网络和广告系统。
    • 需要快速随机读写访问的大数据集存储。
    • 完美结合数据存储和并行计算。

10.架构图展示

参考资料

想查看更多,本文引用了一下文章的内容

一图看懂 HBase 架构(全面详细)_hbase网络拓扑结构图-CSDN博客   

HBase概述(概念、数据模型、特点和优势)_h base采用了更加简单的数据模型,它把数据存储为未经解释的字符串,对吗?-CSDN博客

头歌实践教学平台     

HBase 教程(超详细)_hbase教程-CSDN博客  

Hadoop之Hbase建表(详细步骤)_hbase创建表-CSDN博客   

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值