本博文的主要内容有:
.为什么要引入列族?
.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