• HBase介绍


    目录

    1.什么是HBase?

    2.HBase的优点

    3.HBASE与传统数据库对比

    ps: 行级数据库 vs 列式数据库

    4.HBase角色

    5.HBase与zookeeper的关系


    1.什么是HBase?

    HBase是一个高可用、高性能、可伸缩的列式分布式存储系统。说白了,HBase就是一种在HDFS上运行的的列式数据库。
    HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
    HBase是Google Bigtable的开源实现,但是与之相比也有很多不同点。但是无论怎样HBase都是利用Hadoop MapReduce来处理其中的海量数据,并且HBase利用zookeeper协同服务程序。

    2.HBase的优点

    1)具有良好的横向扩展性能(线性扩展),随着数据量增多可以通过增加节点的方式进行横向支撑;
    2)数据存储在HDFS上,使得HBase不再需要另外的备份模式,而是直接使用HDFS上的备份模式保证了数据安全;
    3)通过zookeeper协调查找数据,访问速度快;
    4)具备列式数据库所有优点,在查询非结构化数据速度方面优越于行级数据库;
    5)高可用性能非常完备,不用担心单点故障;
    6)擅长处理小型数据和hadoop集群进行很好的互补。

    3.HBASE与传统数据库对比

    1)当数据量达到一定级别以后,没有办法通过传统的文件系统进行存储。
    2)当数据量达到一定级别以后,数据库对数据操作将会变得非常缓慢。比如说原来的CRUD(增删改查)语句将会变得异常缓慢。计算是加了索引也没有很好的办法解决,并且索引开销也将大大升高。
    3)传统数据库自身缺乏对数据异常庞大以后的一种备份机制。只能依靠外部方法进行备份。
    4)传统数据库严重依赖操作系统和文件系统性能,并且传统数据库在横向扩展方面都做的不是尽如人意,不如分布式系统在横向扩展方面解决方案做的优秀。

    ps: 行级数据库 vs 列式数据库

    传统数据库,如Oracle、MySQL、msSQL、sybase等等,是行级数据库,存储密集型数据库;
    而HBASE、Redis、NONGODB等,是NOSQL(NOT ONLY SQL),列式数据库,内存密集型数据库。
    行级数据库是如何读取数据的?
    比如说有一张表格info:
    id name sex age
    1 张三 男 23
    select name from info; 行级数据库是在数据库中每行每行的寻找,虽然只找到了张三这条数据,其实它也是把张三所在的整行数据都读取出来后,把张三进行筛选出来然后进行结果的显示。而列式数据库不是用行去找数据,而是直接用列去找数据并把它拿出来,大大提高了效率。

    4.HBase角色

    一个或者多个主节点,HMaster

    1)管理用户对Table的增删改查操作;
    2)记录Region在哪台HRegion Server上;
    3)在Region Split后,负责新Region的分配;
    4)新机器加入时,管理HRegion Server的负载均衡,调整Region分布;
    5)在HRegion Server宕机后,负责失效HRegion Server上的Regions迁移。

    多个从节点,HRegionServer

    1)HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块;
    2)HRegion Server管理了很多table的分区,也就是Region。

    HBase的client

    HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信。
    管理类操作:Client与HMaster进行RPC;
    数据读写类操作:Client与HRegionServer进行RPC。

    5.HBase与zookeeper的关系

    1)保存在HMaster的地址和backup-master地址
    HMaster:
    a)管理HRegionServer
    b)做增删改查表的节点
    c)管理HRegionServer中的表分配

    2)保存表-ROOT-的地址
    HBase默认的根表,检索表。

    3)HRegionServer列表
    表的增删改查数据。
    和HDFS交互,存取数据。

  • 相关阅读:
    vscode配置c/c++环境
    protobuf简单示例
    heapq.merge()高效合并有序序列
    TCP Server and Client Demo
    golang泛型简介
    context讲解
    go语言range语句中的值的坑
    deque双端队列
    泛型函数
    反射
  • 原文地址:https://www.cnblogs.com/zhengna/p/9362004.html
Copyright © 2020-2023  润新知