Hbase(操作,非原理)个人理解

六、Zookeeper

  1. Zookeeper概念

    • Zookeeper是一个大型分布式的可靠的协调系统
  2. Zookeeper特点

    • 最终一致性
    • 可靠性
    • 实时性:保证读数据时全部一致使用Sync来协调
    • 等待无关
    • 原子性
    • 顺序性
  3. Zookeeper功能

    • 配置维护
    • 名字服务
    • 分布式同步
    • 组服务
  4. Zookeeper架构

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jVfqNADP-1571974469577)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567733389147.png)]

    架构解析:

    • Zookeeper架构仍然是主从结构即:Leader/Server

    • Zookerper各部分作用

      (本质Leaner都是Server,只是不同的Server担任不同的角色,比如Observer,Follower)

      角色描述
      Leader负责投票发起和决议,更新系统状态
      LearnerFollower用于接收客户请求并返回结果,参与投票
      LearnerObserver只与客户端连接,写请求发给Leader,Observer不参与投票,只同步Leader状态。目的是扩展系统,提高读取速度,支撑更多的客户端。
    • 在Zookeeper中,并不是每个节点都是Leader或Learner。只有少部分是Leader或Learner,即领导者总是少数。原因是:为了决策快速。并且,保证follower是奇数个(避免选举平票),但是Searver并不一定是奇数个,因为还有Observer,且Observer不参与投票。且在更新时,大于一半的投票就算成功。

    • 注意:4个server只能down掉1个,3个Server也只能down掉1个

  5. Zookeeper核心投票选主过程原理:

    • 什么时候选主?:leader崩溃或leader失去了大多数的followers

    • 选举算法:一种是基于 basic paxos。另一种是基于fast paxos

    • 选举流程:

      ​ basic paxos

      1. 首先由发起选举的Server的线程来担任选举线程,功能是对投票进行统计
      2. 选举线程向Server发起一次询问(包括自己)
      3. 选举线程将收到的回复,首先验证是否是自己发起的询问(即验证zxid是否一致),然后获取对方的id(myid),并存储到当前询问对象列表中。最后获取对方提议的Leader的相关信息(id,zxid),并存储在投票记录表中。
      4. 收到所有Server的回复后,计算zxid最大的Server,将其设为下一次投票的Server作为Leader
      5. 进行投票,如果其票数大于等于n/2+1,则此为Leader否则,继续选取最大的zxid的Server继续投票

      ​ fast paxos

      1. fast paxos与basic paxos不同的是,选举线程的Server首先推荐自己作为Leader,如果获得其他Server的提议的Server后,记录下来然后重复像basic paxos一致,找到最大的zxid的Server进行投票。
    • basic paxos与fast paxos不同在于,basic paxos是由选举线程批量选取所有推荐的Server然后找出最大的zxid进行投票,这样重复。而fast paxos是首选推举自己然后再接受其他提议进行选择最大zxid进行重复选举。

  6. Zookeeper在其他组件作用:

    • Zookeeper在HDFS中,作用是Namenode给DataNode的消息推送,DataNode给NameNode的心跳推送Ping,以及当namenode宕掉时让standby namenode替换
    • Zookeeper在HBase中,作用是保证只有一个HMaster;存储所有HRegion的寻址入口;存储HBase的schema和table的元数据。(即保存每个表被拆分的HRegion在哪个HRegion server)

七、Hbase列式数据库

  1. Hbase列式数据库特点:

    1. 仅能通过主键row key和主键的range来检索数据
    2. 仅支持单行事务(即不能多表连接)
    3. 存储半结构化和非结构化的松散数据
    4. 主要依靠横向扩展
    5. 数据类型只有一种=>字符串类型
    6. 可以进行数据的修改、添加,删除、查询
    7. 存储结构是B树结构
    8. Hbase存放多个版本的数据,使用时间戳来记录
  2. Hbase架构:(主从架构)

    1. HBase Master与多个HRegion Server服务器群

    2. HMaster管理所有HRegion服务器(但所有的服务器都是通过Zookeeper来协调,来处理HBase运行可能遇到的错误)。

      为HRegion Server分配HRegion;进行HRegion的负载均衡;

      当节点宕掉时将其上面的HRegion进行有效转移。

    3. HRegion Server服务器的作用是存储HRegion,所谓的HRegion是指的是一张表可以被划分为多个HRegion(按行分割),所以一张表会被存储到多个HRegion Server上。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LNPbTpmx-1571974469579)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567750493996.png)]

  3. HBase结构:

    1. 列族:HBase表中的每个列都归属于某个列族,列族在使用表之前定义。列如:courses:history courses:math,一个列族有多个列。一个列族存储在单个目录保存,不同的列族的目录是分离的。

    2. 时间戳:每次修改,都会添加时间戳,时间戳表示的是数据的版本。

    3. HRegion包括:Hlog,多个StoreFile(存储文件)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8suaw1S-1571974469580)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567751324360.png)]

  4. HBase的两个基础表:

    1. ROOT表:记录META表的Region信息

    2. META表:记录用户表的Region信息

      (即:ROOT表获得Region在META表的哪个信息存储区域,META获得Region具体在哪个HRegion Server上。)

  5. Hbase基本操作命令

    • 查看Hbase中的表:list

    • 查看表结构:describe '表名'

    • 创建表:create '表名','列族名1','列族名2','列族名3'...

    • DML操作:

      1. 添加数据:put '表名','主键名','列族名:列名','值'

        列如:

        put 'table1','xiaoming','add:city','徐州'

      2. 查询数据(获得某一列):

        get '表名','主键名','列族:列名'

        获得某个列族:get '表名','主键名','列族'

        获得某个主键的所有信息:get '表名','主键名'

      3. 扫描某n行数据;

        scan '表名,{LIMIT=>行数}'

      4. 获得数据行数(即有多少主键)

        count '表名'

      5. 更新数据

        put '表名','主键名','列族:列','值'

      6. 删除数据

        delete '表名','主键名','列族:列名'

        删除整个行:deleteall '表名','主键名'

    • DCL操作:

      1. 删除一列

        disbale '表名'
        alter '表名',{NAME=>'列名',METHOD=>'delete'}
        enable '表名'
        
        #即先禁用再删除再启用
        
      2. 删除表

        disable '表名'
        drop '表名'
        
      3. 截断表

        truncate '表名'
        
    • 其他操作:

      1. 查看表是否存在:exists '表名'
      2. 查看表是否启用:is_enabled '表名'
      3. 查看表是否被禁用:is_disabled '表名'
      4. 查看Hbase服务状态:status
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值