java - 警告 "unknown addresses are found in partition table"

标签 java distributed distributed-computing hazelcast

使用 Hazelcast 时,我收到如下警告:

Jun 21, 2015 11:10:15 AM com.hazelcast.partition.InternalPartitionService
WARNING: [192.168.0.18]:5701 [5a11] [3.4.2] Following unknown addresses are found\
in partition table sent from master[Address[192.168.0.9]:5701]. 
(Probably they have recently joined or left the cluster.) {
        Address[192.168.0.13]:5701 } 
Jun 21, 2015 11:10:29 AM com.hazelcast.partition.InternalPartitionService 
WARNING: [192.168.0.18]:5701 [5a11] [3.4.2] Following unknown addresses are found\
in partition table sent from master[Address[192.168.0.20]:5701]. 
(Probably they have recently joined or left the cluster.) {
        Address[192.168.0.11]:5701
        Address[192.168.0.17]:5701 }  
Warning: irregular exit, check log

原因是什么,我是否必须采取措施来避免这些警告?

<小时/>

详细信息:

这些警告发生在我的分布式计算结束时,而不是针对所有实例。因此,当出现此警告时,其他一些实例很可能已终止,因此“最近离开了集群”。

但是为什么实例离开会导致地址未知呢?这是否意味着发出警告的实例x以某种方式发现实例y已经离开,而主机尚未发现并发送y的地址x,导致此警告?

我应该采取措施避免出现此警告吗?这是否意味着 y 忘记了最后应该做的一些清理工作,以便主节点立即发现 y 离开了集群?实例执行的唯一清理是其 HazelcastInstanceshutdown()

日志末尾不规则退出是否是分区表不一致造成的?

最佳答案

为了实现均匀的数据分布,整个 key 空间被划分为可配置数量的分区(默认为 271)。如果您知道 key 和多个分区,您始终可以知道 key 属于哪个分区。

尽管 Hazelcast 是一个点对点系统并且没有主节点的概念,但有一个主节点计算分区表,该分区表将分区号与包含所述分区的节点地址相关联。当集群拓扑改变需要重新计算分区表。

我相信您的问题是由节点非正常关闭引起的。

关于java - 警告 "unknown addresses are found in partition table",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963407/

相关文章:

java - 在 Java SE 中使用 CDI 和 JPA 最简单的方法是什么?

Java - 配置对象属性

file - Spark 分区/集群执行

pytorch - 在 torch 分布式训练中获取本地世界大小

python - ZeroRPC 发布/订阅聚合结果

java - Jersey 在抛出 WebApplicationException 时产生意外的默认媒体类型

java - 我应该在 Java POJO 上使用 "extends"来提取公共(public)属性吗?

debugging - 如何可视化许多并发多阶段进程的行为?

build - 使用bitbake进行分布式编译

java - 有哪些方法可以分发异步批处理任务?