首页 > 代码库 > HBase 简介

HBase 简介

本博文的主要内容有:

  .为什么要引入列族?

  .COLUMN和COLUMNS的区别

  .HBase的索引有哪些?

  .表、列族、列标识、行键、单元格、版本号、逻辑视图、物理视图、客户端视图

    .HBase架构中主要的组件

     .HBase具有的特点

 

 

  和传统数据库不同的是,HBase的表不用定义有哪些列(字段,Column),因为列是可以动态增加和删除的。但HBase表需要定义列族(Column Family)。每张表有一个或者多列族,每个列必须且仅属于一个列族。列族主要用来在存储上对相关的列分组,从而使得减少对无关列的访问来提高性能。一般来说,一个列族就足够使用了。

  HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。HBase利用Hadoop MapReduce来处理HBase中的海量数据,同时利用Zookeeper作为其协同服务。

 

  为什么要引入列族?

  答:列族主要用来在存储上对相关的列分组,从而使得减少对无关列的访问来提高性能。

 

  COLUMN和COLUMNS的区别:

  答:scan操作中的COLUMNS指定的是表的列族,get操作中的COLUMN指定的是特定的列,COLUMN的值实质上为“列族+:+列修饰符”。

 

  HBase的索引有哪些?

  答:HBase是一个类似BigTable的分布式数据库,它是一个稀疏的长期存储的(在硬盘上)、多维度的、排序的映射表。这张表的索引是行关键字、列关键字和时间戳。HBase中的数据都是字符串,没有类型。

 

  .HBase架构中主要的组件?

    .Zookeeper

    .管理目录表的主节点

    .分区(Region)服务器

      Memstore

      WAL

      快缓存

    .分区

      Memstore

      HFile

    .0个或多个文件:分区表示表中一个列族的文件集合

    .布隆过滤

 

  HBase具有的特点?

  答:线性和模块化可扩展性

    严格一致的读取和写入

    表的自动配置和分片

    支持RegionServers之间的自动故障转移

    方便的基类支持Hadoop的MapReduce作业与Apache HBase的表

    易于使用的Java API的客户端访问

    块缓存和布鲁姆过滤器实时查询

    Thrift网关和REST-FUL Web服务支持XML、protobuf和二进制的数据编码选项

    可扩展的基于JRuby(JIRB)的脚本

    支持监控信息通过Hadoop子系统导出到文件或Ganglia

 

HBase 简介