做ETL,设计HBase有段时间了,虽然还是很不成熟,但是有点小小经验,做个笔记
HBase暂不谈他负载均衡,容灾性能这堆,只说他在应用上的一些小小经验作为第一节
先谈谈rowkey cf cq的设计
keyvalue的结构是
------------- | ---- | --------Key--- | -------- | -------- | ------------ | -------- | |||
key length | value length | row length | row |
column family length |
column family |
column Qualifer |
time stamp | key type | value |
Hbase的存储数据结构是基于B+Tree的LSM tree
所以设计好rowkey cf cq是提高hbase查询速度的关键,尤其是rowkey,因为如果一次匹配只在rowkey就可以前缀匹配出,则将省略了遍历了巨大的cq。
rowkey
在工作中的物理模型,通常现在考虑建立在哪个维度上,因为通常会对这个维度进行操作,如对信息中人这个维度进行建模,就需要将人的唯一标识放在rowkey中(有时维度的标识不会只有一个名词性属性,如地理位置:经度+维度)。
之后需要考虑对于这个物理模型中的通用属性,如时间戳,数据源类型等这种通用属性,也需要拼接在rowkey中,举个例子人id_Long.Max-time_sourceid这样的一个rowkey,就可以在人这个维度上,找到时间段time上执行数据源sourceid的记录了。
cf
对于hbase的cf,个人不太建议使用,首先hbase的cf不是很成熟,在region split和file split的时候,多个cf的效果都不好;而且在设计上,cf的确在理论上可以在一个表建立多个维度,但是多个cf在实际中的优点暂时没有看出来(可能是因为工作局限性所导致)
cq
对于cq,因为是B+Tree的最后一层,而且hbase这个列式存储不对key进行压缩(很可惜,可能不想违背列式存储数据只在最后数据获取才解压的原则),所以首先不建议把cq设计的过长。cq也是支持前缀匹配的,而且因为hbase是列式存储,非结构化得数据,所以cq上可以有value这样的值,在反向索引中,会经常这样设计。
反向索引
hbase是列式存储,所以没有索引这样的东西。但是要是想通过hbase表中列的值,获得rowkey,那么就需要反向索引了,反向索引一般rowkey就是查询内容如手机号值,或查询类型_查询内容,cq为主表rowkey,value可以设置为一些权重,时间戳等附加信息,或是主表rowkey中一些常用信息,如人的姓名,这样就可以减少一次查询
统计
数据挖掘中,关联和统计恐怕是各占半壁江山,比起关联,统计还是比较简单的。
统计是按照新的维度,对现有的信息进行分类,并获得所要的维度属性,如次数,top等等。
比如,从刚刚那个表 rowkey:人id_long.max-time_sourceid 中,获得每天登陆某某网站次数最多的前100人
设计的物理模型为:rowkey:yyyyMMdd_long.max-count_人id cq:人属性类型 value: 人属性值
在统计时,只需要对人+天这两个维度做分类,同时需要sourceid为某某网站,做求和计算,就可以得出count值,在最后存储时,保存成物理模型的样子就可以了。
下一节的物理模型想谈谈建模
相关推荐
HBASE物理模型:HBASE物理模型由Hmaster主服务器、Region和Region服务器组成。Hmaster主服务器负责维护表和region的元数据,为Region server分配Region,负责Region server的负载均衡,发现失效的Region server并...
HBase官方中文文档概述了Apache HBase TM的基本概念、配置方法、升级策略、shell使用、数据模型、架构设计、安全机制、API接口、性能调优以及故障排除等多方面的知识。HBase是一个开源的非关系型分布式数据库(NoSQL...
- **概念视图与物理视图**:解释了HBase表在逻辑上和物理上的组织方式,有助于理解数据的存储结构。 - **表、行、列族、Cells**:详细定义了HBase数据模型中的各个组成部分及其作用。 - **数据模型操作**:概述了...
- **物理视图**:详细介绍 HBase 表在物理存储上的组织方式。 - **表**:解释 HBase 中“表”的概念及其特点。 - **行**:介绍 HBase 中行键(row key)的概念及其设计原则。 - **列族**:说明 HBase 中列族(column ...
HBase是基于Google Bigtable的设计理念实现的,它提供了一个表模型,其中包含行、列族、列和时间戳。每个单元格都存储着一个值,可以通过行键、列族、列和时间戳精确定位。 5.2.2 HBase集群结构 HBase集群由Master...
Apache HBase是一个分布式的、版本化的、基于列的NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,提供了高吞吐量的数据访问。HBase中文API为开发者提供了在中文环境中操作HBase的便利。 1. **入门** - **介绍*...
1. **非关系型**:HBase采用Key-Value存储方式,不遵循严格的表格结构和预定义的数据类型,更适应灵活多变的数据模型。 2. **面向列而非行**:RDBMS以行为主,HBase以列簇为单位,更适合处理大规模的稀疏数据。 3....
数据模型是理解HBase的核心,包括概念视图(如表、行、列族和单元格)和物理视图,以及版本管理和排序机制。HBase的数据模型支持ACID属性,保证了数据的一致性。 Schema设计是HBase应用中的关键环节,涉及表的创建...
为了确保系统的稳定性和性能,Hbase提供了丰富的监控和管理工具,包括JMX接口、Web UI以及第三方监控系统集成,使得管理员能够实时查看系统状态,诊断问题并进行性能调优。 总结起来,Hbase作为Hadoop生态系统中的...
1. **HBase体系架构** HBase的架构基于分布式计算框架Hadoop,它主要由四个关键组件构成: - **ZooKeeper**:作为一个协调服务,ZooKeeper负责维护集群的状态信息,如HMaster和HRegionServer的选举,确保系统的...
在《Hadoop大数据开发实战》的教学教案中,第8章主要关注HBase分布式存储系统,这是一个针对大规模数据处理的关键技术。HBase是构建在Hadoop HDFS之上的NoSQL数据库,设计目标是处理海量数据的同时提供高并发的实时...
在本课程资料中,我们聚焦于“数据架构师”这一角色,通过第10节到第24节的深入学习,旨在帮助学员掌握作为一名高效的数据架构师所需的关键技能和知识。下面将对这些章节的内容进行详细阐述。 1. **第10节:数据...
6. **第六天-HBase.ppt** - 这个PPT很可能是课程的主要内容,涵盖了HBase的所有核心知识点,包括安装配置、数据模型、API使用、性能优化以及常见问题解决方案。 总的来说,通过这些资源,学生可以全面了解HBase的...
1. HBase主要特点:HBase是一个分布式、面向列的存储系统,它具有高可靠性、高性能和可伸缩性。面向列存储意味着数据按列进行存储,而不是按行,这种设计使得HBase在处理大量数据时能够非常高效。 2. HBase默认使用...
数据模型包括逻辑模型和物理模型,其中逻辑模型由行键、列族、时间和具体数据组成,物理模型则涉及数据的存储和访问方式,如行键作为检索主键,以及如何处理版本和空值。 6.4 Pig和Hive:Pig是用于大数据分析的高级...
2. 数据模型:概念模型(如实体-联系模型),逻辑模型(如关系模型),物理模型及其相互转换。 3. 关系数据库理论:包括关系代数、元组关系演算、域关系演算,以及SQL语言的基本操作(选择、投影、连接、除法等)。 ...
在文中提到的分布式数据存储方法中,对HBase的预分区机制进行了研究,通过深入分析装备数据的模型特点,提出了一个快速存储海量装备数据的有效策略。 3. HBase与列式存储:HBase是一个分布式、可扩展的大数据存储...
3. **.mdl模型加载**:能够加载和解析.md模型格式,这通常包含了3D物体的几何数据、材质信息和动画数据,为游戏中的角色和物体赋予生动的外观。 4. **内置图元**:预设多种基本几何形状,如立方体、球体、圆柱体等...
第1章 绪论 1 1.1 云计算的概念 1 1.2 云计算发展现状 3 1.3 云计算实现机制 5 1.4 网格计算与云计算 6 1.5 云计算的发展环境 9 1.5.1 云计算与3G 9 1.5.2 云计算与物联网 9 1.5.3 云计算与移动互联网 10 1.5.4 ...