zoukankan      html  css  js  c++  java
  • spark提交任务的流程

      1.spark提交流程

      sparkContext其实是与一个集群建立一个链接,当你停掉它之后
      就会和集群断开链接,则属于这个资源的Excutor就会释放掉了,Driver
      向Master申请资源,Master会向work分配资源,则会在wordCount里面会
      构建Rdd,则它会会构建DAG,DAG又叫有向无环图,则有向无环图一旦触发Action
      的时候,这个时候就会提交任务,此时,这些任务就不会经过Master,如果经过Master
      则Master的压力会很大,其实Excutor一旦启动了,它就会向Driver建立连接,Excutor
      它可能存在多个机器上面,则Driver不知道Excutor在哪里,但是Excutor知道Driver
      在哪里(通过Mastre来知道的),则此时Excutor会和Driver进行rpc通信,则此时Driver则会
      提交计算任务(以stage进行分开处理,其中stage里面是一个个并行的task),则
      提交的任务在Excutor里面执行,则在Excutor里面有这些任务的执行进度,则
      Excutor会向这个Master里面汇报进度,Driver就会知道它执行到了哪里,如果
      执行失败,则Driver可能会执行重试,可能会例如,如果有10个项目,其中9个项目  
      都执行完了,但是有一个项目会很慢很慢,则此时Driver会在启动一个项目,
      看这两个项目,谁快就用谁,对于catch,则Excutor只会catch属于它的的分区

      2.rdd缓存

        spark计算特别快的原因,就是在不同的操作中可以在内存中持久化或缓存
        多个数据集

      3.容量的大小

        关于容量大小,一般来说我们可以这样的假设,2个字段,100万条数据,50M,如果要说
        可以往后面一次计算

      4.关于内存分配

        在spark的计算过程中,如果我们的一台worker的内存是2g,但是我们可以给这个work

        启动spark,我可以只给他分1个g的内存,就是说这个worker里面,不管在执行任何操作,

        都只用这1个g的内存

      5.checkpoint(检查点)

        假如在进行rdd的计算的过程中,如果前面计算的结果之后,把这个结果保存在磁盘当中,

        但是磁盘烧了,则此时这个里面的数据就会消失,则此时我们就会从头开始记性计算,

        但是这样又有一些浪费,我们可以设置一个检查点(checkpoint),把某些计算出来的结果

        存在一个地方,当磁盘损坏,我们就可以回退到这些检查点当中,很想快照的意味

        (这个就一般作用于比较复杂的运用,当我们保存这个checkpoint的时候,他会主动的去寻找

        这个checkpoint里面保存的值)我们可以防止检查点的公共存放目录

        sc.setCheckpointDir("hdfs://192.168.109.136:9000/ck2016mypoint"),设置检查点存放的地方
        则我们此时hdfs dfs -ls /,我们就可以发现这个检查点存放的目录

        

        val rdd = sc.textFile("hdfs://192.168.109.136:9000/wj/input19")
        rdd.checkpoint
        rdd.count(运行action)

        则此时回启动两个方法,第一个方法进行计算,另一个方法则把结果写到checkpoint

        写到指定的目录(这个存放checkpoint的地方药可用性高,所以我们采用hdfs),

        则此时把rdd的内容写到checkpoint里面

      6.关于collect,cache,checkpoint的区别

        collect是一个Action类型的RDD,而cache则是,当我们xxx.cache,则这个xxx的rdd在进行

        Action的方法(collect),则会把这个RDD里面的内容缓存进内存,则当我们再一次进行计算的

        时候,则会从内存中进行读取,而checkpoint这个值,这个是把这个rdd的值缓存进入一个公共

        的目录(这个目录要有高的可用性,即使内存中丢失,这个也不会丢失)

  • 相关阅读:
    caffe绘制训练过程的loss和accuracy曲线
    ROC曲线和PR曲线
    Lintcode--009(单词切分)
    已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”
    web前端性能优化汇总
    Restful风格的前后端分离
    渐进式 JPEG (Progressive JPEG)来提升用户体验
    ESLint检测JavaScript代码
    JavaScript对象浅复制
    JavaScript对象深复制
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6266659.html
Copyright © 2011-2022 走看看