专栏首页Albert陈凯3.0Spark计算模型

3.0Spark计算模型

Spark大数据处理:技术、应用与性能优化

第3章 Spark计算模型

创新都是站在巨人的肩膀上产生的,在大数据领域也不例外。微软的Dryad使用DAG执行模式、子任务自由组合的范型。该范型虽稍显复杂,但较为灵活。Pig也针对大关系表的处理提出了很多有创意的处理方式,如flatten、cogroup。经典虽难以突破,但作为后继者的Spark借鉴经典范式并进行创新。经过实践检验,Spark的编程范型在处理大数据时显得简单有效。<Key,Value>的数据处理与传输模式也大获全胜。

Spark站在巨人的肩膀上,依靠Scala强有力的函数式编程、Actor通信模式、闭包、容器、泛型,借助统一资源分配调度框架Mesos,融合了MapReduce和Dryad,最后产生了一个简洁、直观、灵活、高效的大数据分布式处理框架。

与Hadoop不同,Spark一开始就瞄准性能,将数据(包括部分中间数据)放在内存,在内存中计算。用户将重复利用的数据缓存到内存,提高下次的计算效率,因此Spark尤其适合迭代型和交互型任务。Spark需要大量的内存,但性能可随着机器数目呈多线性增长。本章将介绍Spark的计算模型。

3.1 Spark程序模型

下面通过一个经典的示例程序来初步了解Spark的计算模型,过程如下。

1)SparkContext中的textFile函数从HDFS[插图]读取日志文件,输出变量file[插图]。

val file=sc.textFile("hdfs://xxx")

2)RDD中的filter函数过滤带“ERROR”的行,输出errors(errors也是一个RDD)。

val errors=file.filter(line=>line.contains("ERROR")

3)RDD的count函数返回“ERROR”的行数:errors.count()。

RDD操作起来与Scala集合类型没有太大差别,这就是Spark追求的目标:像编写单机程序一样编写分布式程序,但它们的数据和运行模型有很大的不同,用户需要具备更强的系统把控能力和分布式系统知识。

从RDD的转换和存储角度看这个过程,如图3-1所示。

[插图]

图3-1 Spark程序模型

在图3-1中,用户程序对RDD通过多个函数进行操作,将RDD进行转换。Block-Manager管理RDD的物理分区,每个Block就是节点上对应的一个数据块,可以存储在内存或者磁盘。而RDD中的partition是一个逻辑数据块,对应相应的物理块Block。本质上一个RDD在代码中相当于是数据的一个元数据结构,存储着数据分区及其逻辑结构映射关系,存储着RDD之前的依赖转换关系。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spark系列课程-0020Spark RDD图例讲解

    我们从这节课开始,讲Spark的内核,英文叫做Spark Core,在讲Spark Core之前我们先讲一个重要的概念,RDD, ? image.png 我们S...

    Albert陈凯
  • spark性能调优之重构RDD架构,RDD持久化

    当第一次对RDD2执行算子,获取RDD3的时候,就会从RDD1开始计算,就是读取HDFS文件,然后对RDD1执行算子,获取到RDD2,然后再计算,得到RDD3 ...

    Albert陈凯
  • 4.0Spark编程模型RDD

    Spark核心技术与高级应用 第4章 编程模型 不自见,故明;不自是,故彰;不自伐,故有功;不自矜,故能长。 ——《道德经》第二十二章 在面对自我的问题上,不...

    Albert陈凯
  • Spark系列课程-0020Spark RDD图例讲解

    我们从这节课开始,讲Spark的内核,英文叫做Spark Core,在讲Spark Core之前我们先讲一个重要的概念,RDD, ? image.png 我们S...

    Albert陈凯
  • Spark和RDD究竟该如何理解?

    1.Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分...

    挖掘大数据
  • Spark内部原理

    Spark中的Shuffle、宽依赖窄依赖、RDD持久化、共享变量

    俺也想起舞
  • 基于Spark的机器学习实践 (二) - 初识MLlib

    MLlib是Spark的机器学习(ML)库。 其目标是使实用的机器学习可扩展且简单。 从较高的层面来说,它提供了以下工具:

    JavaEdge
  • 如何应对大数据分析工程师面试Spark考察,看这一篇就够了

    可以说Spark几乎是企业搭建大数据平台必备组件,作为数据分析工程师在工作中执行程序、调试程序、查询数据都会和Spark打交道,所以对Spark知识的考察也就顺...

    AI科技大本营
  • Spark 2.3.0 重要特性介绍

    为了继续实现 Spark 更快,更轻松,更智能的目标,Spark 2.3 在许多模块都做了重要的更新,比如 Structured Streaming 引入了低延...

    smartsi
  • javascript基础修炼(12)——手把手教你造一个简易的require.js

    许多前端工程师沉浸在使用脚手架工具的快感中,认为require.js这种前端模块化的库已经过气了,的确如果只从使用场景来看,在以webpack为首的自动化打包趋...

    大史不说话

扫码关注云+社区

领取腾讯云代金券