HBase是基于Google BigTable模型开发的,典型的key/value系统
1. HBase数据模型基本结构
2. HBase数据模型的基本概念
1. HBase schema可以有多个Table
2. 每个Table可由多个Column Family组成。
3. HBase列族中的列可以随意定义,因为HBase是无模式的。
- Row Key: HBase有很多行(HBase物理存储时,不是按照行进行存储,而是按照列进行存储),每一行有一个主键,称为RowKey,相当于索引,通过RowKey,可以很快速的定位到一行。HBase每一行中可以有多个Column Family
1. Byte array
2. 表中每条记录的“主键”
3. row key可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes左右),HBase内部保存为字节数组
4. 每一行的rowkey必须是唯一的
5. 在HBase内存,数据按照row key的字典序(byte order)排序存储,因此设计key时要充分排序存储这个特性,将经常一起读取的行存储放到一起。
- Column Family:每个Column Family可以有很多列,上图中有contents、anchor列族。anchor列族中有两个列 cnnsi.com和my.look.ca。通过Row Key定位到行,通过Column Family定位到列
1. 拥有一个名称(string)
2. 包含一个或者多个相关列
3. table在水平方向有一个或者多个column family组成,一个column family中可以由任意多个column组成,即column family支持动态扩展,无需预先定义column的数量以及类型,所有column均以二进制格式存储,用户需要自行进行类型转换。
4. 列名都以列族作为前缀。例如’courses:history’,’courses:math’,都属于courses 这个列族。
1. 属于某一个column family
2. 包含在某一列中
3. familyName:columnName
4. 列名都以列族作为前缀。例如’courses:history’,’courses:math’,都属于courses 这个列族。
1. 每个rowkey唯一,即每行内部没有重复的时间戳
2. 默认值是系统时间戳
3. 类型为Long
4. 无需以递增的顺序插入
1. Byte array
2. 单元格是用来存放数据值的位置,一个单元格中可以多份数据(数据具有版本号),如上图中,contents的有html代码,有三份数据,分别是t3,t5和t6时刻的数据,t3,t5和t6是时间戳
3. Table可以非常稀疏, 很多cell 可以是空的
4. Cell由{行键, 列(列簇名:列名), 时间戳版本号} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。
3. HBase逻辑视图
3.1 JSON Style
上图中,对前面提到的HBase数据模型进行了实例演示:
- cutting和tlipcon是row key,那么row key是如何定义的?一行可以有多个列簇,例如info和roles列簇
- info和roles是column family的名字,每个列簇中包含多个列,比如info中包含height和state两列
- 相同名称的column family可以包含不同的列名和列的个数,例如roles列族在两行中是不同的
- 一列可以包含多个值,使用时间戳标识
- 列里面有value,例如9ft,CA等。要查找到value,那么需要通过row key、info和column名字
3.2 Relational table style
下图是以行列形式表现的数据模型
4. HBase基本操作
4.1 HBase Shell支持的操作
hbase(main):001:0> help
HBase Shell, version 1.0.0, r6c98bff7b719efdb16f71606f3b7d8229445eb81, Sat Feb 14 19:49:22 PST 2015
Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group.
COMMAND GROUPS:
Group name: general
Commands: status, table_help, version, whoami
Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, show_filters
Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables
Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, incr, put, scan, truncate, truncate_preserve
Group name: tools
Commands: assign, balance_switch, balancer, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, compact, compact_rs, flush, major_compact, merge_region, move, split, trace, unassign, wal_roll, zk_dump
Group name: replication
Commands: add_peer, append_peer_tableCFs, disable_peer, enable_peer, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs
Group name: snapshots
Commands: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot
Group name: configuration
Commands: update_all_config, update_config
Group name: security
Commands: grant, revoke, user_permission
Group name: visibility labels
Commands: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility
单行操作:
put/get/scan
多行操作:
Scan
MultiPut
HBase不支持join操作,需要借助于Map-Reduce实现
- 大小: 132.8 KB
- 大小: 555.4 KB
- 大小: 309.1 KB
分享到:
相关推荐
列簇是HBase数据模型中的一个重要的概念,它可以看作是一组列的集合。每个列簇都有自己的物理存储配置,比如是否压缩、是否缓存到内存等。表中的每一行都包含相同的列簇集合,即使某些列簇对于某行没有列,相应的列...
文章首先介绍了HBase的存储模型,探讨了HBase的逻辑模型和物理模型,然后设计了一种基于HBase的矢量空间数据存储模型和并行构建网格空间索引方法。该方法可以大大加快索引构建的处理速度,并且具有一定的可行性和高...
《HBase数据可视化系统构建详解》 在大数据领域,HBase作为一款分布式列式数据库,因其高并发、低延迟和大规模存储的特点,被广泛应用在实时数据处理和分析中。然而,对于非技术人员来说,直接操作HBase命令行进行...
1. HBase的数据模型:HBase是基于列族的NoSQL数据库,数据以行键、列族、列限定符和时间戳的形式存储。理解这一模型对备份策略至关重要。 2. 备份方法: - HBase的快照功能:HBase支持在线快照,通过创建快照可以...
3. HBase数据模型 4. 常用shell操作 5. shell管理操作 6. Hbase Java编程 7. HBase高可用 8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. ...
本文主要探讨了基于HBase的图书借阅数据挖掘模型的设计与实现,以及如何通过Hadoop技术来解决大量图书借阅数据存储与分析的难题。接下来,我们将从以下几个方面详细展开知识点介绍。 首先,HBase作为一个开源的非...
HBase的数据模型基于列族,这使得数据的扩展性和查询效率得到了保证。结合Django的后端处理,系统可以实现对大量文献数据的快速存取和分析。 在数据挖掘部分,系统可能利用了各种算法,如TF-IDF、词频统计、关联...
在确定了以HBase为基础构建数据中心后,本文提出了HBase的数据模型设计思想,即从关系数据库的E-R(实体-关系)模型出发,结合医疗卫生信息的特性,提出了C-O-R(Collection-Order-Row)模型。该模型针对HBase的列...
从数据模型、物理储存、架构等方面介绍,比较简介通俗
基于HBase的汽车市场数据分析平台的设计与实现 本文档旨在设计和实现基于HBase的汽车市场数据分析平台,旨在满足科大讯飞智能汽车事业部的真实需求。该平台采用网络爬虫、列式存储和线性回归等技术,面向市场分析...
HBase的数据模型非常适合处理大规模稀疏数据集。 在将CSV数据导入HBase之前,我们通常需要进行预处理,这包括数据清洗、转换以及将其格式化为适合HBase的键值对。以下是一个简单的Python示例,展示如何使用...
首先,我们来详细讨论HBase的数据模型。行键是表中的唯一标识符,决定了数据的物理存储位置。列族是逻辑上的数据分组,可以包含多个列,每个列都有一个唯一的列限定符。时间戳用于记录数据的版本,HBase默认保留多...
HBase数据模型采用列式存储,每个列族下可以有无限多的列。在存储时,每个列族的列数据不会混合存储,而是以列族为单位顺序存储。这种设计对于读写大量稀疏数据特别有效,因为它只读取相关的列族数据。 4. 物理存储...
HBase的数据模型是非关系型的,数据被组织成表,每行都有一个唯一的行键,列由列族和时间戳定义。这种设计使得HBase适合处理海量半结构化或非结构化数据。 **二、安装HBase** 1. **环境准备**:首先确保已安装Java ...
3. **预处理数据**:根据HBase的存储模型,可能需要对从Hive获取的数据进行预处理。例如,将Hive的宽表转换为HBase的窄行格式,或者按照HBase的行键规则进行数据重组。 4. **批量加载到HBase**:HBase提供了Bulk ...
二、HBase的数据模型 1. 行:行由行键(Row Key)唯一标识,行键是字节序列,决定了行的物理存储位置。 2. 列族(Column Family):是数据的逻辑分组,列族内的列共享相同的存储配置。 3. 列限定符(Column ...
将MySQL数据转换为JSON可以方便地映射到HBase的键值对模型。这通常涉及到编程,例如使用Java、Python或Scala等语言,通过相应的库(如Jackson或Gson)将SQL查询结果转化为JSON对象。 在数据转换过程中,我们还需要...
分布式存储系统:HBase:HBase数据模型与表设计.docx
3. **HBase数据去重**: 在海量数据中去重是一个挑战,HBase的强一致性与随机读写能力使其成为解决此问题的理想选择。可以利用HBase的行键(Row Key)设计来实现数据去重,如使用数据的唯一标识作为行键,确保每个...