`
bit1129
  • 浏览: 1067822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【HBase二】HBase数据模型

 
阅读更多

HBase是基于Google BigTable模型开发的,典型的key/value系统

 

1. HBase数据模型基本结构



 

 

 

2. HBase数据模型的基本概念

  • Schema,Table

      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 这个列族。

 

  • Column

     1. 属于某一个column family

     2. 包含在某一列中

     3. familyName:columnName

     4. 列名都以列族作为前缀。例如’courses:history’,’courses:math’,都属于courses 这个列族。

 

  • Version Number

     1. 每个rowkey唯一,即每行内部没有重复的时间戳

     2. 默认值是系统时间戳

     3. 类型为Long

     4. 无需以递增的顺序插入

 

 

 

  • Value(Cell,单元格):

    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的矢量空间数据分布式存储研究.pdf

    文章首先介绍了HBase的存储模型,探讨了HBase的逻辑模型和物理模型,然后设计了一种基于HBase的矢量空间数据存储模型和并行构建网格空间索引方法。该方法可以大大加快索引构建的处理速度,并且具有一定的可行性和高...

    hbase数据可视化系统

    《HBase数据可视化系统构建详解》 在大数据领域,HBase作为一款分布式列式数据库,因其高并发、低延迟和大规模存储的特点,被广泛应用在实时数据处理和分析中。然而,对于非技术人员来说,直接操作HBase命令行进行...

    hbase备份和数据恢复

    1. HBase的数据模型:HBase是基于列族的NoSQL数据库,数据以行键、列族、列限定符和时间戳的形式存储。理解这一模型对备份策略至关重要。 2. 备份方法: - HBase的快照功能:HBase支持在线快照,通过创建快照可以...

    HBase海量数据存储实战视频教程

    3. HBase数据模型 4. 常用shell操作 5. shell管理操作 6. Hbase Java编程 7. HBase高可用 8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. ...

    基于HBase的图书借阅数据挖掘模型设计与实现.pdf

    本文主要探讨了基于HBase的图书借阅数据挖掘模型的设计与实现,以及如何通过Hadoop技术来解决大量图书借阅数据存储与分析的难题。接下来,我们将从以下几个方面详细展开知识点介绍。 首先,HBase作为一个开源的非...

    基于Django LayUI HBase的文献数据挖掘系统.zip

    HBase的数据模型基于列族,这使得数据的扩展性和查询效率得到了保证。结合Django的后端处理,系统可以实现对大量文献数据的快速存取和分析。 在数据挖掘部分,系统可能利用了各种算法,如TF-IDF、词频统计、关联...

    基于HBase的医疗卫生数据中心构建与异构数据库同步研究

    在确定了以HBase为基础构建数据中心后,本文提出了HBase的数据模型设计思想,即从关系数据库的E-R(实体-关系)模型出发,结合医疗卫生信息的特性,提出了C-O-R(Collection-Order-Row)模型。该模型针对HBase的列...

    Hbase简介,从数据模型、架构等方面介绍

    从数据模型、物理储存、架构等方面介绍,比较简介通俗

    毕业设计(论文)任务书-基于HBase的汽车市场数据分析平台的设计与实现.doc

    基于HBase的汽车市场数据分析平台的设计与实现 本文档旨在设计和实现基于HBase的汽车市场数据分析平台,旨在满足科大讯飞智能汽车事业部的真实需求。该平台采用网络爬虫、列式存储和线性回归等技术,面向市场分析...

    hbase存储csv数据的代码实现

    HBase的数据模型非常适合处理大规模稀疏数据集。 在将CSV数据导入HBase之前,我们通常需要进行预处理,这包括数据清洗、转换以及将其格式化为适合HBase的键值对。以下是一个简单的Python示例,展示如何使用...

    hbase的操作数据demo

    首先,我们来详细讨论HBase的数据模型。行键是表中的唯一标识符,决定了数据的物理存储位置。列族是逻辑上的数据分组,可以包含多个列,每个列都有一个唯一的列限定符。时间戳用于记录数据的版本,HBase默认保留多...

    浅谈HBASE数据结构设计.pdf

    HBase数据模型采用列式存储,每个列族下可以有无限多的列。在存储时,每个列族的列数据不会混合存储,而是以列族为单位顺序存储。这种设计对于读写大量稀疏数据特别有效,因为它只读取相关的列族数据。 4. 物理存储...

    Hbase 安装与基本使用

    HBase的数据模型是非关系型的,数据被组织成表,每行都有一个唯一的行键,列由列族和时间戳定义。这种设计使得HBase适合处理海量半结构化或非结构化数据。 **二、安装HBase** 1. **环境准备**:首先确保已安装Java ...

    java解决hive快速导数据到Hbase代码

    3. **预处理数据**:根据HBase的存储模型,可能需要对从Hive获取的数据进行预处理。例如,将Hive的宽表转换为HBase的窄行格式,或者按照HBase的行键规则进行数据重组。 4. **批量加载到HBase**:HBase提供了Bulk ...

    HBase官方文档中文版-HBase手册中文版

    二、HBase的数据模型 1. 行:行由行键(Row Key)唯一标识,行键是字节序列,决定了行的物理存储位置。 2. 列族(Column Family):是数据的逻辑分组,列族内的列共享相同的存储配置。 3. 列限定符(Column ...

    mysql中数据经处理导入到hbase中

    将MySQL数据转换为JSON可以方便地映射到HBase的键值对模型。这通常涉及到编程,例如使用Java、Python或Scala等语言,通过相应的库(如Jackson或Gson)将SQL查询结果转化为JSON对象。 在数据转换过程中,我们还需要...

    分布式存储系统:HBase:HBase数据模型与表设计.docx

    分布式存储系统:HBase:HBase数据模型与表设计.docx

    基于Hadoop和HBase的大规模海量数据去重.zip

    3. **HBase数据去重**: 在海量数据中去重是一个挑战,HBase的强一致性与随机读写能力使其成为解决此问题的理想选择。可以利用HBase的行键(Row Key)设计来实现数据去重,如使用数据的唯一标识作为行键,确保每个...

Global site tag (gtag.js) - Google Analytics