stage

jenkins pipeline持续集成

时光怂恿深爱的人放手 提交于 2020-03-06 20:49:14
一、概述 简介 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程,形成流水式发布,构建步骤视图化。简单来说,Pipeline适用的场景更广泛,能胜任更复杂的发布流程。举个例子,job构建工作在master节点,自动化测试脚本在slave节点,这时候jenkins1.0就无法同时运行两个节点,而Pipeline可以。 基本概念 Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。 Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是slave,是执行Step的具体运行期环境。 Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。 语法 Pipeline支持两种语法: Declarative Pipeline (在Pipeline 2.5中引入,结构化方式)和 Scripted Pipeline

总结自己的Git常用命令

走远了吗. 提交于 2020-03-06 02:25:46
总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考。 目录: 最基本的命令 : git clone 拷贝并跟踪远程的master分支。跟踪的好处是以后可以直接通过pull和push命令来提交或者获取远程最新的代码,而不需要指定远程分支名字。 git submodule init git submodule update 参考示意图 HEAD 指向当前的commit 对象(可以想象为当前分支的别名),同时也用来表明我们在哪个branch上工作。所以当我们使用HEAD来操作指针的时候,其实就是不改变当前的commit的指向。 对照这张图来理解两段提交,工作区(working tree),暂存区(index)和 branch之间的关系 显示信息类命令 git ls-files -u 显示冲突的文件,-s是显示标记为冲突已解决的文件 git diff 对比工作区和stage文件的差异 git diff --cached 对比stage和branch之间的差异 git branch 列出当前repository下的所有branch git branch --a 列出local 和remote下的所有branch git ls-files --stage 检查保存在stage的文件 git log

Gitlab持续集成-(.gitlab-ci.yml)

心已入冬 提交于 2020-03-05 23:37:19
从7.12版本开始,GitLab CI使用YAML文件(.gitlab-ci.yml)来管理项目配置。该文件存放于项目仓库的根目录,它定义该项目如何构建。 stages stages 用来定义可以被job调用的stages。stages的规范允许有灵活的多级pipelines。stages中元素的顺序决定了对应job的执行顺序: 相同stage的job是并行执行的; 下一个stage的job在前一个stage的job成功完成后才开始执行; 如果.gitlab-ci.yml中没有定义stages,那么stages默认定义为build、test和deploy; 如果一个job没有指定stage,那么这个任务会分配到test stage。 variables variables 用来定义变量,全局变量作用于所有job,也可以在指定的job中定义变量(优先级高于全局变量) 如果在job中想禁用全局定义的变量,可通过 variables: {} 定义一个空的哈希值。 GitLab CI/CD内置变量 variables 变量值 CI_JOB_NAME 对应的job_name GIT_STRATEGY 指定git获取代码的方式(clone,fetch,none) jobs jobs 用来定义了一组作业,其中必须包含 script 语句。 job.stage(默认: test )

Spark之RDD

允我心安 提交于 2020-03-02 22:58:43
一、什么是RDD RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 , 是Spark中最基本的数据抽象 ,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 1.1 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调度模型

*爱你&永不变心* 提交于 2020-03-02 18:19:25
调度模型的好坏,是由底层的抽象模型所决定的,spark的底层抽象是RDD spark调度模型系统,分为 底层调度模型(TASKscheduler)和高层调度模型(DAGscheduler) 调度过程 1. application driver 发出请求,这个application首先创建sparkconf和 sparkcontext对象, 在sc对象中 TASKscheduler,DAGscheduler以及schedulerbackend对象, 并 向master注册 当前程序并 申请计算资源 (注意,如果底层是用yarn来进行资源管理和调度,那么会向yarn resource manager去申请计算资源,standalone模式下,具体的实现是taskschedulerimpl来完成的) 2. 这时候master会根据当前它掌握的worker的资源并通过心跳看worker是不是存活的),为application 分配appid和计算资源,并通知对应的worker按需求启动executor 分配计算资源的依据,来自spark-env.sh,default.sh,spark-submit的参数,和程序中sparkConf配置的参数 worker机器上会生成一个worker进程,通过一个proxy启动executorbackend进程,这个进程会启动executor

为什么要先 git add 才能 git commit

笑着哭i 提交于 2020-03-02 06:52:16
1. git 的 add ,是一个容易引起疑问的命令。在 subversion 中的 svn add 动作是将某个文件加入版本控制,而 git add的意义完全不同。 同时, git diff --cached 是比较 stage 的文件的差异的,也是一个不直观的命令。 github 2008年的blog中,也提到,容易引起混淆: https:// github.com/blog/196-git together-2008 http:// learn.github.com/p/norm al.html things like making use of the term ‘stage’ for things that happen in the index (such as using ‘git diff —staged’ instead of ‘git diff —cached’) is being worked on. I’m excited that staging files may soon be done via ‘git stage’ rather-than/in-addition-to ‘git add’. This is nice for new users who often have a hard time seeing why you have to

【ThunderNet】《ThunderNet: Towards Real-time Generic Object Detection on Mobile Devices》

狂风中的少年 提交于 2020-03-01 08:28:35
ICCV-2019 文章目录 1 Background and Motivation 2 Advantages / Contributions 3 Method 3.1 Backbone part 3.2. Detection Part 4 Experiments 4.1 Datasets 4.2. Results on PASCAL VOC 4.3 Results on MS COCO 4.4. Ablation Experiments 4.5 Inference Speed 5 Conclusion(own) 1 Background and Motivation CNN-based detectors 一般构成如下, backbone part detection part one stage (directly predict bounding boxes and class probabilities.) or two stage (RPN+head) 现在的 CNN-based detectors 都是 resource-hungry 的,需要大量的 computation 才能达到 ideal detection accuracy,显然难以落地到 移动端上 。 更细致的分析: 1)backbone part backbone part 主要是根据

MongoDB:16-MongoDB-索引数组字段和索引子文档字段

﹥>﹥吖頭↗ 提交于 2020-02-29 22:01:50
MongoDB 允许深入文档内部,对嵌套字段和数组建立索引; 嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与“正常”索引字段的行为也是一致的。 考虑以下文档集合(user ): db . user . insertMany ( [ { "address" : { "province" : "HeNan" , "city" : "ZhengZhou" , "pincode" : "123" }, "tags" : [ "music" , "cricket" , "blogs" ], "name" : "fly" }, { "address" : { "province" : "HeBei" , "city" : "HanDan" , "pincode" : "234" }, "tags" : [ "music" , "basket" , "blogs" ], "name" : "chen" }, { "address" : { "province" : "ChongQing" , "city" : "ChongQing" , "pincode" : "456" }, "tags" : [ "music" , "writing" , "running" ], "name" : "wang" } ] ) 以上文档包含了 address 子文档和 tags 数组。

IDEA开发spark本地运行

隐身守侯 提交于 2020-02-28 10:48:08
1.建立spakTesk项目,建立scala对象Test 2.Tesk对象的代码如下 package sparkTest /** * Created by jiahong on 15-8-2. */ import org.apache.spark.{SparkConf,SparkContext} object Test { def main(args: Array[String]) { if (args.length < 1) { System.err.println("Usage: <file>") System.exit(1) } val conf=new SparkConf().setAppName("Test").setMaster("local") val sc=new SparkContext(conf) val rdd=sc.textFile("/home/jiahong/sparkWorkSpace/input") //统计单词个数,然后按个数从高到低排序 val result=rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)) result.saveAsTextFile("/home

Spark 源码解析 : DAGScheduler中的DAG划分与提交

痞子三分冷 提交于 2020-02-26 02:24:54
一、Spark 运行架构 Spark 运行架构如下图: 各个RDD之间存在着依赖关系,这些依赖关系形成有向无环图DAG,DAGScheduler对这些依赖关系形成的DAG,进行Stage划分,划分的规则很简单,从后往前回溯,遇到窄依赖加入本stage,遇见宽依赖进行Stage切分。完成了Stage的划分,DAGScheduler基于每个Stage生成TaskSet,并将TaskSet提交给TaskScheduler。TaskScheduler 负责具体的task调度,在Worker节点上启动task。 二、源码解析:DAGScheduler中的DAG划分 当RDD触发一个Action操作(如:colllect)后,导致SparkContext.runJob的执行。而在SparkContext的run方法中会调用DAGScheduler的run方法最终调用了DAGScheduler的submit方法: def submitJob[T, U]( rdd: RDD[T], func: (TaskContext, Iterator[T]) => U, partitions: Seq[Int], callSite: CallSite, resultHandler: (Int, U) => Unit, properties: Properties): JobWaiter[U] = { //