重点:HBase的基本数据模型、拓扑结构、部署配置方法,并介绍通过命令行和编程方式使用HBase的基本方法。
HBase:一种列存储模式与键值对相结合的NoSQL软件,但更多的是使用列存储模式,底层的数据文件采用HDFS存储,其文件结构和元数据等由自身维护.
HBase是Hadoop的重要成员,提供了分布式数据表和更高效的数据查询能力,弥补了HDFS只能进行文件管理以及MapReduce不适合完成实时任务的缺陷.
HBase利用HDFS实现数据分布式存储,数据分块以及多副本等,HBase在此基础上实现了对记录的更新和删除.Hbase具有灵活的数据模型,不仅可以基于键进行快速查询,还可以实现基于值、列名等的全文遍历和检索。
1、HBase概述HBase的优点:
采用面向列加键值对的存储模式
可以实现便捷的横向扩展,对于元数据管理能力的扩展,可以通过数据分片的方式进行.
可以实现自动的数据分片.
可以实现严格的读写一致性和自动的故障转移
可以实现对全文的检索与过滤
支持通过命令行或者java/python等语言来进行操作
HIVE与HBase之间的关系,属于协作关系:
通过ETL工具将数据源抽取到HDFS存储;
通过Hive清洗、处理和计算原始数据;
HIve清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase
数据应用从HBase查询数据;
HIVE
HBASE
HIVE数据仓库:Hive本质将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。(主要用于解决数据处理和计算问题)
HBASE数据库:一种面向列存储的非关系型数据库(主要用于解决实时数据查询问题)
HIVE用于数据分析、清洗:HIVE是适用于离线的数据分析和清洗,延迟较高.
HBASE用于存储结构化和非结构化的数据;HBASE适应于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。比如:日志明细、交易清单、轨迹行为。
HIVE基于HDFS、MapReduce:HIVE存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行
HBASE基于HDFS:数据持久化存储的体现形式是Hfile,存放于DataNode中,被RegionServer以region的形式进行管理。
延迟较低,接入在线业务使用:面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问数据。
2、HBase的数据结构模型
HBase逻辑数据模型:
HBase物理存储方式,其中StuInfo列族的物理存储方式:
HBase采用的是一种面向列的键值对存储模式。
表4-1中有2行记录,行键:001和002,其他所有信息均可以看做是行内记录的字段,或者列。
表中有2个列族(Column Family),列族的名字必是可显示的字符串。每个列族中含有若干列(Columns)。列族可以看做HBase表结构(Schema)的一部分,需要在建表时预先定义。
//eg,创建表:create\'表名\',\'列族名1\', \'列族名2\', \'列族名N\' create \'table_test001\',\'basic\',\'test001\'