2014年4月19日“中国Spark技术峰会”(Spark Summit China 2014)将在北京召开,国内外Apache Spark社区成员和企业用户将首次齐聚北京。AMPLab、Databricks、Intel、淘宝、网易等公司的Spark贡献者及一线开发者将分享他们在生产环境中的Spark项目经验和最佳实践方案。 在Spark技术峰会召开前夕,记者和本次Spark峰会的演讲嘉宾尹绪森做了一次简单的沟通,他就Spark技术优势、Spark技术发展做了简要的回答,同时他表示更多的内容将会在4月19日“中国Spark技术峰会”和大家分享! 尹绪森,Intel工程师 @尹绪森 熟悉并热爱机器学习相关内容,对自然语言处理、推荐系统等有所涉猎。目前致力于机器学习算法并行、凸显优化层面的算法优化问题,以及大数据平台性能调优。对Spark、Mahout、GraphLab等开源项目有所尝试和理解,并希望从优化层向下,系统层向上对并行算法及平台做出贡献。 以下是记者采访原文: - 什么原因吸引你钻研Spark技术? 我是典型的“师父领进门”。在吴甘沙老师的带领下,在Intel研究院和一帮挚爱技术的小伙伴们钻研到现在。我个人是比较相信“黑天鹅”的说法的,人生是由一连串的随机事件组合起来的,从去年迷茫地进入Intel研究院,到接触Spark以及有机会参加这次峰会都是曾未可知的。如果放在一年前,我怎么都不会想到有一天自己会跟Spark有所关联。我的专业是机器学习,从研究生生涯刚开始就立志做一名热爱数学的“机器学习者”,因为机器学习不仅很有趣,而且看起来也高大上。做模型发paper是我的夙愿。去年到Intel之前一直在犹豫,不清楚一个梦想中的“机器学习者”到Intel能做什么。实际上,回头来看能做的实在太多了,Intel研究院提供了一个绝对大的舞台。 - 对于解决哪些问题Spark独具优势? RDD的表现力让Spark成为多面手。这一点上与Scala的表现力让Spark开发简洁明快是一个道理,这也就是我为什么更倾向于把RDD看成一种分布式编程语言。 Spark 甫一出道,便以多迭代,内存计算为主打,自然免不了进军机器学习领域。Spark 对于程序员,尤其是机器学习者来说,简直是福音一样的存在。轻量级的框架设计,让多迭代逻辑不必游离在主线程之外; 简洁的job 提交方法让job 切换时间大大降低;复合函数的思想摆脱了大量使用磁盘缓存中间结果的桎梏;大量现有,可定制算子的呈现简化机器学习算法设计;甚至BDAS框架兼容并包,一种体系提供所有功能。 - 目前企业应用Spark最大的困难是什么? 熟练使用Scala语言的程序员不多,现状如此。实际上, 企业想招人进来直接玩转Spark是不太现实的,这样的人目前还比较少,尤其是不熟悉Scala的情况下。虽然存在Java和Python的API,但是Spark老东家重心还是在Scala实现的核心上,其他两个社区支持可能没那么及时。 - 根据您的了解,目前Spark发展的情况如何? 首先Spark在Apache社区里的贡献者数目是首屈一指的,将来只会更多。Spark本身已经快要到1.0版本了。其流处理以及SQL的使用可能是大家最关心的,从Spark邮件组里就能看出来。GraphX前段时间并入了Spark主线,这两天Catalyst也并入了Spark主线。因此Spark的活跃度绝对没有问题。另外,Databricks团队的开发者以及社区的小伙伴们都是非常认真严肃的贡献代码, 其pull request审查非常严格。 - 请谈谈你在这次大会上即将分享的话题。 机器学习方法在这十年中取得了巨大的成就,大有百家争鸣之势。然而,机器学习领域一直受到多种问题的困扰。首先是模型准确性和计算有效性的取舍; 其次数据可用性也严重制约着机器学习算法的进展;最后机器学习的可用性也制约着机器学习的发展。从性能上来看,机器学习算法的加速方法由四个境界。总结起来,分别是scale-up ,scale-out,算法本身打破串行限制,以及较好的编程模型。IBM计算机体系结构师阿姆达尔在1967 年提出阿姆达尔定律,表明了并行系统存在的性能提升总是受到其中串行性最明显一环的控制。这就要求如果一个系统真正要实现较好的加速并行,就要在各个层面上充分进行并行化。机器学习算法并行存在着四个层次的加速可能,因此也有四个层次的问题需要考虑。 - 哪些听众最应该了解这个话题,这个话题可以帮助听众解决哪些问题? 这次分享的话题将会包含下面几个问题,根据实际情况会有所侧重。首先是MLlib介绍,可能有些人还不太清楚,所以稍微提及一下MLlib现有的基本算法,整体模式等。其次是机器学习深入理解。我不会喋喋不休的向大家灌输机器学习中常见的一堆堆公式,那会把大家吓跑。实际上我自己有时候也看不下去。相反,我会以一种自己的理解去讲一讲机器学习方面的注意事项、关键点、着重强调与系统结合的部分。之后是希望能带大家熟悉Spark运行时的一些情况。不了解Spark是怎么运行的,就永远不可能写出好的Spark程序,就跟优秀的程序员都有很深的系统方面,编译器方面,以及语言方面的知识一样,可以说是“Spark玩家的自我修养”,并会提及一些实例来做更好的探究。最后我会说一说Spark机器学习实战及调优。时间有限, 不可能事无巨细。 |