stage

SparkShuffle 及性能调优

霸气de小男生 提交于 2020-02-05 02:15:16
shuffle调优 调优概述   大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各个参数的调优建议。 ShuffleManager发展概述   在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。 在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。 因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager

XSS Challenges学习笔记 Stage#1~ Stage#19

一世执手 提交于 2020-02-03 15:53:16
开门见山 Stage #1 http://xss-quiz.int21h.jp/?sid=2a75ff06e0147586b7ceb0fe68ee443b86a6e7b9 这一道题发现我们写入的内容直接没有任何过滤,嵌套在一个 <b> 标签里面,我们常规闭合标签新建标签即可。 <b><script>alert(document.domain)</script></b> Stage #2 http://xss-quiz.int21h.jp/stage2.php?sid=f2d7d60125bdddb208fa757ee5cdae22f6818cd1 这一题的注入点是在一个 input 标签的 value 属性那里,我们前后闭合 input 标签然后在中间加上 script 就好了。 "><script>alert(document.domain)</script><" Stage #3 http://xss-quiz.int21h.jp/stage-3.php?sid=9b217ccdc6e28f1a018d6df366553a6152bc65f5 尝试输入查看源码发现 <>和” 被转义了,于是抓包在 country 的位置插入 xss p1=%22%3E%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E%3C%22&p2=

【大数据面试题】(五)Spark 相关面试题总结

痴心易碎 提交于 2020-02-01 23:28:33
文章目录 一、spark中的RDD是什么,有哪些特性? 二、概述一下spark中的常用算子区别(map,mapPartitions,foreach,foreachPatition)? 三、谈谈spark中的宽窄依赖? 四、spark中如何划分stage? 五、RDD缓存? 六、driver 的功能是什么? 七、Spark master 使用zookeeper 进行HA 的,有哪些元数据保存在Zookeeper? 一、spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计算的集合 Dataset:就是一个集合,用于存放数据的 Destributed:分布式,可以并行在集群计算 Resilient:表示弹性的,弹性表示 RDD中的数据可以存储在内存或者磁盘中; RDD中的分区是可以改变的; 五大特性: A list of partitions:一个分区列表,RDD中的数据都存储在一个分区列表中 A function for computing each split:作用在每一个分区中的函数 A list of dependencies on other RDDs:一个RDD依赖于其他多个RDD,这个点很重要

Jenkins 流水线(Pipeline)

孤街浪徒 提交于 2020-01-31 15:26:03
Jenkins 流水线(Pipeline) 说明:在任务项目构建的过程中通过Pipeline来呈现每个构建阶段的细节信息。 配置 Pipeline 1、创建流水线任务 2、根据场景添加需要等项目、注:我这里根据上一节的内容一次添加,以测试为主。 ....略(自定义) 3、使用Pipeline流水线Shell、保存。 使用Hello World模板 4、Pipeline-test 任务 --> Build with Parameters --> Build 构建 Pipeline-test 任务 --> Console Output 查看日志 Pipeline-test 任务 --> Full Stage View 点击查看视图 通过git来存放jenkins Pipeline文件 1、git服务器操作:通过git创建jenkinsfile仓库 # 切换git用户 su - git # 创建jenkinsfile仓库 mkdir jenkinsfile cd jenkinsfile # 初始话git仓库 git --bare init 2、客户端操作:下载git仓库提交pipeline脚本 # 1、下载仓库 git clone git@118.31.225.36:/home/git/jenkinsfile cd jenkinsfile/ # 2、创建文件、脚本主要测试4个动作 #

Spark性能调优-集群资源分配策略

懵懂的女人 提交于 2020-01-30 06:28:51
展开 开发完成Spark作业之后,我们在运行Spark作业的时候需要为其配置一些资源参数,比如num-executors,executor-memory等,这些参数基本上都是可以在spark-submit命令中作为参数设置,但是如何设置合适的参数值是需要我们权衡考虑的(集群资源,调优经验,任务大小等)。参数设置的不合适往往会导致集群资源得不到有效的利用,设置的太大可能会导致资源不够而引发异常,太小的话会使得闲置的资源得不到有效利用,作业运行的极为缓慢。所以,如何合理有效的分配Spark作业资源是需要Spark学习者重点考虑的。下面将一些理论知识结合自己的实践进行讲解。 集群资源情况 我们在为自己的Spark作业设置资源参数的时候,需要对公司的集群资源使用情况有一个较为清晰的了解,主要了解以下几个方面: (1)集群总体情况 公司集群的整体配置信息,比如总内存,内存使用情况,节点数等,对集群的资源有一个整体的认识。 可以从Yarn页面来了解集群整体情况,如红线圈出的一些重要信息: (2)资源队列配置 一般使用资源管理器,比如Yarn,都会设置一些资源队列,比如Hadoop,Spark,default队列等。这里以讯飞公司情况为例讲解,讯飞使用Yarn资源管理器,这里采用Capacity Scheduler任务调度模式,设置了两个资源队列:default和Spark

Spark之 RDD

雨燕双飞 提交于 2020-01-29 11:26:05
简介 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。   Resilient:弹性,它表示的含义rdd的数据是可以保存在内存中或者是磁盘中。   Distributed:它的数据是分布式存储的,后期方便于进行分布式计算。   Dataset:它就是一个集合,集合里面可以存放了很多个元素。 RDD的属性 1 A list of partitions 一个分区列表,在这里表示一个rdd中有很多个分区(partitions),Spark任务的计算以分区为单位,每一个分区就是一个task。读取hdfs上文件产生的RDD分区数跟文件的block个数相等 rdd1=sc.textFile("/words.txt") 2 A function for computing each split Spark中RDD的计算是以分区为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 3 A list of dependencies on other RDDs 一个RDD会依赖于其他多个RDD,这里就涉RDD之间的依赖关系,RDD的每次转换都会生成新的RDD,Spark任务的容错机制就是根据这个特性而来

Jenkins pipeline 并行执行任务流

社会主义新天地 提交于 2020-01-29 02:17:57
Jenkins pipeline 并行执行任务流 笔者在《 Jenkins 在声明式 pipeline 中并行执行任务 》一文中介绍了如何在声明式 pipeline 中执行并行的任务。前一段时间,Jenkins 发布了 1.3 版的声明式 pipeline(declarative pipeline),这个版本继续增强了并行执行任务的能力:并行执行的任务可以是个任务流。官方称这一功能为 "sequential stages",本文将解释 "sequential stages",并通过 demo 演示其用法。 之前的任务并行方式 就是笔者在《 Jenkins 在声明式 pipeline 中并行执行任务 》一文中介绍的方式,我们在一个 stage 中设置多个子 stage 并行执行: stages { stage('Stage1') { ... } stage('并行执行的 Stage') { parallel { stage('Stage2.1') { agent { label "test1" } steps { echo "在 agent test1 上执行的并行任务 1." } } stage('Stage2.2') { agent { label "test2" } steps { echo "在 agent test2 上执行的并行任务 2." } } } } stage(

Spark基础 DAG

淺唱寂寞╮ 提交于 2020-01-28 07:04:10
为什么使用spark的原因是早期的编程模式MapReduce缺乏对数据共享的高效元语,会造成磁盘I/O 以及序列号等开销,spark提出了统一的编程抽象---弹性分布式数据集(RDD),该模型可以令并行计算阶段间高效地进行数据共享。spark处理数据时,会将计算转化为一个有向无环图(DAG)的任务集,RDD能够有效的恢复DAG中故障和慢节点执行的任务,并且RDD提供一种基于粗粒度变换的接口,记录创建数据集的“血统”,能够实现高效的容错性。 spark的作业和任务调度系统是其核心,它能够有效的进行调度的根本原因是因为对任务划分DAG和容错。 DAG,有向无环图,Directed Acyclic Graph的缩写,常用于建模。Spark中使用DAG对RDD的关系进行建模,描述了RDD的依赖关系,这种关系也被称之为lineage,RDD的依赖关系使用Dependency维护,参考Spark RDD之Dependency,DAG在Spark中的对应的实现为DAGScheduler。 基础概念 介绍DAGScheduler中的一些概念,有助于理解后续流程。 作业(Job) 调用RDD的一个action,如count,即触发一个Job,spark中对应实现为ActiveJob,DAGScheduler中使用集合activeJobs和jobIdToActiveJob维护Job 调度阶段

手撸网络结构—UNet

荒凉一梦 提交于 2020-01-28 04:36:47
用于分类任务的卷积神经网络输出一般都是一个单一的类标签,但是在很多图像视觉任务中往往要求输出信息包含位置信息,比如给图像的每个像素点赋予类别信息。 这样就需要使用到fully convolutional network 相较于FCN,UNet不只是简单的将卷积网络的结果直接进行转置卷积,而是结合了前面卷积层的中间计算结果,这样既利用了卷积部分的位置信息又利用了最后的分类信息。 UNet网络结构 UNet分为两个阶段:downsample stage 和 upsample stage。 图中的每个蓝色框对应了每层的feature map,上面数字表示当前的通道数。左下角的数字表示feature map的尺寸,这里输入为572x572通道数为1。白色的框表示将对应的卷积层结果进行crop后的结果,白色框与蓝色框进行组合,作为后续网络的输入。 因为在前面卷积的过程中没有添加padding,因此会存在feature map的尺寸变化,所以在上采样过程中,需要对每个阶段的卷积计算结果进行crop操作然后再与转置卷积的结果进行concat(通道维度的相加)。 def concat ( tensor1 , tensor2 ) : # concat 2 tensor by the channel axes tensor1 , tensor2 = ( tensor1 , tensor2 ) if

Hive优化

安稳与你 提交于 2020-01-28 01:15:38
一、什么时候可以避免执行MapReduce?select *where语句中只有分区字段 二、Jion优化驱动表最右边查询表表的大小从左边到右边依次增大标志机制显示的告知查询优化器哪张表示大表/*+streamtable(table_name)*/ 三、Map-side聚合sethive.map.aggr=true;这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗 阶段数据传输和Reduce阶段的执行时间,提升总体性能。缺点:该设置会消耗更多的内存。执行select count(1) from wlan; 四、Localhadoop本地模式SETmapred.job.tracker=local; 测试 select 1 from wlan limit 5; 下面两个参数是local mr中常用的控制参数: 1,hive.exec.mode.local.auto.inputbytes.max设置local mr的最大输入数据量,当输入数据量小于这个值的时候会 采用local mr的方式 2,hive.exec.mode.local.auto.tasks.max设置local mr的最大输入文件个数,当输入文件个数小于这个值的时 候会采用local mr的方式默认执行模式: hive (default)> select count(1) t1; Query ID =