您的位置: 网界网 > 软件 > 正文

内置库组件推动Spark分析应用发展

2015年08月16日 16:33:52 | 作者:Ed Burns | 来源:TechTarget中国

摘要:Databricks公司软件工程师、Apache Spark开源项目贡献者Patrick Wendell在去年的Spark峰会上曾说,该项技术的数据处理能力非常强大,但是它要基于核心引擎之上的Spark库组件才能发挥作用。

标签
大数据分析
内置库组件
Apache Spark

Databricks公司软件工程师、Apache Spark开源项目贡献者Patrick Wendell在去年的Spark峰会上曾说,该项技术的数据处理能力非常强大,但是它要基于核心引擎之上的Spark库组件才能发挥作用。他说:“Spark的未来是库组件,这正是社区爱好者们投入努力和创新诞生的地方。”

事实确实如此,在本月举行的Spark2015峰会上,突出特色的案例研究都是关于用户介绍他们如何把这些库组件应用到Spark分析应用中的。

Spark平台有四个独立的库:Spark SQL,Spark流,图形处理库GraphX和机器学习库MLlib(其中包括内置算法和专为流式数据准备、探索和分析任务设计的编程功能)。这些库组件都支持用户自动化实现某些任务,省掉一些通用性的编码工作。

例如,中国搜索引擎供应商百度公司首席架构师James Peng说,使用Spark SQL针对数据运行SQL可以“解决现有业务的一些痛点,这一点可以极大改进决策流程”。

百度公司使用Spark已经一年多了,Spark SQL已经成为了该公司最受欢迎的技术之一。Peng的团队用它开放百度的Hive表,在网站访问拥堵时把数据从Hadoop集群提取给产品经理们,他们跟踪最新搜索关键词来引导销售和营销策略。这样可以帮助他们跟踪最热门搜索关键词,帮助指导他们的销售工作方向。

Spark SQL加速分析应答

Peng说,在Spark部署之前,产品经理们必须把他们想执行的查询发送给Hadoop引擎,然后等待应答信息返回,这个过程通常要十分钟左右。但是现在,使用SQL在Hive查询数据只需要半分钟左右。

SparkSQL的主要益处是为查询各种结构化数据提供了一种统一方式,这些结构除了Hive表,还包括Parquet 和JSON格式文件。Peng说,它最大的缺点是百度的团队在把Spark SQL查询扩展到像MapReduce中处理的那种非常大的批任务时会有些麻烦,那是Hadoop原来的软件编程框架。他希望该库组件在未来可以处理这个问题。

在一次采访中,Databricks公司负责工程和产品管理的副总裁AliGhodsi说,Spark供应商的每个客户都在使用Spark SQL,这是最受欢迎的库组件。其次是MLlib。机器学习库包含一组算法,可以运行各种分析模型,比如:回归算法、集群分析和决策树。它可以降低做这些预测分析和数据分析的门槛,可以基于此做一些高级功能。

ChristopherBurdorf是媒体娱乐公司NBCUniversal公司的一名软件工程师,他说他们的分析团队使用MLlib帮助决策应该从分布式服务器上提取哪些媒体文件来支持NBC国际有线电视运营。这些服务器存储着数百TB的文件,都是由当地有线电视运营商在欧洲和亚洲很遥远的地方传上去的,但是Burdorf说要维护一个总清单确定需要哪些是不可能的。如果NBC把所有文件都留在服务器上,那么很快容量就会被塞满,但是如果删掉太多,有可能会激怒有线电视运营商,因为把他们的成果都忽视了。

因此,他们的分析团队运行简单的内部开发算法读取服务器上的所有文件,并基于预定义特征来判断是否要去掉一些文件,这些特征包括文件日期和上次播出后的时间间隔等。但是,Burdorf表示,要读取所有文件也是非常困难的资源密集消耗的任务。

机器学习使分析自动化

为了解决这一问题,他和他的同事们实施了Spark分析应用,帮助他们训练MLlib算法,用来识别哪个文件看起来应该从服务器上删除。这样的话,他们可以基于一些基本特征预测哪些文件应该删除。Burdorf说:“我们的性能获得了极大提升,因为不需要再不停检查所有文件了。”

尽管如此,编程人员还是必须测试几种不同的模型,才能确定那种算法模型预测的更准确。此外,一旦该模型投入生产应用,他们发现会给服务器产生很多临时文件,这样的话会在周末令系统崩溃。他们必须再写一个单独的程序来清理那些文件。

Spark流模块是为了简化捕获、分析和可视化流数据的流程而提供的。它可以准确地运行较小的频繁执行的任务,近乎实时地处理数据,这样就可以帮助我们构建需要处理信息流的应用。

在线汽车市场AutoTrader公司使用Spark流处理组件把它所有站点的流量做了可视化实现,以便监测广告效果,并在每次更新后每个网站的整体稳定情况。例如(+微信关注网络世界),在今年的超级碗大赛(见译注)中,AutoTrader公司的分析团队构建了实时计分板,在某汽车品牌投放广告后跟踪网站流量起伏变化情况。这就使他们可以量化具体广告的效果,比前几年在更高层次粒度上掌握信息,以前他们要花一个多小时才能看到数据情况。

JonGregg是AutoTrader公司一位高级分析工程师,他说,Super Bowl计分板主要对那些公共关系价值的网站支付。但是该公司的数据分析师使用类似基于Spark的应用来持续监视web流量,可以帮助他们监测网站更新后可能出现的异常(比如,访问异常或者偶尔出现的一些问题)。他们还考虑开发仪表盘,用Spark分析数据填充,供管理层监控网站流量。

图形处理整合各部分

GraphX是Spark图形计算库组件,它利用一组算法支持用户以图形形式结构化、搜索和显示数据,并根据不同对象之间的关系进行组织。软件开发商Autodesk公司实现了3D设计工具用于制造、建筑架构设计和构建应用,使用GraphX使创造性设计过程中各种部件之间的关系可视化。图形功能支持公司软件用户搜索设计的具体部件,同时放到一起进行整体设计,看其它各部件的情况。

GraphX通过挖掘Autodesk公司记录信息的每个文件来进行工作。它可以根据数据的功能对部件进行分类,例如齿轮或者弹簧。这个过程中,Spark系统会根据在一起组合应用的情况把部件分成若干组。Autodesk公司软件架构师YottoKoga说:“因为这是图形化模拟的,所以我们可以(在没有实物的时候)开始研究很多东西。”

不过,对于Spark框架中的大部分内容,还是有一定学习曲线的。Koga说Autodesk公司早期有个国产系统,做一些类似GraphX做的事,把早期的分类导入到Spark会出现一些问题。

但是,像Databricks公司这样的供应商或者Spark社区的其它供应商都在继续围绕该技术做开发,用户希望在大会上提出的问题最终可以得以解决。百度公司的Peng说:“Spark已经显示出了巨大的潜力,但是我们的雄心并不止于SQL。我们希望它能用于所有常规计算。”

[责任编辑:软件频道 yu_xiang@cnw.com.cn]

我也说几句