5

我在描述 HBase 的 Zookeeper 配置时遇到过这个问题,我对这个术语不熟悉。“N”是否与我的 HBase 集群中的节点数有关?或者我应该在 Zookeeper 集群中使用的节点数?

4

2 回答 2

8

2f+1 是指您需要的可靠性/可用性级别,通常与性能无关。

ZooKeeper 集成(服务集群)由一个或多个服务器组成,这些服务器对每次更改进行“投票”。大多数原始服务器都需要“批准”任何更改才能被接受。客户端(在本例中为 hbase)连接到 ensemble 并使用它进行协调。如果 ensemble 启动,客户端可以执行此操作,如果 ensemble 关闭,则 hbase 无法使用该服务。

假设您在集合中有 3 台服务器(f=1),如果其中一台出现故障,服务仍然正常(2 台占多数)。但是,如果第二台服务器发生故障,则服务将关闭。

假设您有 5 台服务器 (f=2) 在集合中。在这种情况下,两台服务器可能会出现故障(3 台占多数),而服务仍处于运行状态。

通常 3 台服务器绰绰有余。但是对于在线生产服务环境,我建议 5。为什么?假设您将 1 台服务器停机进行定期维护。如果您有 5 台服务器,即使剩余的一台活动服务器意外故障,您也可以保持正常运行。

那为什么没有101台服务器呢?——坦斯塔夫。请参见此处的图表。ZK 是一种基于仲裁的服务。随着服务器数量的增加,写入性能实际上会下降。需要更多的服务器来参与仲裁过程(投票)。结果,写操作/秒减少。(虽然读取不受影响)。

于 2010-11-19T23:15:43.850 回答
4

n指系统可以经历但仍然能够与至少大多数节点一起运行的故障数。两个例子:

n = 1- 一个节点可能会在所有节点中出现2n+1 = 3故障

n = 2- 两个节点可能会在所有节点中出现2n+1 = 5故障

等等!

于 2010-11-19T18:44:48.153 回答