Apache Spark开源生态系统在2014上半年大幅增长,已迅速成为大数据领域中最活跃的开源项目,HDFS位列第二,其代码变动次数(commits)和行数仅仅有Spark的一半:
- 有超过50个机构250个工程师贡献过代码
- 和去年六月相比,代码行数几乎扩大三倍。
随着1.0版本于5月30日推出,Spark提供了一个稳定的API,开发人员可以依靠它来保证代码的兼容性。所有主流的Hadoop发行商,包括Hortonworks、IBM、Cloudera、MapR和Pivotal都提供了Spark的包装和技术支持。
会议第三日培训
伴随着Spark平台的发展,Spark Summit 2014于6月30日在旧金山正式展开为期三天的峰会,也是有史以来最大的Spark会议。
- 大会收到了包括SAP、IBM、Intel、Amazon和Cloudera等近30个公司的赞助
- 1000多位从事大数据应用和开发的专家注册了会议
- 300多名开发者和数据科学家参加了第三天的培训
- 12位来自Databricks、SAP、Cloudera、MapR、DataStax和Jawbone等公司的高管发表了主题演讲
- 大会共设50个技术讲座,分为特色应用、开发、数据科学与研究三个领域
在这篇文章中,我们将一同回顾这次峰会的亮点。
Spark开源生态系统的现在和未来
1. Spark创始人、Databricks CTO Matei Zaharia:Spark在大数据领域的角色
Matei Zaharia在加州大学伯克利分校AMPLab博士生涯的时候设计和编写了第一个版本的Spark,在圆满完成博士生涯后,目前是Databricks公司的CTO,并将在麻省理工学院出任助理教授职位。Matei是此次峰会的第一个演讲人,他首先回顾了Spark在社区规模和技术能力上的最新进展。自2013年12月的首次Spark Summit以来,Spark的开源贡献者已经从100位增加至250+,已成为大数据领域最活跃的开源项目。Spark新增了一些重要的组件,如Spark SQL运行机制,一个更大的机器学习库MLLib,以及丰富的与其它数据处理系统的集成。关于Spark在大数据领域未来角色,Matei设想Spark很快会成为大数据的统一平台,各种不同的应用,如流处理,机器学习和SQL,都可以通过Spark建立在不同的存储和运行??系统上。
2. Databricks联合创始人Patrick Wendell:展望Spark的未来
Patrick Wendell是Apache Spark的项目管理会成员,曾在伯克利分校攻读博士学位,与2013年离开伯克利帮助创建了Databricks。目前他在Databricks从事开源管理工作,在技术上侧重于Spark和网络操作系统的关系。在这个演讲中,Patrick回顾了Spark的快速增长,他强调Spark的未来将提供由各领域的专家领导开发的强大的程序库。为了实现这一目标,他阐述了应该采用的发布流程和节奏,以提供完整的互操作性与稳定的版本,同时支持快速的开发。各种程序库应与Spark核心API高度策划和整合在一起。Spark核心会不断改进,以推动未来的创新。Patrick讲解了现有的主要Spark库和它们各自的发展方向,包括支持结构化数据的Spark SQL、Spark Streaming、用于机器学习的MLLib以及SparkR和GraphX??。
Databrick Cloud 产品发布
1. Databricks CEO Ion Stoica:Databricks公司的进展和产品发布
Databricks CEO Ion Stoica
Ion Stoica是Databricks公司的CEO。他是加州大学伯克利分校计算机科学系的教授,并与2013年参与创办了Databricks。Ion首先阐述了Databricks公司为推进Spark在工业界的应用所采取的两个措施。
- Databricks和Spark的分销商:Cloudera,DataStax,MAPR和SAP,建立了伙伴关系,以提高用户的体验。
- 今年二月,Databricks推出了Spark认证计划,以确保经认证的应用程序可以运行在任何经过认证的Spark发布上。
Ion主题演讲的重点是推出Databricks Cloud。Ion列举了当前从数据到价值过程中的种种障碍,Databricks Cloud的推出就是为了使大数据容易。Databricks Cloud能够使用户方便的创建数据处理的整个流程,同时支持Spark现有的应用,并加入了许多增强和附加功能。Databricks Cloud的设计初衷就是要大大简化大数据处理的的复杂性,它会吸引更多的企业用户从事到利用大数据来实现全新的价值。
Databricks Cloud由Databricks Platform,Spark和Databricks Workspace三部分组成。Databricks Platform使用户非常容易的创建和管理Spark计算机群,目前运行在Amazon AWS上,不久将扩展到更多的云供应商的设施上。 Databricks Workspace由notebook、dashboard和一个job launcher组成:
- Notebook提供了丰富的界面,允许用户进行数据的发现和探索,交互式绘制结果,把整个工作流程变为脚本执行,并支持用户之间的交互协作。
- 使用dashboard,用户可以选择任何以前创建的notebook,通过WISIWYG编辑器将所选的notebooks组装成一个dashboard,并发布给更多的用户。Dashboard上的数据和查询还可以定期刷新。
- Job launcher允许用户运行任意的Apache Spark任务,从而简化构建数据产品的过程。
2. Databricks联合创始人Ali Ghodsi:现场演示Databricks Cloud
Ali Ghodsi与2013年共同创立Databricks,现任工程主管。通过Databricks Cloud,Ali希望轻松完成简单的任务,并使复杂的分析成为可能。他演示了仅需点击鼠标几次就可以方便的在AWS上建立一个Spark计算机群。使用一个关于FIFA世界杯的示例数据,他演示了notebook,交互式用户界面,绘图,参数化的查询和dashboard。关于大数据分析,他使用Spark SQL交互处理了一个3.4 TB的推特数据集。Ali重点演示了通过机器学习来进行实时概念搜索。他首先使用MLlib在一个60GB维基百科数据上建立了一个TF-IDF词模型,并用Scala基于此模型建立了一个不同词之间的相似函数,还在Spark SQL上注册了此函数。最后使用Spark Streaming生成一个tweet流,并用Spark SQL过滤出和用户给出的搜索词相关的tweets,比如搜索足球会显示世界杯的tweets。这个演示在听众中得到极高的评价。人们惊叹演示中复杂的数据流程和分析的无缝集成,大家认为Databricks Cloud使自己可以更专注于分析本身,而不是花费大量时间精力来建立数据的流程设施,这会给他们公司业务的增长提供直接的动力。
Apache Spark和大数据产业
出席本次峰会的有SAP、DataStax、Cloudera、MapR等公司的高级主管,他们关于Spark和大数据产业的主题演讲非常精彩。
在峰会上,Databricks和SAP宣布成立合作伙伴关系,在SAP HANA平台上包装经过认证的Spark。 SAP高级副总裁Aiaz Kazi介绍了SAP的HANA和Apache Spark之间的协同效应,它们的结合给企业大数据提供了更好的支持。
Hortonworks前CEO / CTO Eric Baldeschwieler(也称Eric 14)重申了他的观点:“Apache Spark是当今大数据领域最激动人心的事情”。他认为Spark社区的一个重要目标是使Spark在数据科学和现实世界应用中大放异彩。为此他概述了几个任务,如建立一个开放的认证套件,更好的支持多个Spark计算机群并存,提供便携性的存储等。
Cloudera的CSO和共同创始人Mike Olson发表了主题是Spark作为下一代大数据MapReduce标准模式的演讲。Mike描述了Spark在Cloudera产品中的重要地位:在过去一年所有Cloudera支持的项目中,Spark的开源代码更新活动占总数的21%。Spark已经完全融入CDH,并被Cloudera的主要客户采用。 关与SQL在Hadoop上运行,Cloudera会继续支持用与BI分析的Impala,用于批量处理的Hive on Spark,以及用于混合Spark和SQL应用程序的Spark SQL。
MapR首席技术官和创始人MC Srivas说,MapR平台包括完整的Spark成员。Spark的优点包括易于开发,基于内存的高性能和统一的工作流程,Hadoop的优点包括规模可无限扩展,通用的企业平台和广泛的应用范围。通过结合Hadoop和Spark的优势,可以给MapR客户提供更好的支持。他展示了几个在不同领域的案例,包括广告优化,基因组合,网络安全和保健保险。
DataStax执行副总裁Martin Van Ryswyk的演讲是关于如何整合Spark和Cassandra。他宣布推出cassandra-driver-spark v1.0。DataStax的Cassandra与Spark的组合比优化后的Hadoop on Cassandra速度快2到30倍。
Spark的SQL支持
1. Spark SQL的主要开发人员Michael Armbrust:使用Spark SQL进行高级数据分析
Spark SQL是Spark1.0中最新的一个alpha组成部分。在峰会上,Databricks宣布,已停止对Shark的开发,Spark SQL将是其开发的重点。Spark SQL允许开发人员直接处理RDD,同时也可查询例如在 Apache Hive上存在的外部数据。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行外部查询,同时进行更复杂的数据分析。除了Spark SQL外,Michael还谈到Catalyst优化框架,它允许Spark SQL自动修改查询方案,使SQL更有效地执行。
2. 英特尔软件与服务部门工程经理Grace Huang:StreamSQL
为了使SQL用户迅速掌握流处理,StreamSQL支持通过SQL操作流数据,它建立在Spark Streaming和Catalyst优化框架之上。目前,它支持流之间简单的查询以及流和结构化数据之间的相互操作,也支持在Catalyst中的典型用法(如LINQ表达式,SQL和DStream的结合)。StreamSQL今后的工作将包括移动窗口支持,使用Hive的DDL,统一的输入/输出格式等。
R和Cascading作为Spark的前端
1. 加州大学伯克利分校Zongheng Yang:SparkR
R是数据科学家们进行分析和绘图的最广泛使用的语言之一,但是它只能运行在一台计算机上,当数据大到超过其内存时,R就会变得无能为力了。 SparkR是R的一个程序包,因此它提供了在R的环境中使用Spark的一个简易方法。SparkR允许用户创建RDD并用R函数对其进行变换。在R交互环境中可以给Spark计算机群提交作业。 在SparkR中还可以方便地利用现有的R程序包。更多详细信息请参考http://amplab-extras.github.io/SparkR-pkg。
2. Concurrent公司副总裁Supreet Oberoi:Cascading on Spark
Cascading是一个流行的应用程序开发框架,可用来构建以数据为中心的应用程序。它使用Tap和Pipe的概念,从而提高了用户建立MapReduce程序的抽象水平。 Cascading 3.0版包括一个可定制的查询规划方案,所以Cascading程序可运行在包括本地内存、Apache MapReduce和Apache Tez的后端环境上。即将发布的3.1版将可运行在Spark上。
Apache Spark内部机制和优化
1. MLlib主要开发人员Xiangru Meng:MLlib和稀疏数据
实际应用中的大型数据集往往是稀疏的。Spark MLlib支持稀疏矩阵和向量的存储及处理。作为MLlib的用户,应识别所面临的问题是否可以用稀疏数据来表示。当数据非常稀疏时,这往往决定了运行的效率。对于开发者而言,应采用适当的计算和算法来利用稀疏数据。Xiangru详述了对稀疏数据的三个优化算法:在KMeans中计算两点的距离,在线性模型中计算梯度的总和,以及如何在SVD中利用稀疏数据。
2. Databricks的Aaron Davidson:理解Spark的内部机制
Aaron的演讲主要是如何在实际应用中提高Spark核心性能。他详述了Spark RDD的执行模型和shuffle操作。 RDD保存了产生的顺序和计算过程,从??而形成一个逻辑的计划。逻辑计划在shuffle的边界分为不同的执行阶段,所有执行阶段形成一个DAG。执行阶段加上一个数据partition形成一个执行任务。当父辈阶段执行后,任务调度器就会为每一个任务提交一个作业。在shuffle的边界,Mapper任务将数据按照partition保存到磁盘,而reducer从多个mapper提取数据,并按照key来组合数据。此过程中shuffle的网络通信是昂贵的,按key的数据组合也会使用大量的内存。Aaron举了一个简单的例子:计算不同人名的数量,并用人名的第一个字母分组。他演示了两个不同的实现方法,并在Databricks Cloud中运行,比较了执行阶段和运行时间。
基于Apache Spark的科研及应用
1. 加州大学伯克利分校教授David Patterson:Spark和基因学
David Patterson是RISC结构的创始者,由他合作撰写的计算机体系结构一书是经典的教科书。David在演讲中介绍了几个基于Spark之上的开源基因学软件项目。SNAP是短读基因序列校准器,它是迄今为止最准确和最快的校准器,比其他的校准器快3到10倍。 ADAM是一个适用于在计算机群中存储的基因格式,使用先进的系统技术,可大大加速整个基因处理软件流水线的效率。 使用一个82个节点的计算机群,ADAM可以用比其他系统快110倍的速度来执行基因学中两个最昂贵的步骤。当David教授介绍了纽约时报为期2014年6月4日关于SNAP如何帮助挽救了一个孩子的生命的新闻时,全场响起热烈的掌声。
2. Jawbone公司数据副总裁Monica Rogati:为数据时代的大众制造数据产品
可联网的设备的数量到2020年将增长到500亿。在数据时代的大众眼中,世界将是聪明的,可适应每个人的独特情况。Monica认为Spark是构建智能数据产品的主要组成部分,因为它支持工业界所需的数据流程,无可挑剔的数据清理,迭代,机器学习和更快的运行速度。
3. Spotify的工程师Chris Johnson:大型音乐推荐系统
Spotify使用各种机器学习模型来增强其音乐推荐功能,包括网页发现和电台。由于这些模型的迭代特性,它们非常适合Spark的计算模式,可以避免Hadoop输入/输出所带来的开销。在这次讲座中,Chris评论了两个共同筛选算法,以及他如何基于Spark MLlib中的ALS来处理数千亿的数据点。
4. 苏黎世联邦理工学院讲师Kevin Mader:使用Spark进行实时图像处理和分析
采用基于同步加速器X射线层析Microscopy可以每秒产生8GB的图像数据。为了实时处理这些图像,Kevin采用了一个上千台机器的计算机群,并在上面开发了一套基于Spark,可进行过滤、分割和形状分析的系统。为了加速后期处理,Kevin进行了实时近似分析,如区域筛选和采样。
结束语
Spark Summit 2014是Spark开源生态系统发展壮大的一个重要里程碑,Apache Spark已经成为整合以下大数据应用的标准平台:
- 复杂的分析(例如机器学习)
- 交互式查询,包括SQL
- 实时流处理
有越来越多的工业产品建立在或集成了Spark如Databricks Cloud和SAP HANA等。
展望未来,Apache Spark社区将继续在多个领域进一步创新,以提供更多的功能,更快的运行效率和更深度的整合:
- Spark内核将提供一个可拔插的shuffle接口。现有的shuffler是基于HashMap来汇总具有相同关键词的数据,当内存压力高时,它会自动溢出到磁盘里。有了可插拔接口,在未来的版本中将加入排序和流水线shuffler。
- Spark内核将建立一个统一的存储API,可以支持固态硬盘驱动器(SSD),以及其他共享内存的软件存储系统,如Tachyon,HDFS缓存等。
- 与YARN更紧密的集成,比如动态调整资源分配,来更好的支持multi-tenency。
- Spark SQL作为新的SQL引擎来取代Shark。基于Catalyst的优化引擎可以直接为Spark内核进行优化处理。即将推出的动态代码生成将大大提高查询效率。
- Spark SQL将整合各种数据源,包括Parquet,JSON,NoSQL数据库(Cassandra,HBase,MongoDB)和传统的型数据库(SAP,Vertica和Oracle)。
- MLlib将包括一个统计库来进行抽样,相关性,估计和测试。不久推出将一组新的算法,包括非负矩阵分解,稀疏的SVD,LDA等。
- Spark Streaming将增加新的数据源和更好的与Apache Flume的整合。
通过这次的盛会,更加坚定了Spark在大数据中的核心地位。让我们期待Spark在未来的更加精彩的发展。
关于作者
辛湜(Reynold Xin)是Apache Spark开源社区的主导人物之一。他在UC Berkeley AMPLab进行博士学业期间参与了Spark的开发,并在Spark之上编写了Shark和GraphX两个开源框架。他和AMPLab同僚共同创建了Databricks公司。
王东是Databricks的软件工程师,目前在开发基于Apache Spark的产品。他于2003年获得卡内基梅隆大学的博士学位后,一直在旧金山及湾区工作。在加入Databricks前他在Twitter从事搜索和推荐系统的软件开发和大数据分析。