stage

Spark学习之路 (七)Spark 运行流程[转]

点点圈 提交于 2020-01-26 18:07:06
Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext。由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等。程序执行完毕后关闭SparkContext (3)Executor:某个Application运行在Worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 CoarseGrainedExecutor Backend,一个CoarseGrainedExecutor Backend进程有且仅有一个executor对象,它负责将Task包装成taskRunner,并从线程池中抽取出一个空闲线程运行Task,这样,每个CoarseGrainedExecutorBackend能并行运行Task的数据就取决于分配给它的CPU的个数。 (4)Worker:集群中可以运行Application代码的节点。在Standalone模式中指的是通过slave文件配置的worker节点,在Spark on Yarn模式中指的就是NodeManager节点。 (5)Task:在Executor进程中执行任务的工作单元,多个Task组成一个Stage (6)Job

Spark学习之路 (十)SparkCore的调优之Shuffle调优[转]

吃可爱长大的小学妹 提交于 2020-01-26 18:04:18
概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各个参数的调优建议。 shuffle的定义 Spark的运行主要分为2部分:   一部分是驱动程序,其核心是SparkContext;   另一部分是Worker节点上Task,它是运行实际任务的。程序运行的时候,Driver和Executor进程相互交互:运行什么任务,即Driver会分配Task到Executor,Driver 跟 Executor 进行网络传输; 任务数据从哪儿获取,即Task要从 Driver 抓取其他上游的 Task 的数据结果,所以有这个过程中就不断的产生网络结果。其中,下一个 Stage 向上一个 Stage 要数据这个过程,我们就称之为 Shuffle。 HashShuffleManager的运行原理 在Spark的源码中,负责shuffle过程的执行

Spark学习之路 (三)Spark之RDD[转]

前提是你 提交于 2020-01-26 17:59:47
RDD的概述 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner,即RDD的分片函数。当前Spark中实现了两种类型的分片函数

Spark学习之路 (十二)SparkCore的调优之资源调优[转]

本小妞迷上赌 提交于 2020-01-26 17:48:23
概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群,也可以是其他的资源管理集群,美团•大众点评使用的是YARN作为资源管理集群)申请运行Spark作业需要使用的资源

Spark中的Spark Shuffle详解

主宰稳场 提交于 2020-01-26 17:20:59
Shuffle简介 Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,reduce task需要跨节点去拉取其它节点上的map task结果。这一过程将会产生网络资源消耗和内存,磁盘IO的消耗。通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝处理。一般将在map端的Shuffle称之为Shuffle Write,在Reduce端的Shuffle称之为Shuffle Read. Hadoop MapReduce Shuffle Apache Spark 的 Shuffle 过程与 Apache Hadoop 的 Shuffle 过程有着诸多类似,一些概念可直接套用,例如,Shuffle 过程中,提供数据的一端,被称作 Map 端,Map 端每个生成数据的任务称为 Mapper,对应的,接收数据的一端,被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer,Shuffle 过程本质上都是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程。 map端的Shuffle简述

Hive 面试题收集(未完)

给你一囗甜甜゛ 提交于 2020-01-25 21:56:52
目录 排序 分组类 JOIN类 窗口函数类 参考文章 排序类 1、有1亿个用户,存储在表users中,包含用户uid、用户年纪age、用户消费总金额total,其中以uid唯一标识1个用户,按照用户年龄从大到小排序,如果年龄相同则以消费总金额从小到大排序。 这是1个全排序问题,首先预估总内存消耗大小,1亿[用户数]*(8B[uid]+4B[age]+8B[total])约等于2G,在现有计算条件可以满足全部放入内存的需求,因此可以不必过多考虑优化问题。 -- 全局排序 SELECT * FROM Users ORDER BY age DESC,total ASC; -- 局部(分桶)排序 SELECT * FROM Users DISTRIBUTE BY age SORT BY age DESC,total ASC 分组类 1、有10万个店铺,每个顾客访问任意一个店铺时都会生成1条访问日志,表名未Visist,其中用户id字段未uid,访问的店铺字段未store,试统计每个店铺的uv。 SELECT store,COUNT(DISTINCT uid) uv FROM Visit GROUP BY store; 2、有1张表示人生阶段的表Lifestage,包含2个字段:用户唯一标识uid、人生阶段组合字段stage,其中stage由","分隔的字符串组成,如“计划买车,已经买房”

Spark submit提交求PI

一个人想着一个人 提交于 2020-01-25 21:50:40
一. spark提交任务方式: 1.第一种方法:spark-submit:提交任务的,使用spark Demo 求PI,蒙特卡洛求PI(圆周率) [root@bigdata111 spark-2.1.0-bin-hadoop2.7]# ./bin/spark-submit --master spark://bigdata111:7077 --class org.apache.spark.examples.SparkPi /opt/module/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar 1000 结果: 20/01/21 11:16:26 INFO TaskSetManager: Starting task 997.0 in stage 0.0 (TID 997, 192.168.1.122, executor 1, partition 997, PROCESS_LOCAL, 6029 bytes) 20/01/21 11:16:26 INFO TaskSetManager: Finished task 995.0 in stage 0.0 (TID 995) in 11 ms on 192.168.1.122 (executor 1) (996/1000) 20/01/21 11:16

【Spark】(六)Spark 运行流程

≡放荡痞女 提交于 2020-01-25 15:11:32
文章目录 一、Spark中的基本概念 二、Spark的运行流程 2.1 Spark的基本运行流程 1、说明 2、图解 3、Spark运行架构特点 4、DAGScheduler 5、TaskScheduler 6、SchedulerBackend 7、Executor 三、Spark在不同集群中的运行架构 3.1 Spark on Standalone运行过程 3.2 Spark on YARN运行过程 3.2.1 YARN框架流程 3.2.2 YARN-Client 3.2.3 YARN-Cluster 3.2.4 YARN-Client 与 YARN-Cluster 区别 一、Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext。由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等。程序执行完毕后关闭SparkContext (3)Executor:某个Application运行在Worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 CoarseGrainedExecutor Backend,一个CoarseGrainedExecutor

关于SQL的LAG()和LEAD()函数

我与影子孤独终老i 提交于 2020-01-25 08:38:41
对这个函数使用比较少,今天具体来看下。 定义:Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。 嗯,反正每次看这些定义啥的都有点拗口,通俗点来说, 就相当于表的自关联。 假设你要看你自己每个月的账单情况,顺便和历史账单做个对比。 取某一个月,Lag()呢就是跟这个月之前的月份去对比,Lead()就是跟这个月之后的月份去对比。 还可以结合sum()或者max()聚合函数一起看数据。 (一)lag(a,1,0) over(partition by b order by c) 不多说,来看看例子就懂了: 这是我随便造的一份数据,假设某人向银行借了一笔钱,分24期还钱。 其中: lag(repay_amount,1,0) over(order by cur_stage) 是根据字段cur_stage排序 当cur_stage = 16的时候,它的 上一期是15 ,取到值为第15期的repay_amount = 1341.34 当cur_stage = 17的时候,它的 上一期是16 ,取到值为第16期的repay_amount = 858.35 当cur_stage = 18的时候,它的 上一期是17 ,取到值为第17期的repay_amount = 858.35 当cur_stage = 19的时候,它的 上一期是18

目标检测论文核心思想,18-19-20年论文梗概

余生颓废 提交于 2020-01-24 23:17:22
论文太多来不及看,有些论文用了很大篇幅印证了某种模块有用或者没用,对于不研究这部分的人来说了解一下结论,这个模块有什么优缺点就够了。因而记录一下2018-2019-2020这几年泛读的论文梗概: 文章目录 DetNet: A Backbone network for Object Detection SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks DetNet: A Backbone network for Object Detection 论文: DetNet: A Backbone network for Object Detection ,2018年清华,Face++旷世合作论文,孙剑大神参与 某人的实现代码 点这 目标分类训练的网络作为目标检测backbone是否合适?任务不同肯定有不同,本文就是研究任务切换时backbone直接用的优劣分析。 ImageNet分类模型直接做backbone不够好, 检测分类两个任务有差异。 (i)诸如FPN和RetinaNet之类的最新物体检测器通常涉及额外的stage,以完成图像分类任务