hbase产生原理 特点 架构 hive区别

Hadoop 的限制
Hadoop 只能执行批量处理,并且只以顺序方式访问数据。这意味着必须搜索整个数据集,即使是最简单的搜索工作。
当处理结果在另一个庞大的数据集,也是按顺序处理一个巨大的数据集。在这一点上,一个新的解决方案,需要访问数据中的任何点(随机访问)单元。

总结:
    (1)海量数据量存储成为瓶颈,单台机器无法负载大量数据
    (2)单台机器 IO 读写请求成为海量数据存储时候高并发大规模请求的瓶颈
    (3)随着数据规模越来越大,开始考虑数据存储横向水平扩展,使得存储服务可以增加/删除,而目前的关系型数据库更专注于一台机器

HBase 是 BigTable 的开源(源码使用 Java 编写)版本。是 Apache Hadoop 的数据库,是建立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存
储、可伸缩、多版本的 NoSQL的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。
HBase 依赖于 HDFS 做底层的数据存储,BigTable 依赖 Google GFS 做数据存储
HBase 依赖于 MapReduce 做数据计算,BigTable 依赖 Google MapReduce 做数据计算
HBase 依赖于 ZooKeeper 做服务协调,BigTable 依赖 Google Chubby 做服务协调
以下五点是 HBase 这个 NoSQL 数据库的要点:
    ① 它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据、全表扫描
    ② HBase 查询数据功能很简单,不支持 join 等复杂操作
    ③ 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。

    ④ HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)
    ⑤ 主要用来存储结构化和半结构化的松散数据。

HBase 中的表特点
    1、大:一个表可以有上十亿行,上百万列
    2、面向列:面向列(族)的存储和权限控制,列(簇)独立检索。
    3、稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
    4、无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列
结构化:数据结构字段含义确定,清晰,典型的如数据库中的表结构
半结构化:具有一定结构,但语义不够确定,典型的如 HTML 网页,有些字段是确定的(title),有些不确定(table)
非结构化:杂乱无章的数据,很难按照一个概念去进行抽取,无规律性
行键(RowKey)与 NoSQL 数据库们一样,rowkey 是用来检索记录的主键。访问 HBase Table 中的行,只有三种方式:
    1、通过单个 row key 访问
    2、通过 row key 的 range
    3、全表扫描HBase 会对表中的数据按照 rowkey 排序(字典顺序)。存储时,数据按照 rowkey 的字典序(byte order)排序存储。设计 key 时,要
充分排序存储这
个特性,将经常一起读取的行存储放到一起。(位置相关性)

HBase 应用场景
1、半结构化或非结构化数据
2、记录非常稀疏 
3、多版本数据
4、超大数据量
RDBMS 数据库-----读写分离----分库 中间层join  -----分表 
hbase只需要加机器即可,HBase 会自动水平切分扩展,跟 Hadoop 的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。
    
hbase 集群结构

    region:是 hbase 中对表进行切割的单元,由 regionserver 负责管理

    hamster:hbase 的主节点,负责整个集群的状态感知,负载分配、负责用户表的元数据(schema)管理(可以配置多个用来实现 HA),hmaster 负载压力相
对于 hdfs 的 namenode 会小很多

    regionserver:hbase 中真正负责管理 region 的服务器,也就是负责为客户端进行表数据读写的服务器每一台 regionserver 会管理很多的 region,同一个 regionserver 上面管理的所有的region 不属于同一张表

    zookeeper:整个 hbase 中的主从节点协调,主节点之间的选举,集群节点之间的上下线感知„„都是通过 zookeeper 来实现
    HDFS:用来存储 hbase 的系统文件,或者表的 region

HBase 和 Hive 的比较

扫描二维码关注公众号,回复: 2553880 查看本文章

相同点
    1、架构在 Hadoop 之上,用 HDFS 做底层的数据存储,用 MapReduce 做数据计算
不同点
    1、Hive    ETL 工具                                                                  HBase  弥补Hadoop 实时操作缺陷

    2、Hive    纯逻辑表,不做数据存储和计算,依赖 Hadoop      HBase  物理表,    Hash 表来存储索引查询

    3、Hive    数仓,全表扫描用Hive,文件存储                           HBase  数据库,索引访问用 HBase,面向列的 NoSQL 数据库 

    4、Hive    存入数据时不做校验,属于读模式存储系统             HBase 插入数据,做 Schema 校验,所以属于写模式存储系统

    5、Hive    不支持单行记录操作,数据处理依靠 MapReduce,操作延时高,HBase 支持单行记录的 CRUD,并且是实时处理,效率比 Hive 高得多

猜你喜欢

转载自blog.csdn.net/u014156013/article/details/81304432