您的位置 首页 > 德语词汇

bookkeeper是什么意思,bookkeeper的意思翻译、用法、同义 都知道zookeeper是干什么的

各位老铁们好,相信很多人对bookkeeper是什么意思,bookkeeper的意思翻译、用法、同义都不是特别的了解,因此呢,今天就来为大家分享下关于bookkeeper是什么意思,bookkeeper的意思翻译、用法、同义以及都知道zookeeper是干什么的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

BookKeeper是一个可靠的日志流记录系统,用于将系统产生的日志(也可以是其他数据)记录在BookKeeper集群上,由BookKeeper这个第三方Storage保证数据存储的可靠和一致性。典型场景是系统写write-aheadlog,即先把log写到BookKeeper上,再对log做处理,比如将log写到内存的数据结构中。BookKeeper同时适用于任何单点写入并要求保证高性能和数据不丢失(StrongDurabiltyGuarantees)的场景。

BookKeeper诞生于Hadoop2.0的namenodeHA。在Hadoop中,出于故障恢复的考虑,Namenode在对它的记录做修改前都会先将本条修改的日志写到磁盘上。但是这里有一个潜在问题,当Namenode发生故障时,很可能连本地磁盘也不能访问,这时之前的记录的日志也就没用了。基于上述考虑,可以将Namenode的日志信息保存在一个可靠的外部Storage中。最初业界通过NFS这样的ShareStorage来实现日志同步。之所以选择NFS,一方面因为可以很方便地实现数据共享,另外一方面是因为NFS相对稳定成熟。虽然如此,NFS也有缺点不能满足HDFS的在线存储业务:网络单点及其存储节点单点。为了满足共享日志的高可用性,社区引入了BookKeeper。除此之外还有默认的HA方案:QJM。

bookkeeper是什么意思,bookkeeper的意思翻译、用法、同义 都知道zookeeper是干什么的

BookKeeper带有多个读写日志的server,称为bookies。每一个bookie是一个BookKeeper的存储服务,存储了写到BookKeeper上的write-ahead日志,及其数据内容。写入的log流(称它为流是因为BookKeeper记录的是byte[])称为ledgers,一个ledger是一个日志文件,每个日志单元叫ledgerentry,也就是bookies是存ledgers的。ledger只支持append操作,而且同时只能有一个单线程来写。ZK充当BookKeeper的元数据存储服务,在zk中会存储ledger相关的元数据,包括当前可用的bookies,ledger分布的位置等。

BookKeeper通过读写多个存储节点达到高可用性,同时为了恢复由于异常造成的多节点数据不一致性,引入了数据一致性算法。BookKeeper的可用性还体现在只要有足够多的bookies可用,整个服务就可用。实际上,一份entry的写入需要确保N份日志冗余在N个bookie上写成功,而我们需要>N个bookie提供服务。在启动BookKeeper的时候,需要指定一个ensemble值,即bookie可用的最小节点数量,还需要指定一个quorums值,即日志写入BookKeeper服务端的冗余份数。BookKeeper的可扩展性体现在可以增加bookie数目,增加bookies可以提升读写吞吐量。

BookKeeper相关的基本概念如下:

Cluster:所有的Bookie组成一个集群(连接到同一个zk地址的Bookie集合);

Bookie:BookKeeper的存储节点,也即Server节点;

Ledger:Ledger是对一个log文件的抽象,它本质上是由一系列Entry(类似于Kafka每条msg)组成的,client在向BookKeeper写数据时也是往Ledger中写的;

Entry:entry本质上就是一条数据,它会有一个id做标识;

Journal:Writeaheadlog,数据是先写到Journal中,这个也是BookKeeper读写分离实现机制的一部分,后续会详细分析;

Ensemble:SetofBookiesacrosswhichaledgerisstriped,一个Ledger所涉及的Bookie集合,初始化Ledger时,需要指定这个Ledger可以在几台Bookie上存储;

WriteQuorumSize:Numberofreplicas,要写入的副本数;

AckQuorumSize:Numberofresponsesneededbeforeclient’swriteissatisfied,当这么多副本写入成功后才会向client返回成功,比如副本输出设置了3,这个设置了2,client会同时向三副本写入数据,当收到两个成功响应后,会认为数据已经写入成功;

LAC:LastAddConfirmed,Ledger已经确认的最近一条数据的entryid。

目前bookKeeper作为底层引擎已经被以下工程使用

OK,本文到此结束,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023