zoukankan      html  css  js  c++  java
  • 终于找到hbase分布式存储数据的方式.

    1,通过Zookeeper定位目标Region Server,最后定位Region。

    2,Region Server扩容,通过将自身发布到Master,Master均匀 分布。

    Cassandra和HBase主要设计思路对比
    CassandraHBase
    一致性Quorum NRW策略

    通过Gossip协议同步Merkle Tree,维护集群节点间的数据一致性

    单节点,无复制,强一致性
    可用性1,基于Consistent Hash相邻节点复制数据,数据存在于多个节点,无单点故障。

    2,某节点宕机,hash到该节点的新数据自动路由到下一节点做 hinted handoff,源节点恢复后,推送回源节点。

    3,通过Gossip协议维护集群所有节点的健康状态,并发送同步请求,维护数据一致性。

    4,SSTable,纯文件,单机可靠性一般。

    1,存在单点故障,Region Server宕机后,短时间内该server维护的region无法访问,等待failover生效。

    2,通过Master维护各Region Server健康状况和Region分布。

    3,多个Master,Master宕机有zookeeper的paxos投票机制选取下一任Master。Master就算全宕机,也不影响Region读写。Master仅充当一个自动运维角色。

    4,HDFS为分布式存储引擎,一备三,高可靠,0数据丢失。

    5,HDFS的namenode是一个SPOF。

    伸缩性1,Consistent Hash,快速定位数据所在节点。

    2,扩容需在Hash Ring上多个节点间调整数据分布。

    1,通过Zookeeper定位目标Region Server,最后定位Region。

    2,Region Server扩容,通过将自身发布到Master,Master均匀 分布。

    负载均

    请求Zookeeper取得整个集群地址,然后根据Consistent Hash选择合适的节点。client会缓存集群地址。请求Zookeeper取读写数据路由表定位Region Server,Master会修改这个路由表。Client自身也会缓存一部分路由信息。

    如果Key的第一部分是时间或者序列数,所有新的Key都会被插入同一个区域,一直到此区域被塞满。此处存在热点问题。

    数据差异比较算法Merkle Tree , Bloom FilterBloom Filter
    锁与事务Client Timestap(Dynamo使用vector lock)Optimistic Concurrency Control
    读写性能数据读写定位非常快。数据读写定位可能要通过最多6次的网络RPC,性能较低。
    可维护性架构无中心化,维护成本低。

    新增keyspace需要重启整个集群。

    组件过多,架构复杂,维护成本较高。

    删除表非常方便。

    列排序支持不支持
    map/reduce支持不是很好源生支持
    访问接口Thrift多种,包括Thrift
    点评1,弱一致性,数据可能丢失。

    2,可用性高。

    3,扩容方便。

    4,如果不需要map/reduce的话,维护相当简单。

    1,强一致性,0数据丢失。

    2,可用性低。

    3,扩容方便。

    4,组件过多,架构复杂,维护成本较高。

  • 相关阅读:
    git 常用命令
    目录
    算法--双栈排序
    算法--栈的翻转练习题
    算法--双栈队列
    算法--可查询最值的栈练习题
    Spark算子--union、intersection、subtract
    Spark算子--take、top、takeOrdered
    Spark算子--countByKey
    Spark算子--SortBy
  • 原文地址:https://www.cnblogs.com/chenli0513/p/2314228.html
Copyright © 2011-2022 走看看