0.spark

--------------------------------------------

  transformation

  map

  filter

  repartition

spark核心API

----------------------------------------------------

  [SparkContext]

    连接到spark集群上的入口点

 [HadoopRDD]

    读取hadoop上的数据

 [MapPartitionsRDD]

    针对父RDD的每个分区提供了函数,构成的新类型的RDD

 [PairRDDFunctions]

    对偶RDD函数类

    可用于KV类型RDD的附加函数。可以通过隐式转化

 [ShuffleRDD]

    从shuffle中计算结果的RDD

 [RDD]  

    弹性分布式数据集

    不可变的数据分区集合

    基本操作:map  filter

    分区列表         //数据

    应用给每个切片的计算函数  //行为

    到其他RDD的依赖列表    //依赖关系

    (可选)针对kv类型的RDD分区类

    (可选)首选位置列表

  [DAGScheduler]

      高级调度器层面,实现按照阶段(stage),shuffle按照。

    对每个JOB的各阶段计算有向无环图(DAG),并且跟踪RDD和每个阶段的输出

    找出最小的调度运行作业,将Stage对象以TaskSet的方式提交给底层的调度器

    底层调度器要实现TaskScheduler接口,进而在cluster上运行job  

    TaskSet已经包含了全部的单独的task,这些Task都能够基于cluster的数据进行相应的正确的运行  

  Stage通过在需要shuffle的边界处将RDD打碎,来创建stage对象。

  具有"窄依赖"的RDD操作(比如map/filter)被管道化至另一个taskset中。而具有shuffle依赖的操作则包含多个Stage(一个进行输入,另一个进行输出)

  最后,每个stage都有一个针对其他stage的shuffle依赖,可以计算多个操作。

  

  DAG调度器检测首选位置运行task,通过基于当前缓存状态,并穿肚给底层的task调度器来进行实现,根据shuffle的输出是否丢失处理故障问题

  不是由stage内因为丢失文件而引发的故障有task调度处理,在取消整个stage之前,task会进行少量次数的重试操作

  【术语介绍】

    [job]提交给调度器的顶层工作项目,由ActiveJob表示,是Stage集合。

    [Stage]是task的集合,计算job的中间结果,同一个RDD的每个分区都会应用相同的计算函数。

        在shuffle的边界进行隔离(因此才引入了隔断,需要上一个stage完成之后,才能得到输出结果)

        有两种类型的stage:ResultStage;ShuffleMapStage:对shuffle输出文件的写操作,stage通常可以在job之间进行共享,可以跨越多个job实现共享

        如果job重用了同一个rdd的话,stage通常可以跨越多个job实现共享。

        并行任务的集合,都会计算同一函数,所有task有着同样的shuffle依赖

    [Task]单独的工作单元,发送给每一台主机

    [Cache tracking]DAG调度器可以找出那些RDD被缓存,避免不必要的计算,同时也会记住哪些shufflemap已经输出了结果,可以避免map端shuffle结果重复处理

    [Preferred localtions]

      dag调度器根据rdd的首选位置属性计算task在哪里运行

    [cleanup]运行的作业如果完成就会清除数据结构避免内存泄漏,主要针对耗时应用

    为了容错,同一阶段可能会运行多次 ,称之为"attemp",如果task调度器报告了一个故障,该故障是由于上一个stage丢失输出文件而导致的,DAG调度就会重新提交丢失的stage;DAG调度器会等待一段时间,看其他节点的任务是否失败,然后对丢失的stage重新提交ticketStage

    [ActiveJob]:在Dag调度器中运行job,作业分为两种类型:(1)result job,计算ResultStage来执行action;(2)map-stage job,为shuffleMapStage计算输出结果共下游stage使用,主要使用finalStage字段进行类型的划分;job只跟踪客户端提交的leaf stage,通过调用DAG调度器的submit job或者submitMapStage()方法来实现

Action发生之后,spark流程

------------------------------------

  

  

spark(3)的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  3. spark处理大规模语料库统计词汇

    最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...

  4. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  5. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  6. Spark踩坑记——初试

    [TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...

  7. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  8. (资源整理)带你入门Spark

    一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...

  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解

    Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...

  10. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

随机推荐

  1. floor函数用法

    floor(x),也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个 ...

  2. sh_05_函数的参数

    sh_05_函数的参数 def sum_2_num(num1, num2): """对两个数字的求和""" # num1 = 10 # nu ...

  3. Mybatis学习笔记之---编写dao实现类的CRUD

    Mybatis编写dao实现类的CRUD 1.pom.xml <dependencies> <dependency> <groupId>junit</grou ...

  4. 3D Computer Grapihcs Using OpenGL - 15 Draw Element Instanced

    友情提示:继续本节之前,需要保存此前的代码,本节为了试验,会对代码做一些修改,但后续的修改需要我们把代码返回之前的进度. OpenGL内置支持Instancing,有专门的函数来处理这件事情. 为了方 ...

  5. HDU3398—String-(组合数)

    Problem Description Recently, lxhgww received a task : to generate strings contain '0's and '1's onl ...

  6. struts2.3.20+spring4.0.2+hibernate4.3.4框架整合

    一.创建web工程,搭建Struts框架开发环境: 这里只导入了项目中所需要的重要的jar包,以后根据业务要求继续导入相关的包. 步骤1::导入struts框架所需的jar包 步骤2:在web.xml ...

  7. sqli-labs(33)

    0X01构造闭合 发现‘ 被过滤了 那么 宽字节绕过 ?id=-%df%%20union%20,database(),%

  8. Http协议:客户端提交数据给服务端和从服务端获得数据,像WebView也是向百度的服务端发出一条Http请求,服务端返回HTML页面,客户端(浏览器)解析后展示出页面

    提交数据和获得数据的方式有很多,这里介绍一种,使用HttpURLConnection来向服务器提交数据或者获得数据. 获得数据: //传入网址,获得请求网页数据(XML文件数据或JSON文件数据) p ...

  9. IView入门练习~CDN模式全局加载JS

    关于 iView iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. 特性 高质量.功能丰富 友好的 API ,自由灵活地使用空间 细致.漂亮的 UI 事 ...

  10. Python基础面试题库

    Python基础面试题库   Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮.目前,国内知乎.网易(游戏).腾讯(某些网站).搜狐(邮箱).金山. ...