NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:004582
用户头像

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

关注

评论

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

来看看这份对标80W+年薪的Java进阶路线图,职业规划路线该怎么走一目了然!

Geek_0c76c3

Java 程序员 架构 面试

leetcode 785. Is Graph Bipartite判断二分图 (中等)

okokabcd

LeetCode 数据结构与算法

前端线下面授培训机构该怎么选择?

小谷哥

抖音后端123面开挂,全靠这份啃了58天的「Java进阶核心知识集」

Geek_0c76c3

Java 数据库 程序员 架构 面试

技术分享预告|DocArray x Redis 比快更快的向量搜索

Jina AI

人工智能 开源 算法 向量检索 神经搜索

唐刘:透明一切,是我们在复杂环境下与客户建立信任的最佳途径

PingCAP

TiDB

快速上手SpringBoot

亮点

Java spring-boot 10月月更

前端培训学习的就业前景是什么样的

小谷哥

翻遍GitHub,这份MySQL全面手册,受喜爱程度不输任何大厂笔记

Geek_0c76c3

Java MySQL 程序员 架构 面试

ShareSDK Android端权限说明

MobTech袤博科技

sdk Andriod

一文读懂 MySQL 索引

说故事的五公子

MySQL 数据库 索引

GitHub已置顶安排!Alibaba最终Guide版Java面试突击宝典+架构师系统进阶指南

Geek_0c76c3

Java 数据库 开源 程序员 开发

启科量子国产量子编程软件项目将启动开源计划

启科量子开发者官方号

人工智能 量子计算 量子模拟 Python. C++

MobPush iOS端常见问题

MobTech袤博科技

ios

web前端技术培训学习好点

小谷哥

大数据学习培训机构怎么去选择

小谷哥

web3 chainlink 预言机喂价、VRF

1_bit

智能合约 web3 chanlink

小程序运营怎么做?

源字节1号

软件开发 前端开发 后端开发 小程序开发

三翼鸟:智能的是产品,智慧的是生活

脑极体

OpenHarmony社区运营报告(2022年9月)

OpenHarmony开发者

OpenHarmony

阿里 DBA 首次公开 MySQL 调优笔记,GitHub上已经开始疯狂涨星

Geek_0c76c3

Java 数据库 开源 程序员 面试

从简历被拒到收割8个大厂offer,我只用了三个月

程序知音

Java 架构 java面试 后端技术 Java面试八股文

多云管理平台支持哪些平台?哪款比较火?

行云管家

云计算 多云 云管理

初学大数据培训学习入门

小谷哥

【LeetCode】仅执行一次字符串交换能否使两个字符串相等Java题解

Albert

LeetCode 10月月更

LeetCode第一个错误版本使用JavaScript解题

大师兄

算法 前端 10月月更

浅析+在Node中实现JWT鉴权机制!

CoderBin

前端 Node JWT Express 10月月更

HummerRisk V0.4发布:新增云资源态势、资源拓扑、检测规则组、支持在 K8s 安装及大量功能优化

HummerCloud

云计算 云原生 态势感知 云安全 混合云

STM32L051测试 (二、开始添加需要的代码)

矜辰所致

stm32 STM32CubeMX 10月月更

打破“双十定律”,华为云AI推动超级抗菌药Drug X研发加速

华为云开发者联盟

AI 华为云 药物研发 盘古大模型 企业号十月 PK 榜

算法基础(五)| 差分算法及模板详解

timerring

算法 10月月更 差分算法

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