更具体地说,Hazelcast Jet解决了Flink无法解决的问题(同样好),反之亦然?
Hazelcast Jet 的用例是什么?有没有人开始使用它?
我们的项目使用 Hazelcast 用于持有键值对的分布式映射和对这些密钥的分布式计算,以在持有密钥的节点上运行任务。我们也使用 NearCache 解决方案。
我很想知道 Hazelcast Jet 有什么不同,它解决了什么问题?
对于不耐烦的读者:这是一项正在进行的工作,我在此过程中寻求帮助。请不要根据我的临时数据来判断这些工具,因为在我尝试获得更好的结果时它们可能会发生变化。
我们正处于架构决策过程的中间,该工具用于分析协同仿真的输出。
作为该过程的一部分,我被要求编写一个基准测试工具,并获取有关多个分布式处理框架速度的数据。
我测试的框架是:Apache Spark、Apache Flink、Hazelcast Jet。并作为比较基准纯 Java。
我使用的测试用例是一个简单的“这是一个 Pojo 列表,pojo 中的一个字段是双精度值。找到最小的(最小)值”。
简单,直接,希望具有高度可比性。
四分之三的测试使用一个简单的比较器,第四个(flink)使用与比较器基本相同的减速器。分析函数如下所示:
Java: double min = logs.stream().min(new LogPojo.Comp()).get().getValue();
Spark: JavaRDD<LogPojo> logData = sc.parallelize(logs, num_partitions);
double min = logData.min(new LogPojo.Comp()).getValue();
Hazel: IStreamList<LogPojo> iLogs = jet.getList("logs");
iLogs.addAll(logs);
double min = iLogs.stream().min(new LogPojo.Comp()).get().getValue();
Flink: DataSet<LogPojo> logSet = env.fromCollection(logs);
double min = logSet.reduce(new LogReducer()).collect().get(0).getValue();
Run Code Online (Sandbox Code Playgroud)
我对此进行了广泛的测试,改变了测试列表的大小以及分配的资源。结果让我大吃一惊。最佳结果如下(所有数字以毫秒为单位,1 个 mio pojo,每个 10 个测试):
结果:
java:
Instances:
List:
Process: 37, 24, 16, 17, 16, 16, 16, 16, 16, 16,
Overall: 111, 24, …
Run Code Online (Sandbox Code Playgroud) 我有两个hazelcast地图1. map2 2. map2
我想把两个地图都放在键上。
我可以在hazelcast中做吗?
谢谢
我有一个现有的应用程序,它使用 Hazelcast 来跟踪集群成员资格和分布式任务执行。我认为 Jet 可用于在现有应用程序之上添加分析,并且我正在尝试找出如何最好地将 Jet 分层到我们已有的应用程序之上。
所以我的第一个问题是,应该如何在我们现有的 Hazelcast 配置之上运行 Jet?我是否必须单独运行 Jet,或者用 Jet 替换我们现有的 Hazelcast 配置(因为 Jet 确实公开了 HazelcastInstance。)
我的第二个问题是,我看到很多使用 IMap 和 IList 的示例,但我没有看到任何使用主题作为来源的内容(我也不认为这是来源构建器中的一个选项)。我最初使用 Jet 的想法是将我们现有代码中的事件(io perf 数据、http 请求数据)发送到一个主题,然后让 Jet 处理该主题,从该数据生成分析,然后将其推送到 IMap。这是错误的方法吗?我应该使用其他结构将这些事件推送到 Jet 中吗?我看到我可以制作自己的自定义 Source,我可以在其中执行此操作,但我觉得如果我要追求这个,我一定走错了路,因为图书馆尚未为此特定目的提供一个。