HBASE

HBase 分布式存储详解
一。概念

HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。数据以二进制byte数组存储。

二。数据模型(Row key,Columns family,Cell,Time Stamp)


三。常用命令

名称

命令表达式

创建表

create '表名', '列族名1','列族名2','列族名N'

查看所有表

list

描述表

describe  ‘表名’

判断表存在

exists  '表名'

判断是否禁用启用表

is_enabled '表名'

is_disabled ‘表名’

添加记录      

put  ‘表名’, rowKey, ‘列族 : 列‘  ,  ''

查看记录rowkey下的所有数据

get  '表名' , 'rowKey'

查看表中的记录总数

count  '表名'

获取某个列族

get '表名','rowkey','列族'

获取某个列族的某个列

get '表名','rowkey','列族:列’

删除记录

delete  ‘表名’ ,‘行名’ , ‘列族:列'

删除整行

deleteall '表名','rowkey'

删除一张表

先要屏蔽该表,才能对该表进行删除

第一步 disable ‘表名’ ,第二步  drop '表名'

清空表

truncate '表名'

查看所有记录

scan "表名"  

查看某个表某个列中所有数据

scan "表名" , {COLUMNS=>'列族名:列名'}

更新记录

就是重写一遍,进行覆盖,hbase没有修改,都是追加

四。体系图


五。写流程

1、 clienthregionserver发送写请求。

2、 hregionserver将数据写到hlogwrite ahead log)。为了数据的持久化和恢复。

3、 hregionserver将数据写到内存(memstore

4、 反馈client写成功。

六。数据flush过程

1、 memstore数据达到阈值(默认是64M),将数据刷到硬盘,将内存中的数据删除,同时删除Hlog中的历史数据。

2、 并将数据存储到hdfs中。

3、 hlog中做标记点。

七、数据合并过程

1、 当数据块达到4块,hmaster将数据块加载到本地,进行合并

2、 当合并的数据超过256M,进行拆分,将拆分后的region分配给不同的hregionserver管理

3、 hregionser宕机后,将hregionserver上的hlog拆分,然后分配给不同的hregionserver加载,修改.META.

4、 注意:hlog会同步到hdfs

八。数据读流程

1、 通过zookeeper-ROOT- .META.表定位hregionserver

2、 数据从内存和硬盘合并后返回给client

3、数据块会缓存

九。hmaster的职责

1、管理用户对Table的增、删、改、查操作;

2、记录region在哪台Hregion server

3、在Region Split后,负责新Region的分配;

4、新机器加入时,管理HRegion Server的负载均衡,调整Region分布

5、在HRegion Server宕机后,负责失效HRegion Server 上的Regions迁移。

十。hregionserver的职责

HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBASE中最核心的模块。

HRegion Server管理了很多table的分区,也就是region

十一。client职责

HBASE Client使用HBASERPC机制与HMasterRegionServer进行通信

管理类操作:ClientHMaster进行RPC

数据读写类操作:ClientHRegionServer进行RPC

十二。HBase存储格式
存储在Hadoop HDFS文件系统上,两种文件类型:
1.HFile,HBase中KeyValue数据的存储格式,二进制文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是Hfile
2. HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File
十二。HBase性能优化

1.修改linux最大文件数     vi /etc/security/limits.conf

2.修改JVM配置     修改hbase-env.sh文件中的配置参数     HBASE_HEAPSIZE 4000 #HBase使用的 JVM 堆的大小

3.修改HBase配置:hbase-site.xml






### HBase 的使用指南与教程 #### 1. 学习资源推荐 对于希望深入学习 HBase 的用户来说,有几本经典书籍可以作为参考资料。例如,《HBase: The Definitive Guide》是一本覆盖范围广泛的参考书,适合初学者和中级学习者[^1]。如果更倾向于实践案例,则可以选择《HBase in Action》,该书专注于实际应用场景,更适合有一定开发经验的技术人员[^1]。 #### 2. 命令行工具 HBCK2 使用说明 HBCK2 是 HBase 提供的一个修复工具,主要用于解决元数据一致性问题和其他潜在的数据损坏情况。要运行 HBCK2,可以通过 `$HBASE_HOME/bin/hbase` 脚本来启动,并指定 `-j` 参数来加载对应的 JAR 文件。具体命令如下: ```bash ${HBASE_HOME}/bin/hbase --config /etc/hbase-conf hbck -j ~/hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-xxx.jar ``` 默认情况下,如果不加特殊参数,执行 `hbck` 将会调用旧版本的修复工具(即 HBCK1)。因此,在需要高级功能时务必显式指明路径[^2]。 #### 3. 集成 Spark 和 HBase (HBase-RDD) 为了简化大数据处理流程中的复杂操作,社区还提供了专门针对 Apache Spark 设计的支持库——HBase-RDD。此项目允许开发者创建自定义逻辑轻松读取、写入甚至删除存储在 HBase 中的内容。更多详情可访问官方仓库链接获取最新文档和支持信息[^3]: [https://gitcode.com/gh_mirrors/hb/hbase-rdd](https://gitcode.com/gh_mirrors/hb/hbase-rdd) #### 4. Zookeeper 在 HBase 架构中的角色 值得注意的是,Zookeeper 对于整个 HBase 生态系统至关重要。它不仅负责协调多个节点之间的通信,而且承担着诸如选举 Master 实例、维护 RegionServer 注册表等功能。通过采用 Zap 协议保障集群内部状态同步一致,从而减少应用程序层面额外的工作量[^4]。 以下是基于 Java 编程语言连接到远程 HBase 表格实例的一个简单例子: ```java Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "localhost"); try(Connection connection = ConnectionFactory.createConnection(config)){ Table table = connection.getTable(TableName.valueOf("myTable")); Get get = new Get(Bytes.toBytes("rowKeyExample")); Result result = table.get(get); byte[] value = result.getValue(Bytes.toBytes("columnFamily"), Bytes.toBytes("qualifier")); } catch(IOException e){ System.err.println(e.getMessage()); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值