Hadoop组件--分布式数据库HBase

简介:  1. HBase概述 先来看下HBase在Hadoop生态中的位置 HBase是Apache Hadoop⽣态系统中的重要⼀员,主要⽤于海量结构化数据存储。 HBase是一个构建在HDFS上的分布式列存储系统(严格的来说应该是列族存储),数据保存在HDFS上。

 1. HBase概述

先来看下HBase在Hadoop生态中的位置

HBase是Apache Hadoop⽣态系统中的重要⼀员,主要⽤于海量结构化数据存储。

HBase是一个构建在HDFS上的分布式列存储系统(严格的来说应该是列族存储),数据保存在HDFS上。

HBase与MapReduce良好的集成,使用MapReduce来处理数据。

HBase利用Zookeeper做分布式协同。

从逻辑上讲,HBase将数据按照表、⾏和列进⾏存储,它是⼀个分布式的、稀疏的、持久化存储的多维度排序表。

相对于Hive来说,HBase适合实时数据访问,Hive则适合批处理数据分析。

HBase的应用场景很多,百度的页面库,淘宝的商品库,小米的云存储服务等。

 2. HBase数据模型

(Table, RowKey, Family, Qualifier, TimeStamp) -->Value

在HBase中,一行数据由行健RowKey作为键,包含多个列族(Famliy),列族由可同时访问的多个列组成(Qualifier),

时间戳作为索引(TimeStamp)。

--可以是稀疏的,空值在HBase中不会被存储。

Row Key

--行健,数据在表中的唯一标实

--所有的操作都是基于主键的。

--数据安照行健来排序。

特点

--大:⼀个表可以有数⼗亿⾏,上百万列

--⾯向列:⾯向列(族)的存储,列(族)独⽴检索

--稀疏:对于空(null)的列,并不占⽤存储空间,表可以设计的非常稀疏

--数据多版本:每个单元中的数据可以有多个版本(时间戳不同)

--数据类型单⼀:HBase中的数据都是字节,没有类型

3. 物理模型

--以列族为单位存储

--每个cell中会存储以下信息

• Row key

• Column family name
• Column name
• Timestamp
• Value

 

数据表中所有行,安照Row Key字典序排列,Table在行的方向上分为多个region,

Region按⼤⼩分割的,每个表开始只有⼀个Region,随着数据增多,Region不断增⼤,当增⼤到⼀个阀值的时候,

Region就会等分会两新的Region,之后会有越来越多的Region。Region是HBase中分布式存储和负载均衡的最⼩单元,

不同Region分布到不同RegionServer上。

 

 

Region虽然是分布式存储的最⼩单元,但并不是存储的最⼩单元。

--Region由⼀个或者多个Store组成,每个Store保存⼀个columns family

--每个Strore又由⼀个MemStore和0至多个StoreFile组成
--MemStore存储在内存中,StoreFile存储在HDFS上

 

4. HBase架构

 

HRegion

--HBase 会⾃动地将表划分为不同的区域

-- 每个区域包含所有⾏的⼀个⼦集

--对⽤户来说,每个表是⼀堆数据的集合,靠主键来区分

--从物理上来说,⼀张表被拆分成了多块,每⼀块是⼀个HRegion

-- 我们⽤表名+ 开始和结束主键,来区分每⼀个HRegion

-- ⼀个HRegion 会保存⼀个表⾥⾯某段连续的数据,从开始主键到结束主键

--⼀张完整的表格是保存在多个HRegion上⾯

HRegionServer

--所有的数据库数据都保存在HDFS上⾯

-- ⽤户通过访问HRegionServer获取这些数据

--⼀台机器上⾯⼀般只运⾏⼀个HRegionServer

-- ⼀个HRegionServer上⾯有多个HRegion,⼀个HRegion 也只会被⼀个HRegionServer维护

--HRegionServer主要负责响应⽤户I/O请求,从HDFS读写数据,是HBase中最核⼼的模块

-- HRegionServer内部管理了⼀系列HRegion对象

-- 每个HRegion对应了Table中的⼀个Region,HRegion中由多个HStore组成

-- 每个HStore 对应了Table中的⼀个Column Family的存储

-- 最好将具备共同IO特性的Column放在⼀个Column Family中

HMaster

--每个HRegionServer都会与HMaster通信

-- HMaster的主要任务就是给HRegionServer分配HRegion

-- HMaster指定HRegionServer 要维护哪些HRegion

-- 当⼀台HRegionServer宕机时,HMaster会把它负责的HRegion标记为未分配,然后再把它们分配到其他HRegionServer 中

 

5. HBase Shell

启动HBase shell

$./bin/hbase shell

建表:表名scores,有两个列族:‘grade’和‘course’

>create 'scores' ,'grade','course'

查看HBase中的表

>list

查看表结构

>describe 'scores'

put: 写⼊数据,格式如下:

>put 't1', 'r1', 'c1', 'value', ts1

t1指表名,r1指⾏键(key),c1指列名,value指值,ts1指数据戳,
⼀般都省略不设置。

向scores表中插⼊数据

> put 'scores', 'Tom', 'grade', 6
> put 'scores', 'Tom', 'course:math', 89
> put 'scores', 'Tom', 'course:art', 63
> put 'scores', 'Jim', 'grade', 7
> put 'scores', 'Jim', 'course:math', 75
> put 'scores', 'Jim', 'course:science', 48

get随机查找数据

格式

>get 't1', 'r1'
>get 't1', 'r1', 'c1'
>get 't1', 'r1', 'c1', 'c2'
>get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
>get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2],
VERSIONS => 4}

>get 'sources', 'Tom'
>get 'sources', 'Tom', 'grade'
>get 'sources', 'Tom', 'grede' , 'course'


scan 范围查找数据,scan命令格式如下

>scan 't1'
>scan 't1', {COLUMNS => 'c1:q1'}
>scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW
=> 'xyz'}
>scan 't1', {REVERSED => true}


> scan 'scores'
> scan 'scores',{COLUMNS =>'course:math'}
> scan 'scores',{COLUMNS =>'course'}

> scan 'scores',{COLUMNS =>'course', LIMIT => 1, STARTROW => 'Jim'}


delete删除数据

delete命令格式如下

>delete 't1', 'r1', 'c1', ts1

> delete 'scores', 'Jim', 'course:math'

Truncate删除全表数据

> truncate 'scores'

alter修改表结构

为scores表增加⼀个family列族,名为profile

> alter 'scores', NAME => 'profile'

删除profile列族

> alter 'scores', NAME => 'profile', METHOD => 'delete'

删除表

> drop 'scores'

上述所写如有不对之处,还请各位前辈指出赐教。--五维空间

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
机器学习/深度学习 存储 人工智能
新一代数据库技术:融合人工智能与分布式系统的未来前景
传统数据库技术在应对大规模数据处理和智能化需求方面逐渐显露出瓶颈。本文探讨了新一代数据库技术的发展趋势,重点关注了人工智能与分布式系统的融合,以及其在未来数据管理和分析中的潜在优势。通过深度学习和自动化技术,新型数据库系统能够实现更高效的数据处理和智能化决策,为企业带来更灵活、可靠的数据解决方案。
|
1天前
|
存储 分布式计算 Java
大数据存储技术(3)—— HBase分布式数据库
大数据存储技术(3)—— HBase分布式数据库
6 0
|
6天前
|
分布式计算 Hadoop Java
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
26 2
|
6天前
|
算法 Go 分布式数据库
构建高可用的分布式数据库集群:使用Go语言与Raft共识算法
随着数据量的爆炸式增长,单一数据库服务器已难以满足高可用性和可扩展性的需求。在本文中,我们将探讨如何使用Go语言结合Raft共识算法来构建一个高可用的分布式数据库集群。我们不仅会介绍Raft算法的基本原理,还会详细阐述如何利用Go语言的并发特性和网络编程能力来实现这一目标。此外,我们还将分析构建过程中可能遇到的挑战和解决方案,为读者提供一个完整的实践指南。
|
6天前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
44 2
|
6天前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
15 1
|
6天前
|
存储 NoSQL 大数据
分布式数据库有哪几种
数据库的发展从早期的单机数据库,到现在的分布式数据库。在单机数据库时代,所有的数据都存储在单机中,随着计算机技术的发展,开始出现了多台计算机联合处理数据的需求,从而诞生了分布式数据库。
|
6天前
|
存储 负载均衡 Go
【Go 语言专栏】使用 Go 语言实现分布式数据库操作
【4月更文挑战第30天】本文探讨了使用Go语言实现分布式数据库操作,强调其在并发性能、网络编程、语法简洁和跨平台性上的优势。关键技术和步骤包括数据分片、数据同步、负载均衡及故障转移。通过实例分析和挑战解决,展示了Go语言在大规模数据处理中的高效与可靠性,为开发者提供指导。
|
6天前
|
SQL 监控 关系型数据库
TiDB 分布式数据库快速入门详解
这些示例展示了TiDB的一些基本操作。实际使用时,你可能需要根据具体的业务需求和环境进行调整和优化。
|
6天前
|
存储 运维 物联网
【专栏】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战
【4月更文挑战第29天】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战。它支持混合负载,适用于金融、电商和物联网等领域,提供高性能、低成本的解决方案。尽管面临技术复杂性、数据迁移和性能优化等问题,通过合理策略可克服挑战。随着技术发展,OceanBase 在数字化时代将持续发挥关键作用。