大数据技术之HBase1

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 大数据技术之HBase

1 HBase 简介

1.1、HBase 定义

Apache HBase™ 是以 hdfs 为数据存储的,一种分布式、可扩展的NoSQL 数据库。


1.2、HBase 数据模型

HBase 的设计理念依据Google 的BigTable 论文,论文中对于数据模型的首句介绍。


Bigtable 是一个稀疏的、分布式的、持久的多维排序map(<K,V>类型)。


之后对于映射的解释如下:


该映射由行键、列键和时间戳索引;映射中的每个值都是一个未解释(序列化后的)的字节数组。


最终HBase 关于数据模型和BigTable 的对应关系如下:


HBase 使用与Bigtable 非常相似的数据模型。用户将数据行存储在带标签的表中。数据行具有可排序的键和任意数量的列。该表存储稀疏,因此如果用户喜欢,同一表中的行可以具有疯狂变化的列。


最终理解HBase 数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射map指代非关系型数据库的key-Value 结构。


1.2.1、HBase 逻辑结构

HBase 可以用于存储多种结构的数据,以JSON 为例,存储的数据原貌为:

1.2.2、HBase 物理存储结构

物理存储结构即为数据映射关系,而在概念视图的空单元格,底层实际根本不存储

1.2.3、数据模型

1)Name Space


命名空间,类似于关系型数据库的database 概念,每个命名空间下有多个表。HBase 两个自带的命名空间,分别是hbase 和default,hbase 中存放的是HBase 内置的表,default表是用户默认使用的命名空间。


2)Table


类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。因为数据存储时稀疏的,所有往HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。


3)Row


HBase 表中的每行数据都由一个RowKey 和多个Column(列)组成,数据是按照RowKey 的字典顺序存储的,并且查询数据时只能根据RowKey 进行检索(不支持SQL),所以RowKey 的设计十分重要。


4)Column


HBase 中的每个列都由Column Family(列族)和Column Qualifier(列限定符,其实就是列名 )进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。


5)Time Stamp


用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入HBase 的时间。


6)Cell


由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元。cell 中的数据全部是字节码形式存贮。


其实就是这样一行就是一个单元

1.3、HBase 基本架构

架构角色:


1)Master


实现类为HMaster,负责监控集群中所有的RegionServer 实例。主要作用如下:


管理元数据表格hbase:meta,接收用户对表格创建修改删除的命令并执行


监控region 是否需要进行负载均衡,故障转移和region 的拆分。通过启动多个后台线程监控实现上述功能:


①LoadBalancer 负载均衡器


周期性监控region 分布在regionServer 上面是否均衡,由参数hbase.balancer.period 控制周期时间,默认5 分钟。


②CatalogJanitor 元数据管理器


定期检查和清理hbase:meta 中的数据。meta 表内容在进阶中介绍。


③MasterProcWAL master 预写日志处理器


把master 需要执行的任务记录到预写日志WAL 中,如果master 宕机,让backupMaster读取日志继续干。


2)Region Server


Region Server 实现类为HRegionServer,主要作用如下:


负责数据cell 的处理,例如写入数据put,查询数据get 等


拆分合并region 的实际执行者,由master 监控,由regionServer 执行。


3)Zookeeper


HBase 通过Zookeeper 来做master 的高可用、记录RegionServer 的部署信息、并且存储有meta表的位置信息。


HBase 对于数据的读写操作时直接访问Zookeeper 的,在2.3 版本推出Master Registry 模式,客户端可以直接访问master。使用此功能,会加大对master 的压力,减轻对Zookeeper 的压力。


4)HDFS


HDFS 为Hbase 提供最终的底层数据存储服务,同时为HBase 提供高容错的支持。


2 HBase 快速入门

2.1、HBase 安装部署

2.1.1、Zookeeper 正常部署

首先保证Zookeeper 集群的正常部署,并启动之。

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start 
[atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start 
[atguigu@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start

2.1.2、Hadoop 正常部署

Hadoop 集群的正常部署并启动。

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh 
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

2.1.3、HBase 的解压

  • 解压Hbase 到指定目录
[atguigu@hadoop102 software]$ tar -zxvf hbase-2.4.11-bin.tar.gz -C
/opt/module/
[atguigu@hadoop102 software]$ mv /opt/module/hbase-2.4.11/opt/module/hbase
  • 配置环境变量
[atguigu@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh


#HBASE_HOME
export HBASE_HOME=/opt/module/hbase export PATH=$PATH:$HBASE_HOME/bin
  • 使用source 配置的环境变量生效
[atguigu@hadoop102 module]$ source /etc/profile.d/my_env.sh


2.1.4、HBase 的配置文件

  • hbase-env.sh 修改内容,可以添加到最后:


export HBASE_MANAGES_ZK=false
  • hbase-site.xml 修改内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hbase.zookeeper.quorum</name> //集群ip
        <value>hadoop102,hadoop103,hadoop104</value>
        <description>The directory shared by RegionServers.
        </description>
    </property>
<!--  <property>-->
<!--  <name>hbase.zookeeper.property.dataDir</name>-->
<!--  <value>/export/zookeeper</value>-->
<!--  <description> 记得修改ZK 的配置文件-->
<!--  ZK 的信息不能保存到临时文件夹-->
<!--  </description>-->
<!--  </property>-->
    <property>
        <name>hbase.rootdir</name> //设置根节点
        <value>hdfs://hadoop102:8020/hbase</value>
        <description>The directory shared by RegionServers.
        </description>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>//是否开启集群模式
        <value>true</value>
    </property>
</configuration>


  • regionservers
hadoop102 
hadoop103 
hadoop104
  • 解决HBase 和Hadoop 的log4j 兼容性问题,修改HBase 的jar 包,使用Hadoop 的jar 包

2.1.5、HBase 远程发送到其他集群

[atguigu@hadoop102 module]$ xsync hbase/


2.1.6、HBase 服务的启动

  • 单点启动
[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master 
[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver
  • 群启

[atguigu@hadoop102 hbase]$ bin/start-hbase.sh

  • 对应的停止服务

[atguigu@hadoop102 hbase]$ bin/stop-hbase.sh

2.1.7、查看HBase 页面

启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如:http://hadoop102:16010



2.1.8、高可用(可选)

在HBase 中HMaster 负责监控HRegionServer 的生命周期,均衡RegionServer 的负载,如果HMaster 挂掉了,那么整个HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase 支持对HMaster 的高可用配置。


关闭HBase 集群(如果没有开启则跳过此步)


[atguigu@hadoop102 hbase]$ bin/stop-hbase.sh


在conf 目录下创建backup-masters 文件


[atguigu@hadoop102 hbase]$ touch conf/backup-master


在backup-masters 文件中配置高可用HMaster 节点


[atguigu@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters


将整个conf 目录scp 到其他节点


[atguigu@hadoop102 hbase]$ xsync conf


重启hbase,打开页面测试查看 http://hadooo102:16010


2.2、HBase Shell 操作

2.2.1、基本操作

  • 进入HBase 客户端命令行

[atguigu@hadoop102 hbase]$ bin/hbase shell


查看帮助命令


能够展示HBase 中所有能使用的命令,主要使用的命令有namespace 命令空间相关,DDL 创建修改表格,DML 写入读取数据。


hbase:001:0> help


2.2.2、namespace

创建命名空间


使用特定的help 语法能够查看命令如何使用。


hbase:002:0> help 'create_namespace'


创建命名空间bigdata


hbase:003:0> create_namespace 'bigdata'


查看所有的命名空间


hbase:004:0> list_namespace

2.2.3、DDL

创建表


在 bigdata 命名空间中创建表格student,两个列族。info 列族数据维护的版本数为 5 个,如果不写默认版本数为1。


hbase:005:0> create 'bigdata:student', {NAME => 'info', VERSIONS => 5}, {NAME => 'msg'}


如果创建表格只有一个列族,没有列族属性,可以简写。如果不写命名空间,使用默认的命名空间default。


hbase:009:0> create 'student1','info'


查看表


查看表有两个命令:list 和describe


list:查看所有的表名


hbase:013:0> list


describe:查看一个表的详情


hbase:014:0> describe 'student1'


修改表


表名创建时写的所有和列族相关的信息,都可以后续通过alter 修改,包括增加删除列族。


增加列族和修改信息都使用覆盖的方法


hbase:015:0> alter 'student1', {NAME => 'f1', VERSIONS => 3}


删除信息使用特殊的语法


hbase:015:0> alter 'student1', NAME => 'f1', METHOD => 'delete' 
hbase:016:0> alter 'student1', 'delete' => 'f1'
  • 删除表

shell 中删除表格,需要先将表格状态设置为不可用。

hbase:017:0> disable 'student1' 
hbase:018:0> drop 'student1'

2.2.4、DML

  • 写入数据

在HBase 中如果想要写入数据,只能添加结构中最底层的cell。可以手动写入时间戳指定cell 的版本,推荐不写默认使用当前的系统时间。

 hbase:019:0> put 'bigdata:student','1001','info:name','zhangsan'
 hbase:020:0> put 'bigdata:student','1001','info:name','lisi' 
hbase:021:0> put 'bigdata:student','1001','info:age','18'

如果重复写入相同rowKey,相同列的数据,会写入多个版本进行覆盖。例如上面的rowKey是1001,最后info列族的name值是lisi

  • 取数据

读取数据的方法有两个:get 和scan。

 hbase:022:0> get 'bigdata:student','1001'
hbase:023:0> get 'bigdata:student','1001' , {COLUMN => 'info:name'}

get 最大范围是一行数据,也可以进行列的过滤,读取数据的结果为多行cell。


也可以修改读取cell 的版本数,默认读取一个。最多能够读取当前列族设置的维护版本数。

 hbase:024:0>get 'bigdata:student','1001' , {COLUMN => 'info:name', VERSIONS => 6}

scan 是扫描数据,能够读取多行数据,不建议扫描过多的数据,推荐使用startRow 和stopRow 来控制读取的数据,默认范围左闭右开。


hbase:025:0> scan 'bigdata:student',{STARTROW => '1001',STOPROW => '1002'}


实际开发中使用shell 的机会不多,所有丰富的使用方法到API 中介绍。


删除数据


删除数据的方法有两个:delete 和deleteall。


delete 表示删除一个版本的数据,即为 1 个 cell,不填写版本默认删除最新的一个版本。hbase:026:0> delete 'bigdata:student','1001','info:name'


deleteall 表示删除所有版本的数据,即为当前行当前列的多个 cell。(执行命令会标记


数据为要删除,不会直接将数据彻底删除,删除数据只在特定时期清理磁盘时进行)


hbase:027:0> deleteall 'bigdata:student','1001','info:name'

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
12天前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
12天前
|
存储 数据采集 监控
大数据技术:开启智能决策与创新服务的新纪元
【10月更文挑战第5天】大数据技术:开启智能决策与创新服务的新纪元
|
2月前
|
Java 大数据 分布式数据库
Spring Boot 与 HBase 的完美融合:探索高效大数据应用开发的新途径
【8月更文挑战第29天】Spring Boot是一款广受好评的微服务框架,以其便捷的开发体验著称。HBase则是一个高性能的大数据分布式数据库系统。结合两者,可极大简化HBase应用开发。本文将对比传统方式与Spring Boot集成HBase的区别,展示如何在Spring Boot中优雅实现HBase功能,并提供示例代码。从依赖管理、连接配置、表操作到数据访问,Spring Boot均能显著减少工作量,提升代码可读性和可维护性,使开发者更专注业务逻辑。
159 1
|
13天前
|
存储 分布式计算 druid
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
39 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
|
27天前
|
机器学习/深度学习 运维 分布式计算
大数据技术专业就业前景
大数据技术专业就业前景广阔,广泛应用于互联网、金融、医疗等众多行业,助力企业数字化转型。岗位涵盖大数据开发、分析、运维及管理,如大数据工程师、分析师和系统运维工程师等。这些岗位因专业性和稀缺性而享有优厚薪资,尤其在一线城市可达20万至50万年薪。随着技术进步和经验积累,从业者可晋升为高级职位或投身数据咨询、创业等领域,发展空间巨大。
35 5
|
1月前
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
200 12
|
1月前
|
人工智能 编解码 搜索推荐
大模型、大数据与显示技术深度融合 加速智慧医疗多元化场景落地
大模型、大数据与显示技术深度融合 加速智慧医疗多元化场景落地
|
12天前
|
存储 数据采集 分布式计算
大数据技术:开启智能时代的新引擎
【10月更文挑战第5天】大数据技术:开启智能时代的新引擎
|
2月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
2月前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
40 0