写点什么

Hazelcast 发布开源流处理引擎 Jet

  • 2017-02-14
  • 本文字数:2402 字

    阅读完需:约 8 分钟

Hazelcast 主要以开源缓存和内存数据网格技术(通常称为 Hazelcast IMDG,或者只是 Hazelcast)为人所熟知。然而过去的两年中,他们一直致力于一个新的、重要的开源项目 Hazelcast Jet,近日,他们宣布了这项新技术的一个主要版本。

InfoQ 与 Hazelcast 首席执行官 Greg Luck 和 Jet 核心团队工程师 Marko Topolnik 取得了联系,进一步了解此次发布的激动人心之处。

InfoQ:据介绍,Jet 是流处理领域的巨大改进。您能解释下为什么吗?

Luck:Jet 的主要目标是让运算速度快的大数据成为应用程序基础设施的一部分。类似 Spark 和 Hadoop 这样的技术过多地干扰了应用程序开发人员架构和思考。我们希望 Jet 可以为开发人员提供工具,让他们专注于问题本身,而不是应用程序管道构建。

Jet 还提供了突破性的性能——我们有 Jet 和其他引擎的横向性能对比数据——全都是基于配备旋转磁盘的 10 节点集群测得——性能数据说明了一切。

InfoQ:您能介绍下你们在 Jet 研发过程中所做的架构及技术决策吗?与当前市场中已有的一些同类产品——尤其是 Apache Spark——相比,它有什么与众不同之处吗?

Topolnik:我们决定,以“多任务处理(cooperative multithreading)”作为核心执行引擎建模的原则,也就是人们常说的“绿色线程”。这就是说,我们不是让操作系统调度我们的工作,而是有多少 CPU 内核可用就启动多少线程,运行任何东西都是这样。我们的基本处理单元,我们称之为 tasklet,每次被调用时都会做一点工作实现与执行引擎的协作,然后就回归本身的处理工作。由于我们使用了具有智能批处理功能的有界并发队列,所以这种工作模式来得很自然:每个 tasklet 调用处理已经在队列中的数据。

我们为什么认为这是一个好方法呢?首先,上下文切换的成本几乎为零。从一个 tasklet 切换到下一个 tasklet 几乎不需要任何逻辑。其次,我们获得了 CPU 内核亲和性的效果:tasklet 不会在线程之间跳来跳去,每个工作线程都极有可能固定在一个内核上。这意味着 CPU 缓存命中率会很高。最后,通过检查输入 / 输出队列,我们就可以立即知道哪个 tasklet 已经准备好了运行。如果我们使用本地线程,我们就必须使用阻塞队列,而这种队列采用相对重量级的 wait/notify 机制,我们必须受操作系统支配,必须由它决定什么时候运行我们的任务。

第二个重要的决策是在所有地方都使用单生产者 / 单消费者的并发队列。为了将 N 个上游 tasklet 和 M 个下游 tasklet 连接起来,我们需要 NxM 个队列;不过,这让我们可以在两端都使用速度极快的无等待算法。我们甚至不需要写入内存,因为我们使用了 lazySet,它只需要在 CPU 的存储缓冲区上将数据项加入队列。在消费者端,在将整个队列存入线程本地存储后,我们只需要一个 lazySet。

Luck:当然,这些想法受了 Martin Thompson 及其创立的 Mechanical Sympathy 的直接影响。

InfoQ:Hazelcast IMDG 已经有了一个相当巧妙 & 直观的划分方法。Jet 对此有什么改进?除了简单地“将 Runnable 发送给一个特定的数据划分”之外,在其他什么场景下可以看到大幅的改善?

Topolnik:将 Runnable 发送给一个划分类似于单个 DAG 顶点的工作。Jet 的优势在于,它能够让顶点转换其读到的数据,生成不属于同一个划分的数据项,然后重新组织并发送给下游顶点,再次正确划分。由于任何类型的 map-reduce 操作的 reduce 单元都必须观察到所有具有相同键的数据项,所以这是至关重要的。为了最小化网络流量,Jet 可以首先减少本地成员生成的数据切片,然后针对每个键只发送一个数据项给远程成员,而后者会将这些部分结果合并。

Luck:我们也有一个 java.util.stream 的分布式版本,它可以很好地与 Jet 架构配合,因为我们将源和汇作为 Jet 的核心部分。在未来版本中,我们还会将 Map-with-Predicate 作为一个源加入进来,让筛选和“场投影(field projection)”充当 Jet 的流数据源。

InfoQ:您认为,在什么特殊的行业或场景中,Jet 会产生特别的影响或者特别成功?

Luck:我们认为,Jet 对 IoT、金融服务、支付处理、欺诈及其他大量使用 CEP(复杂事件处理)的行业都将十分有利。我们觉得,对于 Jet 而言,关键是,当你在一个业务上下文中执行 DAG 运算时,它能发挥多大的作用,而不仅仅是作为分析工具的一部分。

InfoQ:对于 Jet,你们会遵循和 IMDG 一样的产品策略吗?也就是说,开源,但需要付费获得支持及高级功能。

Luck:还不一定。从今天(2 月 8 日)开始,我们将为 Jet 提供专业的支持,和 IMDG 一样。Jet 将可以很好地与 IMDG 结合,因此,我们预计,在 Jet 推出之后,IMDG 的应用会增加,但是,Jet 没有哪一部分是闭源的,将来也不会有。今年晚些时候,我们可能会增加管理监控作为付费特性,虽然那比较明确,但一切都还未定。

我们目前关注的不是将用 Jet 赚钱——我们只是想让它成为一个遵循 Apache 2 许可协议的、成功的开源项目。

InfoQ:Jet 的路线图是什么样的?

Luck:现在发布的是 0.3 版本,之后我们计划每个月发布一次。

我们还计划在两周之后发布 0.3.1——只是稍微整理下几个错过 0.3 版本的部分。特别地,0.3.1 版本将和 IMDG 3.8 一起发布,而且还会增加 Jet 集群(甚至于已经在运行的任务)弹性扩展功能。

0.4 版本应该会包含大量的性能方面的工作。虽然 Jet 的性能已经非常出众,但我们会对 0.4 做进一步的改进。我们还将增加 JCache 支持以及将 IMDG 监听器作为一个真正的流源。当前版本已经支持 IMDG,但是作为一个批处理源,所以,我们还希望增加真正的流支持。

我们已经支持 Kafka 和 HDFS,但还需要做一些性能工作及更多的文档,让它们进入到一等支持状态。

我们还有一些其他的特性,包括一个 DAG 可视化工具,我们希望将其作为一个 Eclipse 及 IntelliJ 插件发布。

我们希望先向社区推出 Jet,然后听听社区的声音——那样一来,一旦 Jet 确定下来,路线图在很大程度上将是社区驱动的。

查看英文原文: Hazelcast release Jet, open-source stream processing engine

2017-02-14 18:004692
用户头像

发布了 1008 篇内容, 共 387.8 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

工业区块链正在改变什么?

CECBC

环保

完美!凭借这份阿里大佬分享的4170页Java高手真经笔记!offer拿到手软

Java~~~

Java 程序员 编程语言 电子书 架构资料

闭嘴,别再问什么是锁了

程序员老猫

乐观锁 悲观锁 分布式锁 java锁 公平锁

架构师训练营第 1 期 week13

张建亮

极客大学架构师训练营

架构之书:我们从何处来?我们是谁?我们向何处去?

lidaobing

架构 编程的未来

架构师训练营第 1 期第 13 周学习总结

好吃不贵

极客大学架构师训练营

全球最火的程序员学习路线!2020年GitHub上那些优秀Android开源库总结,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

QoS简介

re:Invent 重磅回顾 | AWS 重塑机器学习的四大亮点,触及每一位 AI 工作者

亚马逊云科技 (Amazon Web Services)

云计算 AWS

架构师 3 期 3 班 -week4- 总结

zbest

总结 week4

云智一体:攀登2021智能经济新山峰

脑极体

程序员什么时候就该辞职了?

Java架构师迁哥

Superset 助力企业级大数据 Ad-hoc 查询

麻婆豆腐没麻婆

数据分析 Apache Superset BI数美

技术选型背后的国家利益:区块链自主化道路的交锋

CECBC

科技

【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发

华为云开发者联盟

Serverless 物联网 IoT

架构师训练营第 1 期 week13 总结

张建亮

极客大学架构师训练营

A Guide for Accidental Project Managers

Geek_ed0696

pmp project manager role of PMP PMP Certification greycampus

ES6中的Promise和Generator详解

程序那些事

新特性 ES6 Promise 程序那些事 Generator

甲方日常 70

句子

工作 随笔杂谈 日常

生产环境全链路压测建设历程12:通过生产压测发现的问题摘录

数列科技杨德华

全链路压测

架构师训练营第 1 期第 13 周作业

好吃不贵

极客大学架构师训练营

程序员如何解决中年危机?我的阿里春招之路分享,顺利通过阿里Android岗面试

欢喜学安卓

android 程序员 面试 移动开发

利用Python进行数据分析(原书第2版)免费下载

计算机与AI

Python 数据分析 数据科学

Rancher开源Harvester:基于K8S的超融合基础架构软件

Rancher

Kubernetes rancher

网易区块链打造可信数字身份认证应用新场景,赋能科技峰会

CECBC

数字身份

游戏服务器多钱一个月呢?

德胜网络-阳

星环科技自动特征工程论文被ICA3PP2020接收

星环科技

AI 数据集

【变与不变】架构中的边界划定

soolaugust

编程 架构 设计

直播报名 | 携程技术沙龙——前端测试技术创新与实践

携程技术中心

AI 数据分析

TeamLeader不可不知的三种团队建设形式

Alan

团队管理 个人成长 28天写作

芯片破壁者(二十二):政府与半导体间的“美国往事”

脑极体

Hazelcast发布开源流处理引擎Jet_Java_Ben Evans_InfoQ精选文章