大约一个月前, Ion Stoica和他创立的创新公司 Databricks再次成为大数据行业关注的焦点:Databricks获得了来自Andreessen Horowitz 1400万美元投资,Cloudera宣布联合Databricks提供Spark企业级服务。
Databricks由Ion Stoica与麻省理工学院计算机科学助理教授Matei Zaharia、UC Berkeley计算机科学教授Scott Shenker等共同创办,Scott还是知名SDN公司Nicira的联合创始人及CEO。Databricks专注于Spark技术的产品化。
一个月前,CSDN向Ion Stoica发出采访邀请。在漫长的等待回复期间,Databricks完成了以上两项里程碑式的演进。
图:Databricks团队成员
后排从左向右依次为:Andy(Spark Summit的组织者)、Arsalan(曾在麦肯锡主管大数据以及IT策略管理咨询)、Matei Zaharia、Ion Stoica、Scott Shenker、Mike Franklin(AMPLab director)
前排从左向右依次为:Ali( 分布式系统、分布式算法以及调度系统专家)、辛湜(Shark的作者,Spark核心成员)、Patrick(Sparrow的作者之一,也是Spark其中一个最重要的贡献者)、Aaron(Databricks工程师)
对话中,Ion Stoica强调了Spark和Mesos与Hadoop软件堆栈的合作关系,Saprk的演进方向和数据挖掘的强化,以及BDAS的远大目标。对话全文如下:
CSDN:Spark已经显示出相对于Hadoop的优势,在你看来,Spark还需要哪些方面的完善?
Ion Stoica:Spark相对于Hadoop的主要优势是高性能和易用性。Spark的高性能源于其采用内存储存数据,应用可以以内存的速度进行运算。它的易用性在于通用的API,使用户可以编写复杂的并行计算程序,使之看上去就像串行程序。这让Spark程序更容易开发和读懂。
未来,我们将在几个方面完善Spark。我主要谈谈两个主要方面:
- 开发强大的库,方便用户开发复杂的应用。目前,Spark提供了MLlib,这是一个机器学习(ML)的核心算法集。我们会继续扩展MLlib,并发布其它库。另一个库是将马上发布的GraphX,它将支持高效的大规模图算法。
- 提升性能。我们希望在以下几个方面提升性能:a. 允许多个Spark环境(context)可靠地共享内存中的数据;b. 支持更快的key-value查找;c.
支持细粒度读,如果可能的话,还包括细粒度写。
此外,我们正致力于更好地集成和支持Python生态系统,因为我们注意到用户对Python编程有着强烈需求。
CSDN:你创立了Databricks,接下来有哪些计划?
Ion Stoica:Databricks还处在隐身状态,所以很遗憾,我现在不能谈太多。不过,Databricks的使命很简单——“建立最好的计算平台,致力于数据的价值挖掘”。这一平台基于Spark、Shark和其他一些我们过去几年中在Berkeley AMPLab开发的组件。另外,我强调,Databricks坚定地建立开源的Apache Spark平台。
CSDN:Mesos是你们开发的另外一个项目,这个项目有哪些特别之处?
Ion Stoica:Mesos是第一个支持多种集群计算框架的资源管理平台,支持Hadoop、Spark及Storm等共享同一数据中心的资源。这将带来两方面的好处,首先能提升资源利用率,计算框架能够获得其他框架不用的资源。同时,能提升性能,不同的计算框架可以共享同一集群的数据(不需要在不同的集群之间移动数据)。
Mesos展示出两方面特性。首先,支持细粒度共享,在任务级别(而非作业级别)共享资源,而每个任务可能只有短短的几秒。其次,Mesos具备高度扩展性,它用C++开发并使用了模块化架构,让上层框架决定哪个任务被调度、何时被调度 (而Mesos调度器只决定哪些资源分配给那个上层框架,这是二层调度中的底层调度)。这让Mesos可以扩展到数万台物理机,同时运行数百万的任务。
CSDN:AMPLab更宏伟的一个愿景是BDAS(Berkeley Data Analytics Stack),您能描述一下BDAS吗?它能做什么?多久能够实现这样的愿景?
Ion Stoica:正如其名,BDAS是我们过去几年在Berkeley开发的一个大数据分析软件堆栈。BDAS的所有组件都是开源的,在社区的帮助下,我们希望它能在工业界、学术界和其他科研组织广泛使用。
BDAS由资源管理层(Mesos)和计算层(Spark)组成。Spark是BDAS的执行引擎,就像MapReduce与Hadoop的关系一样。在Spark之上,我们实现了几个组件来处理不同的工作负载,包括Shark——用于支持SQL API,SaprkStreaming——用于流计算,MLlib——高质量的机器学习算法库,以及 BlinkDB——一个采用近似技术的查询引擎,通过采样技术实现大规模的交互式查询。此外,我们还开发并建立了 Tachyon,一个支持多Spark实例高效共享内存数据的存储层。
BDAS的核心是支持那些Hadoop不能优化执行的工作负载,比如低延迟查询,流式和迭代计算。这将让用户更快速地分析数据并作出决策,最终将提升企业和组织的投资回报率。
好几个BDAS的组件已经可以获得。Spark、Shark和Mesos已经在一些企业中用于生产环境,包括Twitter、Yahoo!、苹果公司和Intel。例如,Mesos目前在Twitter运行了超过6000个节点,有数百个工程师在使用它。Mesos和Spark都是Apache项目,有活跃的开源社区做支撑。例如,Spark有来自23个公司的超过90个贡献者。
作为对Mesos、Spark和Shark的补充,我们发布了alpha版的SparkStreaming、Tachyon、MLlib和BlinkDB。展望未来,我们计划发布一个图计算引擎——GraphX,以及MLbase——一个机器学习框架,它提供了声明式接口(说明做什么而非怎么做),允许非专业人员使用复杂的机器学习算法。
非常重要的一点是,BDAS和Hadoop软件堆栈是互补关系(而不是竞争关系),两者在多个层次可以互操作。首先,BDAS并没有自己的文件系统,所以它可以使用Hadoop文件系统(HDFS)。其次,Spark可以运行在Hadoop
YARN上,替代Mesos。第三,Hadoop也可以运行在Mesos上。第四,Shark兼容Hive,后者是Hadoop上面最流行的SQL解决方案。
图:Timex Sinclair 1000
CSDN:你从什么时候开始意识到,计算机科学是自己未来的工作?什么促使你作出这样的选择?
Ion Stoica:我在上高中的时候有了第一台属于自己的电脑—— Timex Sinclair 1000,它只有可怜的2KB内存和16KB扩展内存,不过我立即沉迷于探究通过几行BASIC代码我到底能做到什么。
CSDN:能否预告下您将在第七届中国大数据技术大会(Big Data Technology Conference 2013,BDTC 2013)上分享的话题?
Ion Stoica:我会聊聊BDAS。
Ion Stoica:在回答以下这些技术问题前,我声明一下,最新的Spark发行版中的大多数代码贡献来自于AMPLab和Databricks之外,我们希望这种局面在未来能持续下去,因此我的回答只能代表未来Spark项目的一部分。
吴甘沙:Spark是一个粗粒度数据并行计算框架,在一些机器学习和数据挖掘(MLDM)算法上表现并非最优,因为其需要细粒度异步更新(如图并行计算)。GraphX向图并行计算迈出了一步,但它并不像PowerGraph那么高效。鉴于BDAS跟机器学习密切相关(如MLBase/MLlib),Spark将如何演化以便更好地解决细粒度和异步更新问题?
Ion Stoica:这是一个非常好的问题。是的,在其核心,Spark执行的是粗粒度的操作。这使得Spark可以限制世系(lineage)的长度,从而能在出错时有效地实现恢复。然而,正如你提到,有些机器学习和图算法在细粒度操作下可以获得显著提升。未来,你将看到Spark增加这方面的支持。首先,我们计划增加索引功能,这将用于细粒度读操作。在更下一步,我们希望支持增量更新,这可以显著地减少写操作的代价。
吴甘沙:为了打破MLDM算法的并行障碍,人们正在讨论有限过期性(bounded staleness),Spark会在语言这层支持吗?
Ion Stoica:有限过期性是一种有趣的概念,我们发现它在key-value数据存储的语境中有用武之地。在更一般化的情形下,忽略“掉队者(执行异常地慢的任务)”,代价是计算精度上略有损失,这在提升性能上很有价值。我们正在Spark上调研这些想法,但并没有马上将其加入到Spark的计划。
吴甘沙:为了更好地移植复杂算法到Spark,开发者最好要去了解Spark底层实现的细节。Spark团队会提供设计模式或最佳实践吗?Spark会提供非常成熟的编译器(去替代调度程序)来自动化代码调优吗?
Ion Stoica:是的,我们期待一些设计模式的出现,在更多应用开发的过程中得到实用。我们也在开发一些高质量的库(如MLlib、GraphX),通过这些库用户将实现更高效、高度可扩展的算法。此外,我们正致力于把更多的性能度量指标开放给应用开发者,帮助他们优化应用。
最后,我们正在优化Spark应用的执行计划,这也许最终将变成一个完整的编译器。
吴甘沙:Spark现在还不能利用硬件层的数据并行性,Java代码生成器无法获知数据并行语义,因此其生成的代码不能使用单指令多数据流(SIMD)。Spark会把这个作为一个机会吗?
Ion Stoica:是的,我们正在评估这个机会。不过,我们才刚刚起步,现在还没有太多可以分享的。
吴甘沙:当Spark集群扩展到数千节点后,会遇到哪些主要的技术问题?
Ion Stoica:关于规模限制我想到了两点。首先,对于非常小的任务,调度器会成为瓶颈。其次,对大规模数据进行整个集群的shuffle操作,可能占据某些作业的绝大部分时间。我们正在努力消除,哪怕至少缓解这些扩展性的瓶颈。例如,我们最近开发了Sparrow——一个完全去中心化的调度器,它可以扩展到数万台物理机组成的集群。
(文/ 包研 技术审校/吴甘沙 责编/仲浩)
吴甘沙
本期特约 吴甘沙,英特尔中国研究院 首席工程师
其主要研究方向包括大数据的计算范式和架构,软硬件协同设计,数据安全和权利,以及数据作为服务的应用模式和支撑环境。曾经参与和主持移动受控运行时(Managed
Runtime)和并行编程等研究项目。发表学术论文10余篇,获得美国专利23项和国际专利数项,另有17项专利待审中。
欢迎关注
@CSDN云计算微博,了解更多云信息。
第七届中国大数据技术大会(Big
Data Technology Conference 2013,BDTC 2013)将于2013年12月5日-6日在北京世纪金源大酒店召开。Spark核心设计者、Databricks创始人兼CEO
Ion Stoica,Apache HBase项目管理委员会主席Michael Stack、百度大数据首席架构师林仕鼎、华为公司诺亚方舟实验室主任杨强、Apache
Tez commiter Bikas Saha大数据技术专家领衔,来自腾讯、阿里巴巴、Hortonworks、LinkedIn、小米、Intel等50余位工程师带来近60场干货分享,更有《中国智能交通与大数据技术峰会》专场感受智能交通如何改变生活。