BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Hazelcast引入MapReduce API

| 作者 Michael Hausenblas 关注 1 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2014年2月20日. 估计阅读时间: 6 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

本文是对Hazelcast公司高级软件工程师Christoph Engelbert的采访。

InfoQ:您能向我们简单地介绍一下Hazelcast是什么以及您公司的商业模式吗?

Christoph:Hazelcast是一个遵循Apache License 2许可的开源内存数据网格解决方案。它以一种分布式方式实现了许多典型的Java API,如Map、List、Set、Queue、Lock、ExecutorService等,还针对分区的集群环境增加了功能,如分布式查询(Predicate)或者在特定节点上运行Runnable/Callable。

此外,Hazelcast公司负责该开源项目的开发、分发和支持。我们会提供商业支持、培训以及为用户在关键任务环境里所需要的一切提供帮助。而且,我们会提供商业扩展,包括集群监控和管理解决方案、更高的性能可预测性、集群安全和其它语言的本地API客户端,如C++和C#。虽然Hazelcast完全是用Java编写的,但我们通过兼容Memcached的API以及RESTful接口提供多语言支持。

InfoQ:Hazelcast可以用在哪些应用、领域或者开源项目中,以及开发人员通常如何使用它?

Christoph:Hazelcast当前在金融领域发展迅猛,用于低延迟交易应用、风险、金融交易和其它类似的应用。大型电信公司、网络设备制造商和云提供商也在用它。我们还看到,它开始应用在诸如互联网和移动支付、游戏和赌博、旅行和餐饮以及电子商务等领域。大部分应用场景是缓存或者应用扩展。此外,许多公司和项目都基于Hazelcast构建了自己的解决方案,如OrientDBVert.XMuleSoftWSO2或者Apache Shiro

InfoQ:最近,你们发布了MapReduce API,据我了解,您是主要开发人员。您做这个的动机是什么?

Christoph:开始的时候,我将CastMapR当成一个研究项目。我想研究下新的Hazelcast 3 API,而且由于那会我正致力于另一个针对MapReduce的API(由于我正在使用JBoss集群),在我看来,它是个不错的选择。然后,当我在2013年底加入Hazelcast的时候,我们开始讨论使它成为Hazelcast主要发行版的一部分。

InfoQ:这样说,是您将CastMapR纳入了Hazelcast?

Christoph:差不多,是的。最初的想法只是将基本代码移到核心发行版,但随着时间推移,我们觉得想要在反应式编程方面更进一步,因此我重写了大部分内部构件。此外,关于公开的API,我们讨论了很多。CastMapR主要是受Infinispan的API启发,因为我恰恰喜欢它。我们商定,新的MapReduce API采用一种更像Hadoop的API(与最初的Google论文的描述更为相近),但我坚持使用DSL方式的作业定义。最终,旧实现中只有很少的部分得到重用。新实现在设计上完全并行。Mapping和Reducing阶段完全并行,而且整个系统以流的方式工作(基于分块处理)。因此,旧实现目前已经停用,所有的精力都投入到Hazelcast内部的MapReduce API。

InfoQ:喔,那很棒。现在,Hazelcast MapReduce API的典型(预期)应用场景是什么?话说它与MongoDB的MapReduce API或者Hadoop相比如何?

Christoph:用户想要使用Hazelcast MapReduce API的典型场景是分布式计算,在这种情况下,EntryProcessor并不合适。不管他是想要进行数据转换,还是想要使用多数据源。它也非常适合运行时间长的操作,由于当前所有的系统都直接工作在分区的线程上,所以用户不必为数据更新做显式锁定。在接下来的某个版本中,我会增加连续的map和reduce支持,那样用户就可以运行完全流分析。在这一点上,Twitter永远是最好的例子,它实时处理微博收集信息,如转发、收藏和其它许多统计信息。它也可以用于风险管理和分析。

它与Hadoop的最大不同是在内存中和实时处理。Hadoop有不同的阶段,每个阶段都是一个接一个的执行,而在Hazelcast中,由于内部采用并行设计,mapping和reducing在所有节点上都是并行运行,所以用户可以获得全部性能。阶段本身与Hadoop中的非常类似,也有mapping(和combining)、shuffling(划分到节点)和reducing阶段,但是不像在Hadoop里那样分的那么清楚。

与MongoDB比较有些困难,因为我从没用过他们的MapReduce API,但它似乎缺少Combiner,这对于大型数据集非常有用,不过,我说过我并不了解他们的实现方式。

InfoQ:棒极了,最后一个问题:关于Hazelcast MapReduce API,您还有什么想与我们的读者分享吗?

Christoph:是的,我有一个个人请求:我希望大家能够试用该API,并向我们提供尽可能多的反馈。该API十分稳定,我对它非常满意。另外,我想了解真实世界的用户体验,以便找到更多需要调整的地方,因为我相信我们可以改善它。

非常感谢您抽出时间来接受我们的采访,Christoph!

查看英文原文:Hazelcast Introduces MapReduce API

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT