Java多线程 46 - ScheduledThreadPoolExecutor详解(2)
ScheduledThreadPoolExecutor用于执行周期性或延时性的定时任务,它是在ThreadPoolExe...
Reduce端在处理聚合操作时为了避免数据量过大产生OOM,没有使用Map端聚合时用到AppendOnlyMap,而采用了ExternalAppendOnlyMap这种带有溢写操作... 查看更多
ShuffleReader只有一个实现类:BlockStoreShuffleReader,该类也是Spark中唯一实现的用于拉取Map任务输出数据读取器。 查看更多
ShuffleWriter是Map任务用于输出结果数据的写出器,主要有三个实现:UnsafeShuffleWriter、BypassMergeSortShuffleWriter和S... 查看更多
ExternalSorter除了会将Map任务的输出数据存储到JVM的堆中,如果指定了聚合函数,则还会对数据进行聚合。ExternalSorter会使用分区器将数组分组到对应的分区... 查看更多
为了实现Sorter对键值对的聚合和排序操作,Spark提供了一些容器辅助,本文将详细介绍这些容器 查看更多
ShuffleExternalSorter作为外部排序器,UnsafeShuffleWriter依赖于它实现堆外内存中序列化数据的排序操作,它继承自MemoryConsumer抽象... 查看更多
本文主要讲解Shuffle过程涉及的ShuffleManager和IndexShuffleBlockResolver组件。 查看更多
ShuffleMapTask和ResultTask都需要调用所在Stage中最末RDD的iterator()方法进行迭代计算,不同点无非是二者对迭代计算结果的处理方式不同,Shuf... 查看更多
本文主要介绍Task、TaskContxt和TaskMemoryManager。 查看更多
在讲解计算引擎之前,以Standalone部署模式为运行环境,让我们来理一理Application运行流程。 查看更多
TaskScheduler意为任务调度器,它是属于Spark调度系统中对Task进行调度的资源调度器。Spark自己提供了Standalone模式的集群管理器,也允许开发者使用YA... 查看更多
StandaloneAppClient将作为Application的RPC端点,与Spark自有的Standalone集群管理器进行对话;它会通过向Standalone集群管理器注... 查看更多
SchedulerBackend是TaskScheduler的调度后端接口。TaskScheduler给Task分配资源实际是通过SchedulerBackend来完成的,Sche... 查看更多
TaskScheduler是以树的方式来管理任务队列,树中的叶子节点为TaskSetManager,非叶子节点为Pool; 它们都是Schedulable的实现类。 查看更多
在DAGScheduler中涉及了一个组件,即OutputCommitCoordinator,意为输出提交协调器。它是用于控制Stage的每个TaskAttempt提交到HDFS的... 查看更多
DAGScheduler实现了面向DAG的高层次调度,即将DAG中的各个RDD划分到不同的Stage。DAGScheduler可以通过计算将DAG中的一系列RDD划分到不同的Sta... 查看更多
RDD(Resilient Distributed Dataset)名为分布式数据集,是Spark中最基本的数据抽象,它为用户屏蔽了底层对数据的复杂抽象和处理,提供了一组方便的数据... 查看更多
有了前面的对通信层、存储层的强行铺垫,以及对各种重要组件的详细分析,大家一定对Spark的存储体系的各项功能已经都有了一定的了解,但是对存储体系的运转方式还是没有一个整体上的认识,... 查看更多
在Spark的存储体系中,磁盘管理由DiskBlockManager磁盘管理器实现,它负责为逻辑的数据块与数据在磁盘的写入位置建立映射关系。 查看更多
内存存储的具体实现由存储实体MemoryEntry类和用于内存操作的MemoryStore类相互配合以实现。 查看更多
MemoryManager是用于对节点上内存的分配和回收的内存管理器,每个实现存储体系的节点上都会存在MemoryManager;在Spark中,MemoryManager的实现有... 查看更多
Spark中数据的存储按照位置来分,可以分为磁盘和内存,存储体系也分别根据这两种存储位置做出了不同的实现;同时,存储层还有一项非常重要的工作,就是对这两种存储进行管理。 查看更多
对于Spark分布式计算的特性而言,Map任务和Reduce任务很有可能会发生Shuffle过程,此时Map任务会将产生的数据保存到存储体系中,然后由Reduce任务进行拉取,当遇... 查看更多
Spark存储体系由各个Driver和Executor实例中的BlockManager所构成,实现了分布式管理,而从Driver和Executor单个节点来看,Spark存储体系属... 查看更多
一般来说,笔者通常将事件总线归为Spark的通信架构层。事件总线是以监听器模式实现的,主要组成结构分为监听器、事件源和事件分发器(也即是事件总线)。Spark中定义了大量的事件总线... 查看更多
NettyRpcEnv将使用NettyRpcHandler来处理入站的RPC消息。 查看更多
大数据是近几年广受关注的一个概念。今天,互联网不断发展,逐渐深入我们生活的各个层面,随之而来的是数据量的指数级增长。 View More
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对... View More
深入理解Java虚拟机(第2版) 周志明
Chapter:第13章 线程安全与锁优化
当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第12章 Java内存模型与线程
Java虚拟机定义的内存模型(Java Memory Model,JMM)屏蔽了各种硬件和操作系统的内存访问差异,让Java程序在各种平台下... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第8章 虚拟机字节码执行引擎
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第7章 虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第6章 类文件结构
Java虚拟机的指令由一个字节长度的、 代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第6章 类文件结构
实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java的规范拆分成了Java语言规范《The Java Language Specifi... View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第3章 虚拟机性能监控与故障处理工具
Java开发工具包中提供了众多的虚拟机工具可供开发者使用。 View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第3章 虚拟机性能监控与故障处理工具
Java开发工具包中提供了众多的虚拟机工具可供开发者使用。 View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第3章 虚拟机性能监控与故障处理工具
Java开发工具包中提供了众多的虚拟机工具可供开发者使用。 View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
深入理解Java虚拟机(第2版) 周志明
Chapter:第3章 虚拟机性能监控与故障处理工具
Java开发工具包中提供了众多的虚拟机工具可供开发者使用。 View More
《深入理解Java虚拟机(第2版)》
作者:周志明
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。
Write the code, Change the world
Java多线程 46 - ScheduledThreadPoolExecutor详解(2)
ScheduledThreadPoolExecutor用于执行周期性或延时性的定时任务,它是在ThreadPoolExe...
Java多线程 47 - CompletionService详解
JDK提供了CompletionService接口用于解决该问题。在它的实现类ExecutorCompletionSer...