您好,登录后才能下订单哦!
小编给大家分享一下HBase架构的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
通常认为,Hadoop主要包含以下四大组件:
分布式锁服务 Zookeeper
分布式文件系统 HDFS
分布式计算框架 MapReduce
分布式数据库 HBase
其中,Zookeeper是HDFS、MapReduce、HBase都要依赖的基础组件,它为分布式系统中的一致性问题的提供解决方案。
狭义的Hadoop,就是指HDFS和MapReduce;广义的Hadoop,包括HDFS、MapReduce、HBase,甚至也包括这个生态圈中的Hive、Spark等。
关于Hadoop生态圈的内容,见:http://www.36dsj.com/archives/23504
Hbase构建于HDFS之上,它依赖HDFS和Zookeeper。
下面分别介绍各类结点的作用:
Client包含访问HBase的接口,并维护着一些Cache来加快对HBase的访问,比如regione的位置信息。
保证任何时候,集群中只有一个master;实现Master主从节点的failover。
实时监控Region Server的状态,将Region Server的上线和下线信息实时通知给Master。
存储Region的寻址入口。
存储HBase的schema,包括有哪些table,每个table有哪些column family。
负责RegionServer的负载均衡。
管理和分配Region,比如在region split时分配新的Region;在Region Server退出时迁移其内的region到其它Region Server上。
负责schema的更新请求,实现DDL操作(如对table、column familiy的create、drop等),并将schema的更新同步到Zookeeper。
权限控制(ACL)。
维护Master分配给它的region,处理对这些region的IO请求。
负责切分在运行过程中变得过大的region。
Client通过Zookeeper、Region Server寻址,找到用户talbe、RowKey所在的Region Server后,就直接从该Region Server读写数据了。这个过程不需要Master的参与,Master只是维护table和region的元数据信息,负载很低。
HBase有个特殊的表:.META. ,它存储了所有用户table对应的Region位置信息,它是不可split的;而ZooKeeper节点(/hbase/meta-region-server)存储了.META.表的位置。
客户端在第一次访问用户table的流程为:
从ZooKeeper(/hbase/meta-region-server)中获取hbase:meta的位置(HRegionServer的位置),缓存该位置信息。
从Region Server中查询用户table对应请求的RowKey所在的Region Server,缓存该位置信息。
从查询到的Region Server读取Row。
从这个过程中,我们发现客户会缓存这些位置信息,然而第二步它只是缓存当前RowKey对应的HRegion的位置,因而如果下一个要查的RowKey不在同一个HRegion中,则需要继续查询hbase:meta所在的HRegion,然而随着时间的推移,客户端缓存的位置信息越来越多,以至于不需要再次查找hbase:meta Table的信息,除非某个Region因为宕机或split被移动,此时需要重新查询并且更新缓存。
以上是“HBase架构的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。