Spark——为数据分析处理提供更为灵活的赋能

本文来自网易云社区html

做者:王佳楠算法

1、概述

现现在在大规模数据处理分析的技术领域中,Hadoop及其生态内的各功能组件占据了绝对的统治地位。Hadoop原生的MapReduce计算框架因为任务抽象简单、计算流程固定、计算的中间结果写入磁盘引发大量读写开销等短板,正逐步的被基于内存的分布式计算框架Spark代替,应用于各种大规模数据处理分析的场景中,其优点主要体如今如下5个方面:  一、更快的计算速度。采用计算中间结果的内存缓存机制和基于DAG的数据处理过程优化策略,进一步提高数据处理速率。  二、简单易用的分布式计算。将大规模数据处理任务,抽象为RDD的处理变换操做,将并行实现的分布式计算任务拆分为各自独立的串行计算过程。  三、适合丰富的应用场景。Spark内部集成了SQL、机器学习、流计算、图运算等多种类型计算模型,知足多种大规模数据分析的场景需求。  四、兼容多样的存储系统。知足对包括HDFS、HBase、Hive、S3等多种大规模数据存储系统的高效读写需求,轻松处理TB级以上规模以上的数据。  五、资源管理与高可靠性。结合Yarn、Mesos等多种类型的资源管理器,监控协调各计算子任务的运行状态,失败重启机制确保分布式做业的可靠性。缓存

2、RDD计算模型原理

Spark将数据处理过程抽象为对内存中RDD(弹性分布式数据集)的操做,RDD的能够经过从数据源直接读取和集合数据类型封装两种方式建立。针对RDD的操做,根据其结果主要分为如map、flatMap、mapPartition、filter等生成新的RDD的transformation(转换)操做和collect、reduce、foreach等生成集合数据类型或结果写入的action(行为)操做两大类。 Alt pic 框架

上图中描述了一个典型的Spark做业基于RDD实现数据的处理过程。其中,Spark对RDD的处理过程是惰性的,只有调用对RDD的action操做才能启动对RDD的计算过程,连续的调用多个transformation操做是没法使数据处理过程真正的执行。在触发RDD计算过程后,根据Spark内置的DAG(有向无环图)引擎将多个对RDD的操做执行策略进行优化。  为知足对大规模数据的处理须要,Spark将RDD划分为多个partition(分区),以partition为单位将数据分散到集群上的各个节点中。针对RDD的action操做和transformation操做间的本质区别就是生成的结果是否为RDD。机器学习

3、基于Yarn实现资源管理

因为Hadoop的HDFS与Spark的RDD抽象读写具备较为完备的兼容性,各版本Spark均提供对应当前Hadoop版本的安装包。一样,Spark也可使用Hadoop中的Yarn做为自身的资源管理器,用以完成对Spark集群中是做业管理和任务计算资源调度分配等工做。 Alt pic 分布式

在Spark做业的执行过程当中,Yarn将在集群中的物理节点上的Executor的JVM进程封装为独立的Container,并提供独立的临时文件目录以及内存和CPU资源。同时,Spark还提供了共享文件依赖的机制将Spark做业执行过程当中,各Executor所需的如jar包、.so动态库、py文件及其余格式类型的文件依赖资源与Spark做业自身的执行文件分发到各Container中,使得Spark做业可以具有更为灵活的拓展性。函数

4、技术栈

现现在,Spark做业支持Java、Scala、Python以及R四种语言编写,Spark自身提供了SQL、机器学习、流计算以及图运算四种类型的计算功能组件,开发人员可根据实际的应用需求和相应组件的功能特性完成Spark做业的开发。可是,其中如GraphX等部分功能组件仅支持Java及Scala语言的调用。 Alt pic oop

SQL:基于对内存中RDD操做和DAG引擎优化,Spark可以实现比基于原生MapReduce的Hive SQL更高效的计算过程。同时,采用DataFrame封装Spark做业可以以函数调用的方式完成SQL操做。  机器学习:Spark基于内存实现RDD操做,可以知足使用大规模数据集完成机器学习建模时进行迭代运算的须要。其自身提供的MLlib组件包中提供了大量经常使用的机器学习算法模型,同时,Intel基于Spark开发的BigDL使Spark可以完成深度学习的建模计算过程。  流计算:Spark Streaming将数据源抽象为DStream,将各时间窗内持续产生的实时数据切分为不一样的RDD,以RDD为单位完成对时间窗内实时数据的处理,但其计算模式仍存在批处理的特性。  图运算:Spark中自带的图运算引擎GraphX采用由并行超步与全局同步组成的Bulk Synchronous Parallell(总体同步并行)模式,将图运算过程抽象为各步的迭代直至符合收敛中止条件。组件化

5、应用场景

在网易大数据开发计算平台Mammut中,做业流任务中已支持Spark类型的计算节点。在原有SQL类型节点的基础上,经过上传Spark做业对应的jar包并完成相对应类型参数的配置,便可完成更多更为灵活的ETL过程,弥补Hive原生udf函数和SQL语句没法完成某些特殊要求计算的短板。 Alt pic 学习

为实现更加通用性更广的服务,基于组件化的方式将经常使用的非SQL的批处理计算过程实现为通用的功能组件包,经过传入特定的参数实现功能的调用,从而为后续的开发过程节约成本。


网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区



相关文章:
【推荐】 互联网金融中的数据挖掘技术应用
【推荐】 AndroidTV开发(1)

相关文章
相关标签/搜索