HBase基础总结

本文详细介绍了HBase的基础知识,包括它作为bigtable开源版本的角色,事务的四大特性,以及HBase的数据库要点,如高并发、列存储、多版本特性。还探讨了HBase的数据结构、CAP理论、架构组件、Rowkey设计原则和优化,以及HBase与Hive的区别。此外,文章还涉及了HBase的写入和读取流程以及系统优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase是什么?

hbase是bigtable的开源(源码使用Java编写)版本。是建立在hdfs之上的,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的NoSQL的分布式数据存储系统,实现对大型数据的实时、随机读写的读写访问

事务的四大特性

事务主要用于管理insert、update、delete语句。
一般来说,事务必须满足四个条件:原子性、一致性、隔离性、持久性。

  • 原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某环节。事务在执行过程中发生错误,会回滚到事务开始前的状态,就像这个事务没有执行过一样。
  • 一致性:在事务开始之前、结束之后,数据库的完整性没有被破坏。
  • 隔离性:数据库i允许多个并发事务,同时对其数据进行读写和修改的能力。隔离性可以防止多个并发事务执行,由于交叉执行,而导致的数据不一致。事物的隔离分为不同级别,包括读未提交;读提交;可重复读;和串行化。
  • 持久性:事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失数据。

HBase的数据库要点

  1. 高并发,可扩展,解决海量数据集的随机实时增删改查
  2. HBase 本质依然是 Key-Value 数据库,查询数据功能很简单,不支持 join 等复杂操作(可通过 Hive 支持来实现多表 join 等复杂操作)
  3. 不支持复杂的事务,只支持行级事务
  4. HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)
  5. 主要用来存储结构化和半结构化的松散数据。

数据结构

  • 结构化:数据结构字段含义确定,清晰,典型的如数据库中的表结构
  • 半结构化:具有一定结构,但语义不够确定,典型的如HTML网页,有些字段是确定的(title),有些不确定(table)
  • 非结构化:杂乱无章的数据,很难按照一个概念去进行抽取,无规律性

hbase的特点

  • 面向列
    hbase是面向列的存储和权限控制,并支持独立索引。列式存储,其数据在表中是按照某列存储的,在查询只需要少数的几个字段时,能够大大的减少读取的数据量。
  • 多版本
    hbase每一个列的存储有多个Version。
  • 稀疏性
    为空的列不占用存储空间,表可以设计的非常稀疏。

  • 一个表可以有数十亿行,上百万列。
  • 数据类型单一
    hbase中的数据都是字符串,没有类型

CAP理论

在这里插入图片描述

  • Consistency(一致性):数据一致更新,所有数据变动都是同步的。
  • Availability(可用性):保证每个请求不管成功或者失败都有响应
  • Partition tolerance分区容
HBase Shell 是 HBase 提供的一个命令行工具,用于与 HBase 数据库进行交互操作。通过它,用户可以方便地对表、数据以及配置等进行管理。以下是关于 **HBase Shell 基础实验的心得**: --- ### 实验心得总结 1. **熟悉基本语法** - 使用 `create` 创建表格时需要明确指定列族名称及其配置选项,例如压缩算法或版本控制策略。 ```shell create 'my_table', {NAME => 'cf1', VERSIONS => 5} ``` - 插入数据使用 `put` 命令,并注意 rowkey 的设计原则(如唯一性和查询效率)。 ```shell put 'my_table', 'row1', 'cf1:column1', 'value1' ``` 2. **理解分布式存储特点** - 每次插入的数据会被分配到对应的 Region 中,而 Regions 可能分布在集群的不同节点上。因此,在实际测试过程中可能会观察到延迟波动现象。 3. **掌握常用命令** - 查询单条记录可以用 `get`; ```shell get 'my_table', 'row1' ``` - 扫描整个表格内容则利用 `scan`; ```shell scan 'my_table' ``` - 删除特定单元格值可通过 `delete` 完成;若想删除整张表,则需先禁用再销毁: ```shell disable 'my_table'; drop 'my_table'; ``` 4. **性能优化初探** - 表结构设计合理与否直接影响访问速度和资源占用率。比如适当调整块大小(Block Size)能够提高读取密集型应用的表现。 5. **错误排查技巧** - 如果遇到异常情况(如连接失败),尝试检查 ZooKeeper 状态和服务是否正常运行。 6. **实践体会** - 初学阶段应从简单案例入手逐步深入复杂场景演练,不断巩固理论知识的同时积累实战经验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值