Spark-源码学习-SparkSession-SparkContext-ContextCleaner 设计
一、概述SparkContext 初始化的最后一个组件: 上下文清理器 ContextCleaner。它扮演着 Spark Core 中垃圾收集器的角色。Spark 运行的时候,会产生一堆临时文件和数据,比如 Shuffle 的临时数据等,如果每次运行完,或者没有运行完杀掉了,不清理,会产生大量的无用数据,最终造成大数据集群崩溃而死。
二、设计ContextCleaner 是 Spark 应用中的垃圾收集器,负责应用级别的 shuffles,RDDs,broadcasts,accumulators 及 checkpointedRDD 文件的清理,用于减少内存及磁盘存储的压力。
ContextCleaner 在 Driver 中运行,在 SparkContext 启动且 spark.cleaner.referenceTracking 配置为 true 时启动,在 SparkContext 停止的时候停止。
2.1. 属性
referenceBuffer
缓存 CleanupTaskWeakReference 的集合。CleanupTaskWeakReference 是 Java ...
Spark-源码学习-SparkSQL-SQL 语句的执行过程
一、概述在典型的 Spark SQL 应用场景中,数据的读取、数据表的创建和分析都是必不可少的过程。通常来讲,SparkSQL 查询所面对的数据模型以关系表为主。
如图所示的案例显示了使用 SparkSQL 进行数据分析的一般步骤。
二、流程2.1. 创建 SparkSession从 2.0 版本开始,SparkSession 逐步取代 SparkContext 成为 Spark 应用程序的入口,SparkSession 内封装了 SparkConf、SparkContext 和 SQLContext 等。
1234val spark: SparkSession = SparkSession.builder() .master("local") .appName("MySQLSourcePractice") .getOrCreate()
引用本站文章
Spark-源码学习-SparkSession 设计
...
Hadoop-组件-HDFS-源码学习-数据读写-读文件-网络读
一、概述二、理论笔记三、实现
Hadoop-组件-HDFS-源码学习-数据读写-读文件-短路读
一、概述二、理论笔记
引用本站文章
Hadoop-组件-HDFS-理论笔记-数据读写-短路读
Joker
三、实现在 DFSClient 中,使用 ShortCircuitReplica 类封装可以进行短路读取的副本。ShortCircuitReplica 对象中包含了短路读取副本的数据块文件输入流、校验文件输入流、短路读取副本在共享内存中的槽位 (slot) 以及副本的引用次数等信息。
DFSClient 会持有一个 ShortCircuitCache 对象缓存并管理所有的 ShortCircuitReplica 对象,DFSClient 从 ShortCircuitCache 获得了 ShortCircuitReplica 的引用之后,就可以构造 BlockReaderLocal 对象进行本地读取操作了。
3.1. 短路读共享内存当 D ...
Hadoop-组件-HDFS-源码学习-数据读写-读文件-零拷贝读
一、概述二、理论笔记三、实现DFSInputStream.read() 首先调用 tryReadZeroCopy() 方法尝试以零拷贝模式读取数据块,如果当前配置或者数据块的状态不支持零拷贝,则调用 ByteBufferUtil.fallbackRead() 退化为一个普通的读取操作。
在传统的文件 I/O 操作中,都是调用操作系统提供的系统调用函数 read() 或 write() 来执行读写操作的,此时调用此函数的进程会由用户态切换到内核态,然后操作系统的内核代码负责将相应的文件数据读取到内核的 I/O 缓冲区,最后再把数据从内核 IO 缓冲区拷贝到进程的私有地址空间中,完成一次 IO 操作。
3.1. 校验3.1.1. 同一个数据块首先确保读取是在同一个数据块之内
3.1.2. 映射数据 <= 2GB确保读取映射数据没有超过 2GB
3.2. 获取数据块文件在内存中的映射对象tryReadZeroCopy() 会通过调用 blockReader.getclientMmap()将文件映射到内存中,并返回 ClientMmap对象。这个对象当中包含了 MappedByteB ...
Hadoop-组件-HDFS-源码学习-数据读写-读数据设计
一、概述在 HDFS 客户端实现中,最重要也最复杂的一部分就是文件的读写操作😯~
二、理论笔记
引用本站文章
Hadoop-组件-HDFS-理论笔记-数据读写-读文件
Joker
三、实现3.1. 打开文件当用户读取一个 HDFS 文件时,首先会调用 DistributedFileSystem.open() 方法打开这个文件,并获取文件对应的 FSDataInputStream 输入流,然后在这个 FSDataInputStream 对象上调用 read() 方法读取数据。
引用本站文章
Hadoop-组件-HDFS-源码学习-数据读写-读文件-打开文件
Joker
...
Spark-源码学习-SparkSQL-架构设计-SQL 引擎-架构设计
一、概述SQL 引擎负责承接客户端输入的 SQL 请求,并根据负载场景将 SQL 语句经过其解析、优化、执行等模块的处理后,将结果返回至客户端。
对于 Spark SQL 系统,从 SQL 到 Spark 中 RDD 的执行需要经过两个大的阶段,分别是逻辑计划(LogicalPlan)和物理计划( PhysicalPlan)
1.1. 逻辑计划逻辑计划阶段会将用户所写的 SQL 语句转换成树型数据结构(逻辑算子树),SQL 语句中蕴含的逻辑映射到逻辑算子树的不同节点,逻辑计划阶段生成的逻辑算子树并不会直接提交执行,仅作为中间阶段。
1.2. 物理计划物理计划阶段将上一步逻辑计划阶段生成的逻辑算子树进行进一步转换,生成物理算子树。物理算子树的节点会直接生成 RDD 或对RDD 进行 transformation 操作。
从 SQL 语句的解析一直到提交之前,上述整个转换过程都在 Spark 集群的 Driver 端进行,不涉及分布式环境。SparkSession 类的 sql 方法调用 Session State 中的各种对象,包括上述不同阶段对应的 SparkSqlParser ...
Flink 源码环境搭建
本篇主要是记一下如何调试 Flink 的源码,以 Standalone 模式为例
一、编译在GitHub 下载源码并编译:
12git clone git@github.com:apache/flink.gitgit checkout release-1.6.3
编译命令:
1mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -T 4
maven 的 settings.xml 文件的 mirror 添加:
12345678910111213 1<mirror> 2 <id>nexus-aliyun</id> 3 <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf> 4 <name>Nexus aliyun</name> 5 <url>http://maven.aliyun.com/nexus/c ...