在 Ignite 实例之间平均分配数据
Equal Distribution of data among Ignite instances
我有 9 个 ignite 服务器实例 I0, I1,..., I8
,它们在 PARTITIONED
模式下有缓存,我在其中从 kafka 中的分区 P0, P1.....P8
并行加载数据。这里分区 P0, P1....P8
包含可以由字段 seq_no
唯一标识的条目数,我还使用 part_ID
将条目从一个分区仅并置到一个实例。我将键定义为
class key()
{
int seq_no;
@AffinityKeyMapped
int part_ID; //for collocating entries from one partition to one instance only
}
因此,我正在尝试在 ignite 实例和分区中的缓存条目之间实现一对一映射,例如I0->P0, I1->P1, .......,I8->P8
。但在我的例子中,我得到的映射是
I0-> NULL(No Entries),
I1-> P5,
I2-> NULL,
I3-> P7,
I4-> P2, P6
I5-> P1
I6-> P8
I7-> P0, P4
I8-> P3
亲和性配置部分在这里实现,即具有相同分区 ID 的条目被缓存在相同的点燃实例上。但是,数据在 ignite 实例之间分布不均,即 I4
和 I7
包含 2 个分区的数据,而 I0
和 I2
不包含任何数据。那么这里如何实现数据的均分,使得每个ignite实例得到一份partition数据呢?
Apache Ignite 用户论坛也对此进行了讨论:http://apache-ignite-users.70518.x6.nabble.com/Equal-Distribution-of-data-among-Ignite-instances-td10602.html
- 您可以尝试删除关联键并检查数据是否在所有节点之间均匀分布吗?
- 检查是否所有 Ignite 服务器都是同一个 Ignite 集群的一部分,并且是否所有服务器都分配了相同的堆 space。发生这种情况的原因之一是服务器 0 和服务器 2 可能没有足够的堆 space.
此外,如果第 1 点的答案是肯定的,那么我想您将不得不实现自己的亲和力函数
我有 9 个 ignite 服务器实例 I0, I1,..., I8
,它们在 PARTITIONED
模式下有缓存,我在其中从 kafka 中的分区 P0, P1.....P8
并行加载数据。这里分区 P0, P1....P8
包含可以由字段 seq_no
唯一标识的条目数,我还使用 part_ID
将条目从一个分区仅并置到一个实例。我将键定义为
class key()
{
int seq_no;
@AffinityKeyMapped
int part_ID; //for collocating entries from one partition to one instance only
}
因此,我正在尝试在 ignite 实例和分区中的缓存条目之间实现一对一映射,例如I0->P0, I1->P1, .......,I8->P8
。但在我的例子中,我得到的映射是
I0-> NULL(No Entries),
I1-> P5,
I2-> NULL,
I3-> P7,
I4-> P2, P6
I5-> P1
I6-> P8
I7-> P0, P4
I8-> P3
亲和性配置部分在这里实现,即具有相同分区 ID 的条目被缓存在相同的点燃实例上。但是,数据在 ignite 实例之间分布不均,即 I4
和 I7
包含 2 个分区的数据,而 I0
和 I2
不包含任何数据。那么这里如何实现数据的均分,使得每个ignite实例得到一份partition数据呢?
Apache Ignite 用户论坛也对此进行了讨论:http://apache-ignite-users.70518.x6.nabble.com/Equal-Distribution-of-data-among-Ignite-instances-td10602.html
- 您可以尝试删除关联键并检查数据是否在所有节点之间均匀分布吗?
- 检查是否所有 Ignite 服务器都是同一个 Ignite 集群的一部分,并且是否所有服务器都分配了相同的堆 space。发生这种情况的原因之一是服务器 0 和服务器 2 可能没有足够的堆 space.
此外,如果第 1 点的答案是肯定的,那么我想您将不得不实现自己的亲和力函数