Hadoop学习之HBase基础知识、操作和原理

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Hadoop学习之HBase基础知识、操作和原理 1. HBase 简介 HBase(hadoop DataBase)是一个高可靠,高性能面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC server 上搭建大规模结构化存储集群。HBase 利用HDFS作为其文件系统,利用Hadoop MapReduce来处理HBase中的海量数据 2. HBase Shell

Hadoop学习之HBase基础知识、操作和原理

1. HBase 简介

HBase(hadoop DataBase)是一个高可靠,高性能面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC server 上搭建大规模结构化存储集群。HBase 利用HDFS作为其文件系统,利用Hadoop MapReduce来处理HBase中的海量数据

2. HBase Shell 操作

HBase 可执行参数


hbase shell

 


a)     创建表的帮助语法(create)



b)     获取行或单元的值(get)


c)      列出hbase 上的所有表(list)


d)     删除表(drop)

删除表之前必须先让表失效:disable ‘t1’


e)     向hbase指定的hbase表单元添加值(put)


f)       获取指定表的相关信息(scan)


g)      使表失效(disable)


h)     使表生效(enable)


实例:








 

3. HBase 配置

<configuration>
<property>
 <name>hbase.rootdir</name>
 <value>hdfs://hadoop1:9000/hbase</value>
</property>
<property>
 <name>hbase.cluster.distributed</name>
 <value>true</value>
</property>
<property>
 <name>hbase.zookeeper.quorum</name>
 <value>hadoop1,hadoop2,hadoop3</value>
</property>
<property>
 <name>hbase.master</name>
 <value>hdfs://hadoop1:60000</value>
</property>
 
<property>
 <name>hbase.client.write.buffer</name>
 <value>2097152</value>
 <description>设置缓冲区大小为2M</description>
</property>
<property>
  <name>hbase.master.meta.thread.rescanfrequency</name>
 <value>60000</value>
 <description>hbase扫描ROOT和META表的时间间隔</description>
</property>
<property>
 <name>hbase.regionserver.handler.count</name>
 <value>10</value>
 <description>RegionServer上等待处理请求的实例数目,默认10</description>
</property>
<property>
 <name>hbase.hregion.max.filesize</name>
  <value>268435456</value>
 <description>HRegion上stove文件最大值,默认为256M,以字节为单位</description>
</property>
 
<property>
  <name>hfile.block.cache.size</name>
  <value>0.2</value>
 <description>HFile/StoreFile缓存所在java虚拟机堆大小的百分比,默认0.2,占比20%,0为禁用</description>
</property>
 
<property>
  <name>hbase.regionserver.global.memstore.upperLimit</name>
  <value>0.4</value>
 <description>RegionServer上所有的memstore所在java虚拟机的比例上限,默认为0.4,40%,当memstore所占空间超过此值,更新操作被阻塞,所有内容强制写出</description>
</property>
<property>
  <name>hbase.hregion.memstore.flush.size</name>
  <value>67108864</value>
 <description>memstore缓存写入到磁盘上的值内容大小限度值</description>
</property>
 
</configuration>


4. HBase 的体系结构

主从服务器:HRegion服务器群和HMaster服务器构成。通过zookeeper协调HMaster不存储任何数据,hbase逻辑上的表可以分为多个HRegion,存储到HRegion服务器群中,HMaster中存储的是从数据到HRegion的映射

HRegion服务器:HLOG部分和HRegion部分。HLOG是用来存储数据日志,先写日志方式;HRegion部分由很多HRegion组成,存储的是实际数据。

每个HRegion由很多Store组成,每个store存储的是一个列族下的数据。在每个hstore中包含一块memstore和多个storefile(HFile).

HFile:负责实际的数据存储,HBase的最小存储单元。

5. HBase数据模型(NoSql)

a)     表(table),是存储管理数据的

b)     行键(row key),类似于Mysql中的主键

行键是HBase表天然自带的

c)      列族(column family),列的集合

HBase中列族是需要在定义表时指定的,列是在插入数据时自动增加的

HBase表中的数据,每个列族淡出一个文件

d)     时间戳(timestamp),列(也称作标签,修饰符)的一个属性

行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。

如果不指定时间戳或者版本,默认取最新的

e)      存储的数据都是字节数组。

f)       表中的数据是按照行键的顺序物理存储的。

字符串、证书、二进制串甚至串行化的  都可以作为行键

表按照行键的“逐字节排序”顺序对行进行有序化处理

表内数据非常”稀疏”,不同的行的列数完全可以大不相同

可以只对一行上”锁”

对行的写操作始终是”原子的”

6. Hbase 的物理模型

a)     HBase是适合海量数据(20PB)的秒级简单查询的数据库

b)     Table在按照行键,分割为多个HRegion,一个region由(startKey,endKey)表示,每个HRegion分散在不同的RegionServer中

c)      HBase对表的操作转化为对多台Regionserver的并行查询

7. HBase的体系结构

a)     HBase是主从结构,HMaster、HregionServer允许有多个HMaster存在,但同一时间只有一个HMaster有效

b)     HBase集群是需要Zookeeper的:

                      i.   保证任何时候,集群中只有一个running master
                      ii.  存贮所有Region的寻址路口
                      iii. 实时监控RegionServer的状态,将RegionServer的上线和下线信息,实时通知给Master
                      iv. 存储HBase的schema,包括有哪些table,每个table  有哪些列族

Master可以启动多个HMaster,通过zookeeper的Master Election机制保证总有一个Master运行。

             v.  为Region server分配region

             vi. 负责region server的负载均衡

             vii.发现失效的region server 并小心分配其上的region

c)      RegionServer

                      i. 维护Master分配给它的region,处理对这些region的IO请求
                      ii.负责切分在运行过程中变得过大的region

d)     HBase有两张特殊的表,-ROOT-和.META.

                      i. .META.(两边都有点"."):记录了用户表的Region的信息,.META.可以有多个region
                      ii. -ROOT-:记录了.META.表的Region,-ROOT-只有一个region

8. HBase 与RDBMS

                    i.  数据类型:HBase只字符串,所有类型交用户处理。RDBMS丰富的类型。
                    ii. 数据操作:HBase只有简单的插入、查询、删除、清空操作,表与表之间分离 ,没有复杂关系,不能实现表间关联。RDBMS含有各种函数,连接操作。
                    iii.存储模式:HBase基于列存储,每列几个文件保存,不同列族文件分离。RDBMS基于表结构和行模式
                    iv.数据维护:HBase的更新操作,实际是数据的新版本的插入操作。

                    v. 可伸缩性:HBase轻松增减硬件数量,容错性高;RDBMS需要加上中间层实现。

9. 模式设计的原则

i. 列族的数量及列族的势

建议列族的数量越少越好,hbase对两个及以上的列族处理的并不好,hbase的flushing和压缩是基于HRegion的。

同一个表中不同列族所存储的记录数量的差别,即列族的势。当两个列族数量差别过大时,会将包含记录较少的列族的数量分散到多个region上,而region可能存储在不同的regionserver上,这样进行查询或scan操作时,会对性能有影响。

ii. 行键的设计

避免使用时序或单调(递增、递减)行键,hbase根据行键确定存储位置,即region的位置,如果采用时序或单调,连续到来的数据会被存储到一个region中,而其他region是空闲的,这是分布式系统不希望看到的。

iii.  最小化行键和列族的大小

值ß 行键、列、时间戳。

Hbase的索引是为了加快随机访问的速度:行键+列族:列+时间戳+值

iv. 版本的数量

默认情况下,每个数据存储3个版本,可通过HColumnDescriptor设置

 

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
139 4
|
7月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
104 0
|
4月前
|
存储 大数据 关系型数据库
HBase系列学习:基础知识
HBase系列学习:基础知识
HBase系列学习:基础知识
|
4月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
113 1
|
4月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
112 4
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
73 4
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
53 3
|
4月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
75 3
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
138 2
|
4月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
80 2