Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark SQL相关的知识,如果对Spark不熟的同学可以先看看之前总结的两篇文章:

  【原】Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令

  【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性


第七章主要讲了Spark的运行架构以及在集群上的配置,这部分文字比较多,可能会比较枯燥,主要是讲整个过程是怎么运行的。首先我们来了解一下Spark在分布式环境中的架构,如图1 所示

图1 Spark分布式结构图

如上图所示,在Spark集群中有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调点叫“驱动器节点(Driver)”,与之对应的工作节点叫“执行器节点(executor)”。驱动器节点和所有的执行器节点被称为一个Spark应用(Application)。Spark应用通过一个“集群管理器(Cluster Manager)”的外部服务在集群中的机器上启动,其中它自带的集群管理器叫“独立集群管理器”。

驱动器节点:

  作用:

执行程序中的main()方法的进程,一旦终止,Spark应用也终止了。

  职责:

把用户程序转化为任务

用户输入数据,创建了一系列RDD,再使用Transformation操作生成新的RDD,最后启动Action操作存储RDD中的数据,由此构成了一个有向无环图(DAG)。当Drive启动时,Spark会执行这些命令,并转为一系列stage(步骤)来操作。在这些步骤中,包含了多个task(任务),这些task被打包送到集群中,就可以进行分布式的运算了,是不是像流水线上的工人呢~

为执行器节点调度任务

Driver启动后,必须在各执行器进程间协调各个任务。执行器进程启动后会在Driver上注册自己的节点,这样Driver就有所有执行器节点的完整记录了。每个执行器节点代表一个能够处理任务和存储RDD数据的进程。Spark会根据当前任务的执行器节点集合,尝试把所有的任务基于数据所在的位置分配给合适的执行器进程。当我们的任务执行时,执行器进程会把缓存数据存储起来,而驱动器进程同样也会跟踪这些缓存数据的任务,并利用这些位置信息来调度以后的任务,以尽量减少数据的网络传输。


执行器节点:

  作用:

负责在Spark作业中运行任务,各个任务间相互独立。Spark启动应用时,执行器节点就被同时启动,并一直持续到Spark应用结束。

  职责:

负责运行组成Spark应用的任务,并将结果返回给驱动器程序。

通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在执行器进程里的,所以可以在运行时充分利用缓存数据提高运算速度。


 集群管理器:

  在图一中我们看到,Spark依赖于集群管理器来启动执行器节点,而在某些特殊情况下,也会依赖集群管理器来启动驱动器节点。Spark有自带的独立集群管理器,也可以运行在其他外部集群管理器上,如YARN和Mesos等。下面讲一下两种比较常见的外部集群管理器:

  独立集群管理器:

1.启动独立集群管理器

2.提交应用:spark-submit --master spark://masternode:7077 yourapp<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值