文章目录
HBase概述
数据库概念
nosql型数据库
Not Only sql,如:mongodb,Redis(基于内存),HBase
关系型数据库
Oracle(port:1521),MysqL(面向中小企业,port:3306),sql Server(port:3306),PG sql
MPP数据库
大规模分布式,如Greenplum,HWAQ
HBase简介
HBase是一种构建于HDFS之上的面向列存储的分布式数据库。利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中海量数据,利用zookeeper作为其分布式协同服务。
主要用来存储结构化和半结构化的松散数据(列存Nosql数据库)
HBase是一个针对结构化数据(结构化,半结构化)的可伸缩,高可靠,高性能,分布式和面向列存储的动态模式数据库。和传统关系数据库不同,HBase采用了Bigtable的数据模型:增强的稀疏排序映射表(Key/Value),其中Key由行键(rowkey),列簇(column)和时间戳构成。
HBase提供了对大规模数据的随机,实时读写访问,同时HBase中保存的数据可以使用MapReduce|Spark来处理,它将数据存储和并行计算完美的结合在一起。
HDFS的缺点:不支持对数据的随机读写,修改,只适合存储大文件;HBase在某种程度上可以解决HDFS的缺点,可以提高HDFS的复用性
面向列存储的优势
- 当每一列的数据类型相同时,可以做高效的压缩;
- 查询速度快,列即索引;
HBase和HDFS以及RDBMS的直接区别
HBase和Hadoop(HDFS)之间的区别
-
HDFS提供了高延迟的批处理;HBase提供了单行记录低延迟随机访问;
HBase和RDBMS的区别
-
HBase是无模式,没有固定列,只定义列簇;RDBMS有模式(schema),描述整个表的结构;
-
HBase适合宽表的数据,水平可伸缩;RDBMS适合小表,难于扩展;
-
HBase数据不是规范化的;RDBMS是规范化的数据。
HBase特点
注意:使用HBase版本要注意Hadoop版本和JDK版本,要兼容支持
- 数据量大:一个表可以存储上亿行,上百万列,查询快,可以直接介入在线业务;
- 面向列:面向列的存储和权限控制,列可以通过列簇独立检索;
- 稀疏:对于空的列,并不占用存储空间,因此表的设计可以非常稀疏;
- 多版本:每个Cell中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入的时间戳;
- 无类型:HBase中的数据都是字符串,没有类型。
- 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的添加,同一张表中不同行可以有皆然不同的列。
HBase存储
- HBase是面向列簇的数据库,列簇就是把相同的一些列指定到同一组中;
- table定义列簇,也可以指定多个列簇,列簇是可增可减的;
- 没有数据库概念,有namespace命名空间,所有的表都是依赖于一个namespace下,类似于database的概念;
- 行键:rowkey,类似于主键的概念,唯一标识一行数据;
- 列簇:column family包含不同的列(字段);
- version:同一个字段的值可以有多个版本,版本(值 )的区分通过时间戳,默认显示最新版本的version;
- cell单元格:rowkey+column family+version 唯一确定一个单元格的值;
- 列:column在列簇里的字段,不是固定的,可以随机增加|减少。
Hadoop生态系统图
HBase中的表
HBase数据模型
部署HBase
环境:Hadoop环境,Zookeeper环境
HBase是分布式主从架构的数据库
主节点:master,负责管理工作,类似于NameNode,同时也是守护进程;
从节点:regionserver,具体数据流和数据存储工作,类似于Datanode,同时也是守护进程。
启动HBase
注意:启动之前一定要先启动Hadoop和Zookeeper
hbase-daemon.sh start|stop master
hbase-daemon.sh start|stop regionserver
或使用
start-hbase.sh|stop-hbase.sh
HBase的四个架构
1.Client
访问HBase
2.Master
管理类工作的
管理regionserver,负责负载均衡
管理元数据信息(namespace,table)
3.RegionServer
存放region(数据)
响应读写请求,管理表中的数据
4.Zookeeper
保证Master节点对外提供服务只有一台
作为HBase的入口
监控master,负责切换主备
存储HBase的部分元数据信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。