spark-on-yarn 学习
1. hdfs存文件的时候会把文件切割成block,block分布在不同节点上,目前设置replicate=3,每个block会出现在3个节点上。
2. Spark以RDD概念为中心运行,RDD代表抽象数据集。以代码为例:
sc.textFile(“abc.log”)
textFile()函数会创建一个RDD对象,可以认为这个RDD对象代表”abc.log”文件数据,通过操作RDD对象完成对文件数据的操作。
3. RDD包含1个或多个partition分区,每个分区对应文件数据的一部分。在spark读取hdfs的场景下,spark把hdfs的block读到内存就会抽象为spark的partition。所以,RDD对应文件,而partition对应文件的block,partition的个数等于block的个数,这么做的目的是为了并行操作文件数据。

由于block是分布在不同节点上的,所以对partition的操作也是分散在不同节点。
4. RDD是只读的,不可变数据集,所以每次对RDD操作都会产生一个新的RDD对象。同样,partition也是只读的。
sc.textFile("abc.log").map()
代码中textFile()会构建出一个NewHadoopRDD,map()函数运行后会构建出一个MapPartitionsRDD。
这里的map()函数已经是一个分布式操作,因为NewHadoopRDD内的partition是分布在不同节点上的,map()函数会对每一个partition做一次map操作,形成新的partition,一会产生新的RDD(MapPartitionsRDD)。对每个partition执行map操作就是一个task,在图中就会有3个task,task和partition一一对应。

5. 最终每个task会和partition一一对应。但是在分配之前需要考虑task的执行顺序。就出现了job、stage、宽依赖和窄依赖的概念。
宽依赖和窄依赖是为了安排task的执行顺序。简单理解,窄依赖是指操作可以pipeline形式进行,比如map、filter,,不需要依赖所有partition的数据,可以并行地在不同节点计算。map和filter只需要一个分区的数据。
宽依赖,比如groupByKey,需要所有分区的数据才能进行计算,同时会引发节点间的数据传输。

Spark会依据窄依赖和宽依赖划分stage,stage按顺序1,2,3依次执行。
图中stage2里的map和union是窄依赖。
stage3的join是宽依赖。Join操作会把所有partition的数据汇总起来,生产新的partition,这中间可能会发生大量的数据传输。同时会把新生产的RDD写回hdfs,在下次使用时重新读取,划分新的partition。
若干个stage组成一个job,job由真正执行数据的计算部分触发产生,如reduce、collect等操作,所以一个程序可能有多个job。RDD中所有的操作都是Lazy模式进行,运行在编译中不会立即计算最终结果,而是记住所有操作步骤和方法,只有显示的遇到启动命令才执行。
整体看:一个程序有多个job,一个job有多个stage,一个stage有多个task,每个task分配到executor内执行。
6. 分配task时,优先找已经在内存中的数据所在节点;如果没有,再找磁盘上的数据所在节点;都没有,就近节点分配。
7. executor
每个节点根据配置可以起一个或多个executor;每个executor由若干core组成,每个executor的每个core一次只能执行一个task。
task被执行的并行度 = max(executor数目*每个executor的核数,partition数目)。
8. 节点之间使用RPC完成通信(以前是akka,最新的使用netty)。
最后,目前看来,可能会对性能有影响的是有宽依赖的操作,像reduceByKey、sort、sum操作需要所有partition的数据,需要把数据都传输到一个节点上,比较耗时。
spark-on-yarn 学习的更多相关文章
- Spark on Yarn 学习(一)
最近看到明风的关于数据挖掘平台下实用Spark和Yarn来做推荐的PPT,感觉很赞,现在基于大数据和快速计算方面技术的发展很快,随着Apache基金会上发布的一个个项目,感觉真的新技术将会不断出现在大 ...
- 大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce, 4.Spark StandAlone的执行模式,5 spark on yarn
1 redis的事务(pipeline)测试 Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚.事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- YARN学习总结
YARN学习总结 前言 YARN(Yet Another Resource Manage,另一种资源协调者)是hadoop-0.23版本引入的的一个新的特性,可以说它是对原有Hadoop Mapred ...
- spark跑YARN模式或Client模式提交任务不成功(application state: ACCEPTED)
不多说,直接上干货! 问题详情 电脑8G,目前搭建3节点的spark集群,采用YARN模式. master分配2G,slave1分配1G,slave2分配1G.(在安装虚拟机时) export SPA ...
- Spark Standalone与Spark on YARN的几种提交方式
不多说,直接上干货! Spark Standalone的几种提交方式 别忘了先启动spark集群!!! spark-shell用于调试,spark-submit用于生产. 1.spark-shell ...
- Hadoop YARN学习之核心概念(2)
Hadoop YARN学习之核心概念(2) 1. Hadoop 2.X YARN引入的新服务 1.1 新的ResourceManager纯碎作为资源调度器,是集群资源的唯一仲裁者: 1.2 用户应用程 ...
- spark on yarn模式下内存资源管理(笔记1)
问题:1. spark中yarn集群资源管理器,container资源容器与集群各节点node,spark应用(application),spark作业(job),阶段(stage),任务(task) ...
- spark跑YARN模式或Client模式提交任务不成功(application state: ACCEPTED)(转)
不多说,直接上干货! 问题详情 电脑8G,目前搭建3节点的spark集群,采用YARN模式. master分配2G,slave1分配1G,slave2分配1G.(在安装虚拟机时) export SPA ...
- spark on yarn 安装笔记
yarn版本:hadoop2.7.0 spark版本:spark1.4.0 0.前期环境准备: jdk 1.8.0_45 hadoop2.7.0 Apache Maven 3.3.3 1.编译spar ...
随机推荐
- CSP2019 退役记
本来想写"退役在即"的,考完 Day2 后直接改成"退役记"了 Day 0 在 ssf 的机房里继续变弱,自己写了一遍 splay 板子,居然写对了,开心 非常 ...
- JavaScript教程——this 关键字
简单说,this就是属性或方法“当前”所在的对象. 原文地址:https://wangdoc.com/javascript/oop/this.html
- 开放式最短路径优先OSPF
1.OSPF基本知识 OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点: 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响 ospf直尺无类 ...
- WPF DevExpress ChartControl使用之PieChart
饼状图要比XYDiagram要简单一点,大体上也是那些东西,没有了X.Y坐标轴,也就没有了第二坐标,要简单一点.PieChartControl.xaml <UserControl x:Class ...
- prometheus部署
1.prometheus安装 软件下载: wget https://dl.grafana.com/oss/release/grafana-6.4.2-1.x86_64.rpm https://gith ...
- nginx 之 root和alias
转载: https://www.jianshu.com/p/4be0d5882ec5 https://blog.csdn.net/Erica_1230/article/details/7855311 ...
- P2303 [SDOI2012]Longge的问题 我傻QwQ
莫比乌斯反演学傻了$QwQ$ 思路:推式子? 提交:2次 错因:又双叒叕没开$long\space long$ 题解: $\sum_{i=1}^n gcd(i,n)$ $=\sum_{d|n}d\su ...
- 【转】mysql基础汇总
mysql基础知识语法汇总整理(二) 原文:https://www.cnblogs.com/cxx8181602/p/9525950.html 连接数据库操作 /*连接mysql*/ mysql - ...
- Nginx-HTTP之listen指令解析
1. ngx_http_core_listen static char * ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void ...
- ycache中redis主备功能设计及使用说明
方案概述: 对于ycache-client,如下图,在一致性hash环上的每个节点都有一个备用的节点.正常情况下slave节点不参与key的分配(冷备).只有当master挂了,ycache clie ...