spark复习总结02
1.spark执行原理图

spark程序启动后创建sparkContext作为程序的入口,sparkContext可以与不同类的集群资源管理器(Cluster Manager)进行通信,从而获得程序运行所需要的资源, 获取到集群中其他工作节点(worker node)上对应的Executors,之后sparkContext将任务分发给executor进行执行。
1) 构建Spark Application运行环境
在Driver Program中新建SparkContext(包含SparkContext的程序称为Driver Program)
2) SparkContext向资源管理器申请运行Executor资源,并启动Executor,Executor向SparkContext申请task
3)SparkContext获得Executor后,Application代码会被发送到各个executor上
4)SparkContext构建RDD DAG图,将RDD DAG图分解为Stage DAG图,将stage提交给TaskScheduler,最后TaskSecheduler将Task发送给Executor执行
5) Task在Executor上执行,执行完毕后释放所有资源
2.Driver的运行方式(提交的部署模式):运行在worker节点上(集群模式)和运行在客户端上(客户端模式)
2.1 Driver运行在worker节点上
bin/spark-submit \
--master spark://hadoop-senior.ibeifeng.com:7077 \
--deploy-mode cluster\
/opt/datas/jars/SparkApp.jar

客户端提交作业给Master,Master让一个worker启动Driver,其余的worker启动Executor,Executor启动后向Driver进行注册;
Dirver启动后会创建DAGScheduler,Executor启动后会创建TaskScheduler;
DAGScheduler将作业分解为一到多个Stage,每个Stage根据RDD的partition个数决定了Task的个数(TaskSet),然后将生产的task set 放入到TaskScheduler中,然后TaskScheduler将Task分配的不同的Executor中执行,所有的Stage执行完成作业结束。
2.2 Driver运行在client上(此处的client表示提交作业的那台机器)
bin/spark-submit \
--master spark://hadoop-senior.ibeifeng.com:7077 \
--deploy-mode client \
/opt/datas/jars/SparkApp.jar

客户端之间启动程序,启动Driver相关工作:DAGScheduler和Master,客户端的Driver和worker向Master进行注册;
Master让worker节点启动Executor,并向Driver进行注册;
Driver的DAGScheduler将作业分解为相应的Stage,每个Stage包含的Task分配给TaskScheduler,TaskScheduler将task分配到不同的Executor执行,所有的Stage执行完成后作业结束。
2.窄依赖和宽依赖
窄依赖:每个父RDD的Partition最多被子RDD的一个Partition所使用。
宽依赖:每个父RDD的Partition会被多个子RDD的Partition所使用。
3.Spark四大特性
1)快速的:在内存中进行计算以及DAG图
2)通用的:包括批处理,流处理,图像计算等
3)简单的:Scale,Java、Python
4)可以运行在任何地方:hdfs,hive,hbase,yarn等
4.RDD的五大特性
1)A list of partition
一系列的分片
2)A function for computing each split
在每一个分片上都有一个函数去迭代/执行/计算它
3)A list of dependences on other RDDS
一系列的依赖:RDDa转换为RDDb,RDDb转换为RDDc,那么RDDc就依赖于RDDb,RDDb依赖于RDDa
4)Optionally,a partitioner for key-value RDDs
对于key-value的RDD,可指定一个parttitioner(分区函数),来告诉它如何分区,默认采用的是hash分区,常有:hash,range
5) Optionally,a list of preferred locations to compute each split on
处理RDD split进行计算时,split数据在哪里,我们尽量在那台机器上进行计算(移动计算而不是移动数据)
5.spark历史日志监控配置
1)服务端配置(conf/spark-env.sh)
SPARK_HISTORY_OPTS=-Dspark.history.fs.logDirectory=hdfs://hadoop-senior.ibeifeng.com:8020/user/beifeng/spark/eventLogs
2 ) 客户端配置(conf/spark-defaults.conf)
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop-senior.ibeifeng.com:8020/user/beifeng/spark/eventLogs
3 ) 启动历史服务器
sbin/start-history-server.sh
spark复习总结02的更多相关文章
- 【Spark 深入学习 02】- 我是一个凶残的spark
学一门新鲜的技术,其实过程都是相似的,先学基本的原理和概念,再学怎么使用,最后深究这技术是怎么实现的,所以本章节就带你认识认识spark长什么样的,帅不帅,时髦不时髦(这货的基本概念和原理),接着了解 ...
- spark复习笔记(1)
使用spark实现work count ---------------------------------------------------- (1)用sc.textFile(" &quo ...
- spark复习笔记(7):sparkstreaming
一.介绍 1.sparkStreaming是核心模块Spark API的扩展,具有可伸缩,高吞吐量以及容错的实时数据流处理等.数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字 ...
- spark复习笔记(7):sparkSQL
一.saprkSQL模块,使用类sql的方式访问Hadoop,实现mr计算,底层使用的是rdd 1.hive //hadoop mr sql 2.phenoix //hbase上构建sql的交互过 ...
- spark复习笔记(6):RDD持久化
在spark中最重要的功能之一是跨操作在内存中持久化数据集.当你持久化一个RDD的时候,每个节点都存放了一个它在内存中计算的一个分区,并在该数据集的其他操作中进行重用,持久化一个RDD的时候,节点上的 ...
- spark复习笔记(6):数据倾斜
一.数据倾斜 spark数据倾斜,map阶段对key进行重新划分.大量的数据在经过hash计算之后,进入到相同的分区中,zao
- spark复习笔记(4):RDD变换
一.RDD变换 1.返回执行新的rdd的指针,在rdd之间创建依赖关系.每个rdd都有一个计算函数和指向父rdd的指针 Spark是惰性的,因此除非调用某个转换或动作,否则不会执行任何操作,否则将触发 ...
- spark复习笔记(5):API分析
0.spark是基于hadoop的mr模型,扩展了MR,高效实用MR模型,内存型集群计算,提高了app处理速度. 1.特点:(1)在内存中存储中间结果 (2)支持多种语言:java scala pyt ...
- spark复习笔记(4):spark脚本分析
1.[start-all.sh] #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one ...
随机推荐
- 用其他音乐源帮帮网易云,Ubuntu听歌利器
镜像文章 1.用其他音乐源帮帮网易云,Android听歌利器 2.用其他音乐源帮帮网易云,Windows听歌利器 众所周知,国内只有网易云推出了Linux的客户端,在Listen 1并不十分好用的基础 ...
- golang的数据类型之字符类型
字符类型使用细节 1)字符常量是用单引号('')括起来的单个字符.例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9' 2) Go中允许使用转 ...
- Linux系统中NFS服务配置
文章目录: 一.NFS服务简介 二.NFS服务端配置 三.NFS客户端配置 四. ...
- vue - blog开发学习5
基本功能和后台联调 1.首页的所有博客 因为是前后台都是本地开发,所以前端vue需要设置proxy:修改/config/index.js中的这个proxyTable proxyTable: { '/a ...
- 安卓SDK的配置流程以及安装build-tools等插件
这两天做了一个移动端混合开发的项目,需要配置安卓的SDK,不过在这之前,需要先配置好Java环境(这个在这里就不写了).下面开始配置步骤: 1.下载SDK,然后解压到某个目录下面.推荐两个下载网址: ...
- PHP应该学什么,如何学好PHP
http://blog.sina.com.cn/s/blog_76bdabf70101azl4.html(注:原文来自传智播客) 本文转自http://blog.sina.com.cn/s/blog_ ...
- MMM实现Mysql高可用
MySQL主主同步方案 l MySQL主主+Keepalived l MySQL+DRBD+Heartbeat 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案, ...
- Pandas_key_point
10分钟快速入门pandas: http://pandas.pydata.org/pandas-docs/stable/10min.html ----------------------------- ...
- GitHub 创建工程
创建本地代码仓库 打开Git Bash 首先配置自己的身份,这样在提交代码的时候就能知道是谁提交的 输入git config --global user.name 名字 git config --gl ...
- Mac上使用频率最高的七组快捷键
不管Mac还是Windows,会使用快捷键都能让你的工作效果提升不少,但是快捷键那么多一下子全部记下来也不太实际,这里小编就整理了七组使用频率最高的快捷键,希望可以帮到大家. https://www. ...