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的更多相关文章

  1. 【Spark 深入学习 02】- 我是一个凶残的spark

    学一门新鲜的技术,其实过程都是相似的,先学基本的原理和概念,再学怎么使用,最后深究这技术是怎么实现的,所以本章节就带你认识认识spark长什么样的,帅不帅,时髦不时髦(这货的基本概念和原理),接着了解 ...

  2. spark复习笔记(1)

    使用spark实现work count ---------------------------------------------------- (1)用sc.textFile(" &quo ...

  3. spark复习笔记(7):sparkstreaming

    一.介绍 1.sparkStreaming是核心模块Spark API的扩展,具有可伸缩,高吞吐量以及容错的实时数据流处理等.数据可以从许多来源(如Kafka,Flume,Kinesis或TCP套接字 ...

  4. spark复习笔记(7):sparkSQL

    一.saprkSQL模块,使用类sql的方式访问Hadoop,实现mr计算,底层使用的是rdd 1.hive //hadoop  mr  sql 2.phenoix //hbase上构建sql的交互过 ...

  5. spark复习笔记(6):RDD持久化

    在spark中最重要的功能之一是跨操作在内存中持久化数据集.当你持久化一个RDD的时候,每个节点都存放了一个它在内存中计算的一个分区,并在该数据集的其他操作中进行重用,持久化一个RDD的时候,节点上的 ...

  6. spark复习笔记(6):数据倾斜

    一.数据倾斜 spark数据倾斜,map阶段对key进行重新划分.大量的数据在经过hash计算之后,进入到相同的分区中,zao

  7. spark复习笔记(4):RDD变换

    一.RDD变换 1.返回执行新的rdd的指针,在rdd之间创建依赖关系.每个rdd都有一个计算函数和指向父rdd的指针 Spark是惰性的,因此除非调用某个转换或动作,否则不会执行任何操作,否则将触发 ...

  8. spark复习笔记(5):API分析

    0.spark是基于hadoop的mr模型,扩展了MR,高效实用MR模型,内存型集群计算,提高了app处理速度. 1.特点:(1)在内存中存储中间结果 (2)支持多种语言:java scala pyt ...

  9. spark复习笔记(4):spark脚本分析

    1.[start-all.sh] #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one ...

随机推荐

  1. Redis 系列(02)数据结构

    目录 Redis 系列(02)数据结构 Redis 系列目录 1. String 1.1 基本操作 1.2 数据结构 1.3 Redis数据存储结构 2. Hash 2.1 基本操作 2.2 数据结构 ...

  2. hdfs 创建一个新用户

    需要给第三方提供hdfs用户,和上传文件的权限 1.需要先在linux 上创建一个普通用户: hn,并修改密码 sudo -u hdfs hadoop fs -mkdir /user/用户名 sudo ...

  3. FTP上传下载文件(面向对象版)

    # 服务端 import socketserver import os import json import hashlib import struct class MySocketServer(so ...

  4. HDU 2815 Mod Tree (扩展 Baby Step Giant Step )

    Mod Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 《零基础学习Python制作ArcGIS自定义工具》课程简介

    Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...

  6. split slice splice的简单区别

    split slice splice的简单区别 split: 分割 //字符串方法 string.split let str = 'hello world'; //str.split('') 以什么东 ...

  7. java中wait()和sleep()的区别

    前言 以前只知道一个结论,但是没法理解,现在水平上来了,自己代码中写了一个验证的方法. 1.先上结论:wait()会释放持有的锁,sleep()不会释放持有的锁 2.验证:看代码运行结果. packa ...

  8. linux下各文件夹的结构及其用途说明

    bin 二进制可执行命令 dev 设备特殊问题 etc 系统管理和配置文件 etc/rc或etc/rc.d或etc/rc?.d启动或改变运行级时运行的脚本或脚本的目录 etc/passwd 用户数据库 ...

  9. mysql查询诊断分析工具

    Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方.通常我们是使用的explain,以及slow query log都无法做到 ...

  10. LR之-参数化

    1.改变参数化主要在于select next now和update value on这个二个选项 sequential:顺序取值 random:随机取值 unique:唯一取值 same line a ...