自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 spark之(executor执行task原理分析)

1>taskscheduler将taskset分发到对应的executor上2>executor调用executor.launchtask方法3>在launchtask方法中会创建taskrunner来封装这些任务,将这些taskruanner放入到threadpool中,4>最终调用taskruanner方法中的task.runtask方法执行任务...

2019-03-14 14:01:37 1203

原创 spark默认的调度(fifo vs fair)

1>fifo(队列调度):fifo scheduler主要是将提交的作业放入到任务队列中,是一个先进先出的队列,在进行分配资源的时候,先给第一个任务分配足够的资源,才会给下一个任务分配资源,缺点是;当前面的任务需要大量的资源,后续的任务将没有资源可分配,处于一种阻塞状态,直到前面的任务资源释放,后续任务才有运行机会.2>fair(公平调度) fair scheduler是一种公平动...

2019-03-14 11:24:46 1166

原创 spark执行流程中(taskscheduler源码解释)

Dagscheduler将taskset提交给Taskscheduler,Taskscheduler主要做了哪些工作呢? 1>Taskscheduler会将这些taskset放到taskset的缓冲池中,并创建tasksetmanager对taskset进行生命周期的管理2>实现类taskschedulerimpl会调用resourceoffer方法。对tasksetm...

2019-03-14 11:04:09 250

原创 spark的执行流程(源码解说)

1>spark的作业主要是由rdd的action所触发作业的提交,根据提交作业构建DAG图。将作业提交给sparkcontxt,在sparkcontext会创建2个重要组件,一个是dagscheduler和taskscheduler组件。最终运行sc.runjob将作业提交给Dagscheduler2>Dagscheduler会根据DAG图进行stage的划分 ...

2019-03-14 10:39:04 244

原创 shuffle的读操作(shufflereducetask端与blockmanagerendpoint端点进行通信获取mapstats元数据信息)

shuffle的读操作: 1》主要是由shufflerdd的compute方法所触发 2》在compute方法中,调用shufflemanager,getread方法, 3》在该getread方法中会与blockmanagerendpoint中端点进行通信,获取到shufflemaptask端的mapstatus元数据信息(主要调用shuffmaptask的ge...

2019-03-14 10:03:21 204

原创 spark中stage的划分依据(hashshuffle和sortshuffle)

前面我们提到spark中夸依赖存在2种shuffle,一种是hashshuffle,另一种是sortshuffle1>hashshuffle的核心思想 a:hashshuffle的maptask端会根据shufflereduceTask的数量在maptask端创建对应数量的bucket文件,bucket文件数量:n = n(map数量) * n(reduce 数量) b:...

2019-03-13 22:43:02 1095

原创 Spark基础(a:谈谈你对rdd的理解,b:stage的划分过程)

a:1>弹性分布式数据集,不可变的数据集,所谓分布式:数据分布在不同的节点,并行计算,弹性:可以指定分区,可以进行数据缓存,并对数据指定不同级别的缓存,2>数据是可以分区的,每一个分区都被映射成bolck,都有自己的block_id,被blockmanager所管理,默认的分区数是由系统的cpu core所决定的.3>每一个分区都会被我们定义的函数所执行,底层主要调用...

2019-03-13 21:15:28 593

原创 java运行时区域划分(方法区,运行时常量)

1>方法区:与堆内存一样,是各个线程共享的内存区域,它用于存储已经虚拟机加载的类信息,静态变量,即是编译器编译后的代码等数据,虽然java虚拟机规范把方法区域描述为堆的一个逻辑部分,但是它却有意个别名,叫做Non-Heap(非堆),目的是为了将java堆和方法区区分开来. java中对java的方法区的限制非常宽松,除了和java堆一样不需要连续的内存空间和可以选择固定大小或者扩...

2019-03-06 16:25:06 611

原创 java运行时内存区域(java堆)

对于大多数程序来说,java中所分配的最大内存区域是java中的堆,堆内存是被所有的线程所共享的,在虚拟机启动时候所创建 ,此区域的唯一目的就是为了存放java中的绝大部分的对象实列以及数组,java堆是垃圾收集器管理的主要区域,因此堆内存在这一层面上也可以叫为GC堆,现在的收集器都采用的是分代收集算法,所以java堆又可分为新生代,老年代,继续细分又可分为Eden空间,From Surviv...

2019-03-06 15:22:49 173

原创 java中运行时候区域(本地方法栈)

本地方法栈与虚拟机栈所发挥的作用是非常相似的,他们之前的区别不过是虚拟机栈为虚拟机执行java方法,而本地方法栈则为虚拟机使用到的native方法服务,与虚拟机栈一样,本地方法栈也存在2种异常情况,和虚拟机栈抛出的异常是一样的,分别为StackOverflowError和OutofMemoryError异常...

2019-03-06 14:40:50 428

原创 Java(运行时区域内存之java虚拟机栈)

与程序计数器一样,java虚拟机栈也是java私有的部分,它的生命周期与线程相同,虚拟机栈描述而是java方法执行的内存模型,每个方法在执行的时候都会创建栈帧, 栈帧:主要用于存储局部变量表,操作数栈,动态链表,方法出口等信息,每一个方法从调用到执行完成的过程中,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程.. 曾经有人把java内存区域划分为堆和栈,其中这种描述是不...

2019-03-06 13:58:40 930

原创 Java中的运行时候、的数据区域划分之程序计数器区域理论

在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随虚拟机进程启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁,根据Java7规划,将java运行时区域划分为以下部分,方法区,栈,虚拟机栈,本地方法栈,程序计数器, 1>程序计数器:程序计数器是一块很小的内存空间,可以看作当前线程执行的字节码的行号指示器...

2019-03-06 13:09:20 178

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除