zookeeper在Hbase中的作用
zk在Hbase中的作用
我们知道Hbase集群中主要组件有Hmaster,RegionServer 和 Zookeeper。Hbase强依赖于zk。
在HBase中,ZooKeeper在 Masters 和 RegionServers 之间协调、通信和共享状态。HBase 的设计策略是仅将 ZooKeeper 用于瞬态数据(即用于协调和状态通信)。
因此,如果HBase的ZooKeeper数据被删除,只会影响临时操作——数据可以继续写入/读取 HBase。
Zookeeper集群在Hbase集群中主要作用有如下几个:
[zk: localhost:2181(CONNECTED) 1] ls /hbase[meta-region-server, rs, splitWAL, backup-masters, table-lock, flush-table-proc, master-maintenance, online-snapshot, switch,
master, running, draining, namespace, rsgroup, hbaseid, table]
(1)维护管理了Hbase相关元数据信息
ZK中meta-region-server节点维护hbase的meta表所在的节点信息。
Hbase集群中会维护着一个meta表,这个表存储着Hbase集群所有region的相关信息,包括region所在RegionServer节点,region的rowkey范围,以及region所在表名,列值等信息。
注意:
(1)这个bhase:meta表其实就是一个表的形式存储在hbase中的,只是这个表只有一个region,不切分;
(2)一般这个表region不大,比如一个集群几十万个region的hbase,其meta表也只有几百兆的大小。
这个hbase:meta表或者说这个region也会存储在hbase节点上,具体存储在哪个节点上我们需要维护一下,这件事就是ZK干的。(因为是region就可能因为RegionServer的挂掉,负载均衡等移动位置。Hmaster在启动时会将hbase:meta表加载到ZK集群)。
所以用户CRUD表时需要先去ZK上找到这个hbase:meta元数据表存在哪个节点上,然后在去跟这个节点通信,获取对应的元数据信息。
向Hbase中写数据流程如下:
1、Client先访问zookeeper,获取hbase:meta表位于哪个Region Server。2、访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。3、与目标Region Server进行通讯;4、将数据顺序写入(追加)到WAL;5、将数据写入对应的MemStore,数据会在MemStore进行排序;6、向客户端发送ack;7、等达到MemStore的刷写时机后,将数据刷写到HFile。
从Hbase中读取数据流程如下:
1、Client先访问zookeeper,获取hbase:meta表位于哪个Region Server。2、访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。3、与目标Region Server进行通讯;4、分别在Block Cache(读缓存),MemStore和Store File(HFile)中查询目标数据,并将查到的所有数据进行合并。5、将查询到的数据块(Block,HFile数据存储单元,默认大小为64KB)缓存到Block Cache。6、将合并后的最终结果返回给客户端。
我们在zk上get /hbase/meta-region-server,看下,会发现habse:meta表存储在一个节点上。
(2)实现Hmaster节点的高可用管理,HA
[zk: localhost:2181(CONNECTED) 10] ls /hbase/backup-masters
记录集群中备份Master的节点信息,当Master挂了后故障转移使用的,比如主master挂了,zookeeper就会通过选举机制,从备master中选举出来一个当主master角色。
(3)对集群所有RegionServer状态监控,宕机后会通知Hmaster;每个RS启动时都会在ZK上注册,然后master会去监控这个znode
[zk: localhost:2181(CONNECTED) 7] ls /hbase/rs
rs就保存了hbase集群中的所有存活RegionServer的节点,RS每个节点在启动时会去该/hbase/rs目录下注册,注册一个属于自己的临时节点。如果节点超时,就会被清理,Hmaster也会去监听状态,这样RS下线就会知道,好将对应的region转移走。
(4)分布式一致锁的提供,保证数据写入的事务性,表的删除,新建,更新需要维护全局锁
[zk: localhost:2181(CONNECTED) 12] get /hbase/table-lock
Zookeeper在分布式系统中的一大核心作用就是提供了分布式锁,保证每次操作的事务性。
我们都知道Hbase中表的存储是分布式存储的,一张表分多个region存储在不同的RegionServer上,那么如果我们通过多个客户端同时操作一个表,如何在分布式的情况下保证表数据的准确性呢?所以客户端每次在对表的DDL之前都需要先获取表的全局锁,防止多个操作互相冲突。最终实现单次操作的原子性,要么都成功,要么都失败,进而保证分布式数据的准确性。而这个分布式全局锁的提供者就是zookeeper。
(5)其他
1、 flush-table-proc
这个很重要,存放了Hbase集群中所有表信息。
[zk: localhost:2181(CONNECTED) 18] ls /hbase/table
2、namespace
namespace类似于mysql中的数据库概念,在hbase中主要区分多租户时做表空间的逻辑隔离;
[zk: localhost:2181(CONNECTED) 26] ls /hbase/namespace
3、 draining/hbaseid
draining用于通过创建具有serverName,port,startCode形式的子znode,就是/habse/rs下的子节点信息
这使您可以停用多个 RegionServers,而不会存在将区域临时移动到稍后将停用的 RegionServer 的风险。
hbaseid其实就hbase集群的唯一标识符。因为我们可以将一个zk集群共享,供多个hbase集群复用,所以要唯一标识一个集群。
zookeeper在Hbase中的作用相关推荐
- 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么
原文链接 什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是 ...
- Zookeeper在Dubbo中的作用及Zk集群的选举原理
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan Zk在Dubbo中的作用 zk在dubbo中是服务注册与发现的注册中心,dubbo的调用过程是c ...
- ZooKeeper在分布式应用中的作用
作者:陈叶皓(携程邮轮研发部软件架构师) 是不是要在标题的"作用"之前加上"重要"两个字,我犹豫了一下,zookeeper提供的功能是如此的重要,以至于如果你在 ...
- 转载-zookeeper在kafka中的作用
2019独角兽企业重金招聘Python工程师标准>>> 1)Broker注册 Broker在zookeeper中保存为一个临时节点,节点的路径是/brokers/ids/[broke ...
- Zookeeper在Kafka中的作用
文章目录 1. Broker注册 2. Topic注册 3. __consumer_offsets偏移量 4. 其他信息 5. Broker Controller选举 6. 负载均衡 6.1 生产者负 ...
- zookeeper在Dubbo中的作用
为什么80%的码农都做不了架构师?>>> 流程: 1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL 2.服务消费者启 ...
- 大数据技术之kafka (第 3 章 Kafka 架构深入) Zookeeper 在 Kafka 中的作用
Kafka 集群中有一个 broker 会被选举为 Controller,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 leader 选举等工作. Controller 的 ...
- ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用
ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用 - 文章 - 伯乐在线 /* # The number of milliseconds of each tick tickTim ...
- HBase中Bloomfilter类型的设置及使用的理解
1.Bloomfilter的原理? 可参考 http://hi.baidu.com/yizhizaitaobi/blog/item/cc1290a0a0cd69974610646f.html 2 ...
最新文章
- vue2路由移除#号(Apache)
- echarts热力背景图_Echarts 图表中设置背景图片
- Supporting Multiple Screens 翻译 支持各种屏幕(上)
- 比较ArrayList和数组的区别
- 生日小助手的详细规划——本博文随时更新,持续有效……
- python大学_大学为什么不先开python?
- processing作品代码_创意编程 | Processing的初步学习
- tomcat连接oracle非常慢,关于myEclipse中tomcat 6.0启动慢的有关问题
- Asp.Net的性能问题
- 2021 王道考研 数据结构+习题讲解
- Vue中 引入外部字体并使用
- 你的喜爱——软件测试方法和技术
- http 406 java_java – Spring JSON请求获取406(不可接受)
- Maya测量尺寸python脚本Mesh Resizer
- Creator动态获取,数据文,JSON并使用,枚举Enum,cc.sys.localStorage获取音效的判断 ,冒泡排序做排行榜 ,动态获取提示(cc.loader.loadRes),制作签到
- 设计模式-工厂模式的3中不同实现[JAVA]
- 第一部分 知己知彼
- H5拖拽地址-高德地图VUE版
- sql -803 DB2修改主键起始值
- endnote中科大版是什么意思_ios14.2rc是什么意思 ios14.2rc版是原来的“GM”版吗
热门文章
- linux 邮件客户端 n1,分享|N1:下一代开源邮件客户端
- 图文转换软件的需求分析
- php 家政服务管理系统
- [YTU](3273)吃鸡之团队合作 ---- BFS
- matlab图形标注名称_MATLAB图形的标注与修饰
- 低电压版cpu java编程_cpu低电压版跟标准电压版区别哪个好
- 使用VBA脚本在ppt里实现效果比较成熟的抽奖系统
- AI英雄 | 对话Citrix副总裁:人类的意义在于灵魂 通用AI不可能实现!
- UDP协议疑难杂症全景解析
- 828计算机组成原理和操作系统,解放军信息工程大学2015年《828计算机组成原理与操作系统》考研专业课真题试卷...