Fork me on GitHub

Hbase使用总结

目录

  • 背景
  • 第一部分 环境依赖
  • 第二部分 交互接口
  • 第三部分 任务提交
  • 参考文献及资料

背景

HBase是一个高可靠性、高性能、可伸缩的分布式存储系统:
• HBase是一个构建在HDFS上的分布式NoSQL数据库;
• HBase是基于Google BigTable模型开发的,典型的key/value系统;
• 具有松散的表结构;原生海量数据分布式存储;支持随机查询、范围查询
• 高吞吐,低延迟;
• 列存储,多版本,增量导入,多维删除

• HDFS Vs HBase:
• Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,
不适用于提供实时计算;
• HBase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件
系统上,由HDFS保证其高容错性

HDFS Vs HBase:
• HBase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块儿中
• HDFS并不知道的hbase存的是什么,它只把存储文件视为二进制文件,也就
是说,hbase的存储数据对于HDFS文件系统是透明的

HBase特性:
• 大:一个表可以有数十亿行,上百万列;
• 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张
表中不同的行可以有截然不同的列;
• 面向列:面向列(族)的存储和权限控制,列(族)独立检索;
• 稀疏、多维、排序的map:空(null)列并不占用存储空间,表可以设计的非常稀疏;每个
单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
• 数据类型单一:Hbase中的数据都是字符串,没有类型。
• 强一致性读写:HBase 不是“最终一致性”数据存储。这让它很适合高速计数聚合类任务;
• 自动分片(Automatic sharding): HBase 表通过 region 分布在集群中。数据增长时,region
会自动分割并重新分布;
• RegionServer 自动故障转移和负载均衡;
• Hadoop/HDFS 集成:HBase 支持开箱即用地支持 HDFS 作为它的分布式文件系统;
• MapReduce: HBase 通过 MapReduce 支持大并发处理;
• 实时、随机地大数据访问;HBase内部使用LSM-tree(log-structured merge-tree)作为数据存
储架构,LSM-tree周期性地合并小文件到较大的文件,以减少硬盘寻址
• Java 客户端 API:HBase 支持易于使用的 Java API 进行编程访问;
• Thrift/REST API:HBase 也支持 Thrift 和 REST 作为非 Java 前端的访问;
• Block Cache 和 Bloom Filter:对于大容量查询优化, HBase 支持 Block Cache 和 Bloom Filter
• 快照支持

面向列的数据存储 Vs 面向行的数据存储:
HBase的逻辑视图
面向行的数据存储面向列的数据存储
对于记录的增加/修改效率较高对于读取数据效率较高
读取包含整个行的页面只需要读取列
最适合用于OLTP 对于OLTP还没有优化
将一行中所有的值一起序列化,
然后是下一行的值 ,等等
将列中的值一起序列化,依次类

行数据存储在内存或磁盘中的连
续页面中
列以页面的列式存储在内存或磁
盘中

参考文献及资料

1、 Apache Spark support,链接

0%