近日,Yahoo! Hadoop Map-Reduce开发团队领导Arun Murthy展示了针对Hadoop的重新设计过的核心Map-Reduce架构,旨在简化升级、支持更大的集群、更快的恢复,还要支持除了Map-Reduce以外的其他编程范式。重新设计的Hadoop核心将引擎分割为一个资源管理器,用以支持各种集群计算范式,同时将map-reduce作为一个用户库,组织可以在同一个集群中运行多个版本的map-reduce代码。新的设计非常类似于开源的Mesos集群管理项目——Yahoo!和Mesos对其中的差异进行了评述。 新方案的主要优势在于:
此次重新设计的主旨在于将职责划分为通用的集群资源管理系统,同时还有一个针对map-reduce的独立应用master,实际上可以是任何的编程模型。这将替换掉Job Tracker和Task Tracker。资源管理系统包含如下集群范围内的控制器:
下一代的MapReduce架构。来自于Yahoo 可以分布于各个worker节点上,有:
此次重新设计考虑到了:
在随后的讨论中,Murthy说到系统将不会使用Linux容器来限制资源,因为测试表明这种方式的代价太大了,但他们会使用Linux cgroups来实现沙箱进程,强制容器进程不会超过限定。系统考虑到了位置敏感的请求(比如说,在一台机器上运行任务或是文件附近的rack),在map-reduce job中维护位置信息,这也是其他的分布式编程范式所需的。为了支持map-reduce的shuffle阶段,NodeManager容许远程任务发出远程请求来读取磁盘上的本地数据。一开始,map-reduce容器会根据运行在该节点上的每个map任务分割单独的NodeManager以改进性能。Murthy提到未来他们想增加一个合并操作,该操作可以对单独的节点和单独的rack上的所有map任务进行排序,从而进一步改进shuffle的效率。 Murthy说到,该项技术目前处于开发的原型阶段。Yahoo!很希望今年就部署上去以便支持更大的集群,但这要取决于内部发布代码的流程并且要与Apache Hadoop的发布相协调才行。在Arun于2月份的Bay Area Hadoop User Group会议上的演讲后,MapR Technolgies的Ted Dunning询问Mesos是否还没准备好呢。Murthy回应到,Mesos需要一个JobTracker和TaskTracker来运行map-reduce,而该实现却不再需要JobTracker和TaskTracker了。我们让Mesos团队来回答这个问题。 来自Mesos团队的Andy Konwinski说到:“市场需要竞争才能蓬勃发展,因此这对于Mesos来说是个好消息。我也期待与来自于Yahoo!的天才们在友好的气氛下展开合作和竞争”。Mesos团队的Matei Zaharia说到:我觉得最好利用此次对MapReduce的重构机会来支持多种资源管理器——这不仅仅是出于Mesos的目的,而是因为人们自然而然地想在Sun Grid Engine、LSF和Condor之上运行Hadoop。通用应用的资源调度要比实现MapReduce困难得多,现在可能已经有不少实验和各种系统来解决这个问题了。Yahoo的重构会简化Hadoop在Mesos上的运行。无论如何,我们这边都会支持Hadoop。 来自Mesos团队的Benjamin Hindman说到:我们计划继续开发Mesos,让其成长为强大的系统。我觉得这么做的一个好处在于Mesos会继续得到构建,从头开始,除了数据处理外还能运行其他各种应用。在Twitter,我们每天都运行越来越多的像应用一样的通用“服务器”。 在被问到提议的Hadoop架构与Mesos有何区别时,Zaharia说到:主要的一个差别在于Mesos master中的状态管理。在Mesos中,应用是可以执行自己的调度的,master只包含关于当前活动应用和运行任务的软状态信息。特别是master无需知道应用没有启动的挂起任务的。在Hadoop下一代的设计中,就我理解而言,master会在ZooKeeper中维护所有挂起任务的一个列表,这样就需要管理更多的状态了。除了这个技术问题外,Mesos从一开始就支持非MapReduce框架,我们已经在MPI、长期运行的服务以及名为Spark的并行处理系统中使用它了。从实际角度来看,另一个差异在于Mesos可以在Hadoop 0.20(使用一个补丁)中使用,而无需等待新版Hadoop发布。 InfoQ有幸采访到了Yahoo! Hadoop开发团队的副总裁Eric Baldeschwieler以深入了解该项目的起源及与Mesos的区别。Baldeschwieler说到,现在有很多项目都提供了集群调度功能,其中就包括了Mesos。然而,Yahoo!感觉到现有这些方案都无法解决map-reduce的问题。他说,一些方案是新近出现的,还不太成熟,而成熟的方案则缺少一些重要特性。 他说下一代的Map Reduce设计会反映出这几年在Hadoop所积累的经验,随着Yahoo!不断改进map-reduce,这其实是个自然而然的过程。 关于Mesos,Baldeschwieler说它是个好榜样,但Yahoo!需要一个集成的Hadoop组件,而不是一个元层(meta-layer)。他说下一代的MapReduce架构已经设计很长一段时间了,Yahoo!团队在设计过程中与Mesos团队成员通力合作,并且对他们的工作很感兴趣。Baldeschwieler说,他欢迎Mesos团队对Hadoop项目做出贡献,这将有助于他们更好地集成Hadoop。他说,过去Yahoo!采用了外部开发的Hadoop技术,并且通过开辟社区证明了他们的价值,如HBase和Hive。 Hadoop生态圈将逐渐演变为一个支持多种编程范式的资源调度器,并且非常强调可伸缩性、可靠性和效率,这一切都令人期待不已。 |