Hazelcast IMDG 与 Hazelcast Jet 配置

Hazelcast IMDG vs Hazelcast Jet config

如何在 Hazelcast jet 中读取 Hazlecast IMDG 数据。

在我的例子中,我需要 Hazlecast IMDG(分布式缓存)来为将来存储数据,还需要 jet 来执行批处理和流处理。

所以我将使用 Hazelcast IMDG(MapStore) 保存数据并使用 Hazelcast jet 进行过滤。

public class Test {

    HazelcastInstance hz = Hazelcast.newHazelcastInstance();
    JetInstance jet = Jet.newJetInstance();

    public static void main(String[] args) {
        Test t = new Test();
        t.loadIntoIMap();
        t.readFromIMap();
    }

    public void loadIntoIMap() {
        IMap<String, String> map = hz.getMap("my-distributed-map");
        // Standard Put and Get
        map.put("1", "John");
        map.put("2", "Mary");
        map.put("3", "Jane");
    }

    public void readFromIMap() {
        System.err.println("--manu---");
        jet.getMap("s").put("1", "2");
        System.err.println(jet.getMap("s").size());
        System.err.println(jet.getMap("my-distributed-map").size());
    }

}

我们是否需要单独配置(jet 和 IMDG)或在单个配置中我可以在 jet 中共享 Hz IMap 数据。

我对 jet 和 Hazelcast IMDG 有点困惑

答案因您要使用的版本而异。

IMDG 最高 4.2 和 Jet 4.5

Hazelcast Jet 建立在 Hazelcast IMDG 之上。当您启动 Jet 实例时,会自动有一个 IMDG 实例 运行。有 JetInstance#getHazelcastInstance 方法从 Jet 实例检索 IMDG 实例和 JetConfig#setHazelcastConfig 配置 IMDG 特定配置。

您可以使用 com.hazelcast.jet.pipeline.Sources#map(String)

从 Jet 中的群集访问地图

您不应在同一台机器上分别启动 IMDG 和 Jet。但是,您可以创建 2 个集群,一个 IMDG,一个 Jet 并使用 com.hazelcast.jet.pipeline.Sources#remoteMap(String, ClientConfig) 从 Jet 连接,其他数据结构类似。

如果您已经在使用 Hazelcast,则可能是这个版本。

Hazelcast 5.0

在最近的 5.0 版本中,这两个产品合并在一起。有一个人工制品可以使用 - com.hazelcast:hazelcast。您只需创建一个 Hazelcast 实例,如果启用,您可以使用 HazelcastInstance#getJet

从那里获取 Jet 引擎

5.0 与 IMDG 4.2 100% 兼容,只需更改依赖项并且大部分与 Jet 4.5 兼容,但需要更改一些代码。