Learning Spark [1] - Spark的基础概念

术语:

  • Application(应用程序):用户使用API所构建的Spark程序,包含了Driver(驱动)和Executor(执行单元)。
  • SparkSession(Spark时域):一个提供了使用Spark程序入口的实例。
  • Job(作业):由多个Task(进程)组成平行计算,会为Spark操作生成一个结果(e.g. save(), collect())。
  • Stage(阶层):每个Job都会分割为小份Task的集合,即为Stages。
  • Task(进程):会直接送到Spark Executor的一个单位的work(工作)。
    以下为一些更详细的概念

Spark Application and SparkSession

每个Spark Application的核心为Spark Driver,他会创建一个SparkSession(在Spark Shell中,Spark Driver直接创建了一个SparkSession)。创建了SparkSession后,我们就可以使用API对Spark进行编程

Spark Jobs

Driver会把一个Application转换为一个或多个Jobs,然后会把每个Job转化为DAG(有向无环图)。每一个DAG里的node(环节),皆会是一个或多个Stages。

Spark Stages

作为DAG中一个node,Stages可以是平行或者序列的。

Spark Task

每个Stage都由一个或者多个Task组成,所以会使每个Executor联合起来;每个Task仅map(映射)一个Core和一块数据。所以,一个16核Executor可以拥有16个或更多的Task,且平行运行!

Trasnformations, Actions, and Lazy Evaluation

Spark的运行类型可以分为两种:Transformations和Actions。

Transformation将一个DataFrame转化为另一个DataFrame且使原数据属性为不可更改来保留原数据。例如select()和filter()将不会更改原数据,则会将结果保存为新的DataFrame,然后输出改DataFrame作为结果。
所有Transformations都是lazy evaluation(惰性计算)。他们的结果将不会直接得出,但是他们会被记录为lineage(血统)。血统会在后续的执行中,去重新对Transformation进行排序,组合,优化到Stages,使执行更加效率。在Action被触及或数据被“触碰”之前,Transformation的执行都会被推迟,即为Spark的惰性计算策略。在以下的例子中,在filtered.count()前没有任何发生。

strings = spark.read.text("../README.md")
filtered = strings.filter(strings.value.contains("Spark")) 
filtered.count()
# 20


惰性计算使查询在执行前可以大致的观望数据的转化链,与Lineage,以及原数据不可更改,共同为Spark提升了容错率。

Narrow and Wide Transformations

任何只有单一输出的Transformation即是Narrow Transformation。例如filter()和contains()。groupby()和orderby()则是Wide Transformation。

Spark UI

在Spark Web UI中,可以实时观测:

  • 计划的stages, tasks
  • RDD大小以及内存占用的概况
  • 配置环境的信息
  • 执行器的信息
  • 所有Spark SQL的查询

  • 在本地模式中,地址为http://localhost:4040

Reference
Learning Spark 2nd - Lightning Fast Big Data Analysis by Jules S. Damji, Brooke Wenig, Tathagata Das, and Denny Lee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值