Spark 核心开发者:Spark 2.0全面超越1.6版
2017-02-25 10:27:48 | 来源:ithome | 投稿:阿呆 | 编辑:dations

原标题:Spark 核心开发者:Spark 2.0全面超越1.6版

Spark 核心开发者范文臣表示,在Spark 2.2版本中,将加强资料定义语言(Data Definition Language,DDL)支援、提升稳定性,以及替Spark Streaming加入更多新功能。

图片来源:

iThome

「Spark SQL不仅仅是SQL」,Spark 核心开发者的范文臣表示,Spark SQL除了强化Spark处理结构化数据的能力,同时也为用户提供结构化API,「如果时光可以倒流,我们可能会称它为Spark Structure。」

Spark的分散式计算模型RDD(Resilient Distributed Dataset)虽然简单,但是相当通用,像是Spark SQL、Spark Streaming及图像API模组GraphX,都是以RDD为基础进行实作。但范文臣表示,此模型也有其限制,「它像是黑盒子,导致开发者不易进行修改、优化。」

另外,计算函数对于Spark也是个黑盒子,使用者不知道变数类型相对应的资料结构为何。在不了解系统如何进行运算、让储存效率更高的情况下,也让开发者丧失许多改善效能的机会,「Spark SQL就是为了解决如此问题而出现。」他表示。

范文臣表示,虽然Spark SQL仅负责处理结构化数据,并且牺牲部分的通用性,使得灵活度不如RDD模型,「但现实生活中,企业经常面对办结构化资料及结构化资料,藉此改善Spark的执行效能,是非常划算的决定。」此外,Spark SQL也提供DataFrame、DataSet等高层次API,让企业开发Spark应用更为方便。

Spark SQL核心三大架构

Spark SQL核心架构分为三大部分:API模组、前端模组Catalyst,用于分析、改善使用者查询,以及负责执行对应RDD的后端模组。他认为:「Spark SQL之所以可以成为活耀的Spark专案,Catalyst可谓功不可没。」范文臣表示,Catalyst这个模组的优势在于程式码简洁、框架灵活。

Catalyst模组利用分析、逻辑优化、实体计画三阶段,将更优化的查询计画交给后端RDD执行。因此,Spark 核心开发者范文臣认为:「Spark SQL之所以可以成为活耀的Spark专案,Catalyst功不可没。」(图片来源/Databricks)

利用查询计画定义如何产出新数据

Catalyst的运作机制则仰赖查询计画(Query Plan)来表达使用者的查询。而上层API如SQL AST、DataFrame、Dataset,也靠着Catalyst模组提供介面,让开发者建构查询计画。范文臣表示,使用者虽可以定义平台如何产生新的资料栏位,「但是仍要定义如何产生新的数据,而查询计画的目的就是用于此」,可用来描述数据的处理行为,例如Join、Project、Filter等操作。在开发者完成查询计画之后,Catalyst模组再进行一系列转换,输出一个经过优化的查询计画,并且交由后端RDD模组执行。

两大查询计画:逻辑查询计画、实体查询计画

而查询计画还可以细分为逻辑查询计画(Logical Query Plan)和实体查询计画(Physical Query Plan)。范文臣表示,逻辑查询计画定义数据的运算过程,「但是并不特别指明该计算如何进行。」

他举例,根据资料量的不同,使用者可能会判断使用Hash Join、Sort-Merge Join,但是透过逻辑查询计画,开发者只需表明利用Join处理即可。

反之,实体查询计画就明确定义了数据如何执行计算,例如根据资料格式不同,提出相对应的处理手段。

3步骤改善查询计画

而范文臣表示,Catalyst模组也会自动透过三大步骤来改善查询计画。第1步是分析阶段,将未解析(unresolved)逻辑查询计画,转换成逻辑查询计画。再者则是逻辑优化步骤,透过一系列的优化规则,对完成解析的逻辑查询计画,进一步优化。最后才将逻辑查询计画交给后端RDD执行。

Spark 2.0已全面超越1.6版

另外,范文臣表示,在去年释出的Spark 2.0版本中,除了加强效能表现、易用性,也要让Spark本身变得更加聪明。而这些目标,也透过Spark SQL的三大特色实现。

第一个特色是Tungsten专案,正在迈入第二阶段,因此,「Spark 2.0已经全面超越Spark 1.6,所有的Query执行都比1.6快,其中某些操作可以快上几十倍」,范文臣表示,根据Databricks的测试,光是Spark后端引擎执行资料过滤、加总、分组,Hash Join的效能,就提升了5至30倍。而基数排序法(Radix Sort)的运算,执行速度也快上10至100倍。

第二特色则是加强API功能,让使用者开发Spark应用程式可以变得更加简单。范文臣表示,Databricks新增了一个程式码入口端点SparkSession,它的功能除了作为使用者浏览DataFrame的媒介,也可以与中介资料互动,查询资料表格中的行、列数目及资料大小。同时,SparkSession还可以管理系统组态、丛集资源,「系统资源的调度,也可以透过这个API管理。」

最后在Spark 2.0中,也新增了结构化串流(Structured Streaming)功能模组,「这是Databricks想要简化串流数据操作的尝试。」范文臣表示,目前业界对即时串流的需求增加,想藉由处理即时数据,加速企业的决策时间。而他也观察到,在即时串流处理的实际应用中,往往还要搭配批次处理以及查询操作,例如,在开发者彙整系统产出即时数据,并且汇入SQL资料库后,让其他使用者可以进行SQL查询,或是让使用者利用离线资料训练机器学习模型。

Spark 2.0效能全面超越Spark 1.6,所有的Query执行都比1.6版快。根据Databricks的测试,光是Spark后端引擎执行资料过滤、加总、分组,Hash Join的效能,就提升了5至30倍。而基数排序法(Radix Sort)的运算,执行速度也快上10至100倍。(图片来源/Databricks)

企业导入即时串流分析碰上的挑战

但在实际导入串流处理的过程,企业却碰上不少问题,范文臣举例,像是资料传输延迟而影响了分析结果,或像在分散式串流架构中,部分节点成功将资料写入至资料库中,但其余节点传输失败,导致资料库中的数据不完整。

在改善串流处理的过程,范文臣也总结了一个基本心得:「企业想要导入串流分析最简单的方法,便是不要思考串流处理的问题。」他解释,假设串流分析平台必须针对系统日誌文件进行ETL处理,如果1个礼拜处理一次,能否被归为串流处理?范文臣表示,大多数人的回答应该都是否。但他表示,若将极端状况列入考量,「将时间区间缩小到每5秒,甚至每1毫秒执行一次呢?」

范文臣解释,在运作逻辑上,串流处理每隔一段时间,就会对所有的数据进行查询,「企业用户并不会碰上串流处理,仅会用上批次处理」。然而在实际运行上,Spark则会按照即时串流的方式处理资料,例如,减低每次执行计算资料量、扫描新增数据,「达到串流处理的效能。」

未来Spark要提升稳定性、加强串流功能

而范文臣也预告未来Spark的发展方向。他表示,在Spark 2.2版本中,将加强资料定义语言(Data Definition Language,DDL)支援、提升稳定性,以及替Spark Streaming加入更多新功能。

最后是将持续提升Spark的效能。在Spark执行资料的映射(Map)及化简(Reduce)过程中,中间必须透过Shuffle串接两者。

范文臣表示,由于CPU核心数增加是未来趋势,导致Mapper及Reducer都在同一节点上运作,「未来得要朝In-Memory Shuffle发展,藉此提高Spark的性能。」

tags:开发者   超越   核心

上一篇  下一篇

相关:

国内快递航母何时超越“联邦快递”? [焦点]

民营快递企业 领头羊 顺丰将正式完成借壳上市。记者从顺丰内部了解到,顺丰泰森控股(集团)有限公司(下称 顺丰控股 )将于24日在深交所进行更名仪式,顺丰总裁王卫将出席。 受上市利好,顺丰借壳上市的公司鼎泰新

AMD新世代桌上型高效能处理器Ryzen 7亮相,大打低价多核心牌挑战英特尔PC霸主地位

AMD执行长苏姿丰在Ryzen Tech Day大会上宣布新一代Ryzen 7处理器正式到来,并还在现场首次展示了Ryzen 7处理器实际产品原型,她在大会中更表示,希望透过新世代Ryzen 7系列处理器的问世,以重振AMD目前在桌机处理器

PHP成为全球第一个在核心添加现代加密库的程式语言

示意图,与新闻事件无关。 图片来源: Zend PHP团队近日以37:0无异议地通过于PHP 7.2版的核心中整合Libsodium密码库,使它成为全球第一个把现代加密技术纳为标準函式库的程式语言。Libsodium的全名为Sodium加密函式

超越萨德的朝鲜导弹,总统候选人们要给出解决办法并由国民选择

朝鲜昨天公布说,12日发射的弹道导弹是“属于新型战略武器体系的地对地中远端战略弹道导弹北极星2型”,即利用潜射弹道导弹(SLBM)体系的新型固体燃料地对地战略导弹。由于液体燃料发动机需要在发射前注入燃料,能够

英特尔最贵24核心Xeon E7处理器推出新型号,抢攻高阶伺服器市场

图片来源: 英特尔 针对高阶伺服器应用市场,英特尔最近推出新一代Xeon E7 v4伺服器处理器晶片,型号为E7-8894 v4,能支援8路伺服器架构设计,不仅处理器时脉最高3.4GHz,更拥有超多24颗运算核心、高达48个执行绪,不

站长推荐: