0

我们想在工作人员的 Apache Spark 中使用 ChronicleMap 在 VM 中存储共享缓存。目前,我们正在使用 Hazelcast 共享缓存,但显然,能够免费使用堆外内存并避免 tcp-ip(甚至超过 127.0.0.1)是我们喜欢 ChronicleMap 的原因,这就是我们希望能够使用它。

这个想法是让位于同一物理机器中的所有执行程序共享缓存,并且缓存将被持久化,tmpfs以便它在 VM 本身处于活动状态之前保持有效(我们不需要在实例生命周期中持久保存这些值)和任何加入的工人都可以开始使用它。理想情况下,我们需要对存储的键进行 LRU 驱逐,尽管 ChronicleMap 不支持它,但考虑到它使用堆外内存,我想我们可以忍受这个限制,但更令人担忧的是它要求在访问期间从崩溃中恢复这是我们设置中的一个问题。

例如,假设我们有 5 个执行程序在同一个 VM 上运行,共享缓存,其中一个 VM 在访问损坏缓存期间崩溃。其他执行者无从得知,只能让其中一人恢复,大家等待。如果至少可以保证在恢复期间或在损坏的缓存上的并发恢复或访问会引发一些异常,那将有所帮助,因为那时,访问失败的每个人都可以尝试获取文件锁,然后开始恢复过程以及其他任何访问在此期间可能会收到另一个异常,表明恢复正在进行中,最后,缓存已修复并且事情恢复正常,但从文档看来,行为只是未定义,这留下了太多疑问。

是否可以让 ChronicleMap 在我们的设置中工作?考虑到这些要求,有没有其他人成功地让它在 Apache Spark 中工作?任何建议都会有所帮助。

4

0 回答 0