
Saprk
文章平均质量分 92
pre_tender
好懒好懒
展开
-
Spark性能调优 之 合理规划资源配置
文章目录1. 合理规划资源配置1.1 简介1.1.1 资源配置调优原理1.2 资源配置说明1.2.1 资源配置种类1.2.2 资源配置方式1.2.3 调优原则2. 调节并行度2.1 简介2.1.1 并行度简介2.1.2 并行度调优原理2.2 并行度调节说明2.2.1 并行度调节方式2.2.2 并行度调节原则3. 重构RDD架构与RDD持久化3.1 说明1. 合理规划资源配置1.1 简介性...原创 2019-12-10 00:20:47 · 976 阅读 · 1 评论 -
Spark内存管理概述
文章目录概述概述Spark作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中占据着非常重要的角色。理解Spark内存管理的基本原理,有助于更好地开发Spark应用程序和进行性能调优。本系列文章,旨在梳理出Spark内存管理的脉络本文中的原理基于Spark 2.4.+版本。阅读本文需要读者有一定的Spark和Java基础,了解RDD、Shuffle、JVM等相关概念。...原创 2019-10-29 15:45:04 · 368 阅读 · 0 评论 -
Spark RDD之Partitioner
文章目录概要Partitioner作用Partitioner定义1. HashPartitioner2. RangePartitionerPartitioner使用自定义Partitioner调整Partitioner总结概要Spark RDD主要由Dependency、Partition、Partitioner组成,这篇介绍最后一部分Partitioner。Partition记录了数据sp...原创 2019-10-04 22:59:05 · 325 阅读 · 0 评论 -
Spark RDD之Partition
文章目录概要1. Partition定义2. JdbcPartition例子:3. HadoopPartition例子4. 决定partition数量的因素RDD初始化相关通用transformationKey-based TransformationsPartition数量影响及调整Partition数量的影响Partition调整总结附录概要Spark RDD主要由Dependency、P...转载 2019-09-16 18:47:56 · 653 阅读 · 0 评论 -
Spark RDD运行原理
文章目录概述1. 涉及背景2. RDD概念2.1 RDD相关简介2.2 RDD典型执行过程3. RDD 特性4. RDD之间的依赖关系4.1 RDD依赖关系之Shuffle操作4.2 RDD依赖关系之宽依赖和窄依赖5.2 Stage划分策略5.3 Stage划分示例6. RDD运行过程概述本文主要介绍Saprk中重要的概念-----RDD1. 涉及背景许多迭代式算法(比如机器学习、图算法...原创 2019-10-04 22:59:33 · 1584 阅读 · 0 评论 -
Spark DAG概述
文章目录概要基础概念概要DAG,有向无环图,Directed Acyclic Graph的缩写,常用于建模。Spark中使用DAG对RDD的关系进行建模,描述了RDD的依赖关系,这种关系也被称之为lineage,RDD的依赖关系使用Dependency维护。参考Spark RDD之Dependency,DAG在Spark中的对应的实现为DAGScheduler。基础概念...原创 2019-10-04 22:58:31 · 1133 阅读 · 0 评论 -
TODO--Spark任务调度之Driver&TaskScheduler处理返回结果
文章目录概述1.CoarseGrainedSchedulerBackend接收Executor返回消息概述本文接上文Spark 任务调度之Executor执行task并返回结果,剖析Driver接收到结果后的操作,以及TaskScheduler的先关操作。本文待续但是先说下大概,(猜测):Driver接收到返回消息,那么将Result交给TaskScheduler去处理,自己则负责调...原创 2019-09-15 23:45:49 · 378 阅读 · 0 评论 -
Spark 任务调度之Executor执行task并返回结果
文章目录概要1. 接收LaunchTask消息2. TaskRunner运行Task2.1 TaskRunner运行Task之deserialize task2.2 TaskRunner运行Task之run task2.3 TaskRunner运行Task之sendback result附录概要本篇博客是Spark 任务调度概述详细流程中的最后一部分,介绍Executor执行task并返回re...原创 2019-10-04 22:59:19 · 1203 阅读 · 0 评论 -
Spark 任务调度之Driver send Task
文章目录概要1. 执行用户编写的代码2. DAGScheduler生成task3. TaskSchedulerImpl提交Task4. Executor接收Task总结附录概要在前面,我们介绍了Driver的启动、注册以及Application的注册。在此之后,就要进行Task任务的执行了。1. 执行用户编写的代码Spark 任务调度之Register App中介绍了Driver中初始化S...原创 2019-09-15 11:35:45 · 527 阅读 · 0 评论 -
Spark 任务调度之Register App
文章目录概要1. SchedulerBackend简介2. TaskScheduler简介3. Register App3.1 流程总结概要本篇博客是Spark 任务调度概述详细流程中的第三部分,上一篇Spark 任务调度之Launch Driver最后讲到了Worker进程使用java.lang.ProcessBuilder执行java -cp命令启动用户编写的程序。执行用户程序的main方...转载 2019-09-14 23:06:07 · 544 阅读 · 0 评论 -
Spark DAG之SubmitJob
文章目录概要1. EventLoop2. DAGSchedulerEvent3. DAGSchedulerEventProcessLoop4. Job概要介绍DAGScheduler使用EventLoop(LinkedBlockingDeque)异步处理Job的流程,程序由同步改为异步是优化并发,提升性能的常见手段,在spark中使用的非常多。1. EventLoop异步处理借助于Even...原创 2019-10-04 22:58:40 · 304 阅读 · 0 评论 -
Spark 内存管理之StaticMemoryManager
文章目录概述前言1. 创建StaticMemoryManager1.1 StaticMemoryManager.getMaxStorageMemory()1.2 StaticMemoryManager.getMaxExecutionMemory()2. 实现内存操作方法2.1 acquireStorageMemory()2.2 acquireExecutionMemory()2.3 acquire...原创 2019-10-05 11:45:04 · 389 阅读 · 0 评论 -
Spark RDD之Dependency
文章目录概要Dependency定义1. NarrowDependency(窄依赖)2. ShuffleDependency(宽依赖)举个例子概要上一篇我们介绍了代表RDD组成的(Dependency、Partition、Partitioner)之一的Partition,这篇接着介绍Dependency。Partition记录的是数据split的逻辑,Dependency记录的是transf...原创 2019-10-04 22:58:51 · 243 阅读 · 0 评论 -
Spark内存管理之Execution内存管理
文章目录概述1. 多任务间的分配2. Shuffle的内存占用2.1 Shuffle Write对内存的使用2.2 Shuffle Read对内存的使用2.3 溢写:处理shuffle执行内存不足2.4 Tungsten介绍总结致谢概述以Shuffle的临时数据存储为例,介绍执行内存的使用。在Spark内存管理之堆内/堆外内存原理详解一文中,我们可以知道,无论是on-heap还是off-he...原创 2019-10-04 22:58:15 · 655 阅读 · 0 评论 -
Spark 内存管理之UnifiedMemoryManager
文章目录概述1. 创建UnifiedMemoryManager2. 实现内存操作方法概述介绍UnifiedMemoryManager源码相关的流程。1. 创建UnifiedMemoryManager查看类定义:[下图是 UnifiedMemoryManager.scala 中 UnifiedMemoryManager 构造参数]UnifiedMemoryManager 构造时调用工厂...原创 2019-10-04 22:57:24 · 709 阅读 · 0 评论 -
Spark存储管理之Storage模块解析
文章目录概述1. Storage Memory模块解析1.1 架构角度通信层消息传递存储层架构数据块概述本文主要介绍Spark内存管理中的存储内存管理部分。RDD的存放和管理都是由Spark的存储管理模块实现和管理的。本文先从架构和功能两个角度对Spark的存储管理模块进行介绍,然后接着介绍RDD持久化的机制和过程。在package org.apache.spark.memory.Memo...原创 2019-10-04 22:53:29 · 1179 阅读 · 0 评论 -
Spark内存管理之存储内存管理
文章目录概述1. RDD存储相关概念1.1 RDD分区和数据块的关系1.1.1 问题说明1.1.2 关系说明1.1.3 数据块与分区映射约定方式2. RDD持久化机制2.1 RDD持久化种类3. RDD 缓存过程4. 淘汰和落盘4.1 淘汰4.2 落盘总结致谢概述介绍存储内存的管理。主要讲解RDD在存储内存中的持久化。在Spark内存管理之堆内/堆外内存原理详解一文中,我们可以知道,无论...原创 2019-10-04 22:53:05 · 572 阅读 · 0 评论 -
Spark内存管理之堆内/堆外内存原理详解
文章目录概要1. 堆内内存(On-heap Memory)1.1 堆内内存分区2. 堆外内存(Off-heap Memory)3. Execution 内存和 Storage 内存动态调整3.1 动态调整策略4. Task内存申请流程5. 内存分配示例5.1 只用了堆内内存5.2 堆内内存+堆外内存总结概要介绍Spark内存管理中,涉及到的**堆内内存(On-heap Memory)和堆外内...原创 2019-09-27 12:25:25 · 10976 阅读 · 7 评论 -
Spark DAG之SubmitTask
文章目录概要1. Task介绍2. submitMissingTasks概要介绍Stage转为Task,提交给Executor运行的过程。1. Task介绍一个spark application提交后,陆续被分解为job、stage,到这里其实还是一个比较粗的概念。Stage继续往下分解,就是Task。Task应该是spark最细的执行单元了。Task的数量其实就是stage的并行度。...原创 2019-09-26 15:30:46 · 810 阅读 · 0 评论 -
Spark DAG之SubmitStage
文章目录概要1. 前提2. SubmitStage()2.1 提交流程2.2 提交流程图2.3 提交结果说明3. 提交WaitingStages3.1 第一种提交途径3.2 第二种提交途径3.3 submitWaitingStages的作用总结致谢附录概要介绍提交Stage的流程,继续沿用上文Spark DAG之划分Stage中的例子1. 前提上篇博客Spark DAG之划分Stage介绍...原创 2019-09-23 23:11:31 · 489 阅读 · 1 评论 -
Spark DAG之处理SubmittedJob并划分Stage
文章目录概要1. Stage介绍1.1 父类Stage定义1.2 子类ShuffleMapStage、ResultStage2. 处理SubmittedJob事件附录概要介绍Stage的定义,DAGScheduler划分Stage流程。1. Stage介绍原理相关的介绍,我们在RDD运行原理一文中有介绍过,这里不在赘述1.1 父类Stage定义查看父类Stage的说明:查看类定义:...原创 2019-09-17 23:47:42 · 876 阅读 · 0 评论 -
Spark 任务调度之启动CoarseGrainedExecutorBackend
文章目录概要1. CoarseGrainedExecutorBackend简介2. 启动CoarseGrainedExecutorBackend2.1 main()2.1.1 定义变量用以保存命令行参数2.1.2 解析命令行参数2.1.3 调用run()来执行主要逻辑2.2 run()2.2.1 run()获取到的参数2.2.2 从Driver获取properties2.2.3 创建Executo...原创 2019-09-12 21:42:29 · 1472 阅读 · 0 评论 -
Spark之Launch Executor
文章目录概要1. 启动流程之Master端1.1 Executor启动之Master执行startExecutorsOnWorkers()1.2 Executor启动之Master确定Worker上的Core数量1.1 Executor启动之Master分配Worker资源给Executor1.1 Executor启动之Master发送LaunchExecutor消息2. 启动流程之Worker端...原创 2019-09-12 21:38:28 · 930 阅读 · 0 评论 -
Spark之Driver启动
文章目录概要1. 启动流程1.1 Driver启动之Master执行Schedule()调度1.2 Driver启动之Master执行launchDriver()1.3 Driver启动之Worker接收消息1.4 Driver启动之Worker启动Driver1. 执行DriverRunner.start()来启动driver:(省略了很多代码,完整的可以参考附录)2. 执行prepareAnd...原创 2019-09-11 16:03:00 · 1127 阅读 · 0 评论 -
Client Mode和Cluster Mode的区别
文章目录概述1. Client Mode2. Cluster Mode3. 总结概述在使用spark-submit提交Spark任务一般有以下参数:./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \...转载 2019-09-03 17:37:30 · 2347 阅读 · 0 评论 -
RpcEndpointRef
文章目录概述1. 源码剖析1.1 变量1.2 两个getter1.2.1 获取address1.2.2 获取name1.3 通信方法1.3.1 send():单向异步消息1.3.2 ask():发送异步消息,非阻塞等待回复1.3.3 askSync():发送同步消息,阻塞等待回复概述RpcEndpointRef是远程 [RpcEndpoint] 的引用。[RpcEndpointRef] 是线...原创 2019-09-03 16:30:39 · 485 阅读 · 0 评论 -
Spark学习-2.4.0-源码分析-2-Spark 核心篇-Master状态改变处理机制原理剖析与源码分析
文章目录@[toc]1. Master状态改变处理内容2. 状态改变处理机制与源码分析2.1 处理Master状态改变2.1.1 Active Master不再Active2.1.2 Stand Master变为Active Master2.2 处理Driver状态改变2.3 处理Executor状态改变致谢1. Master状态改变处理内容 首先对于Master来说,存在Active M...原创 2019-09-02 23:13:01 · 395 阅读 · 0 评论 -
Master清理信息--Driver、Worker、Application
文章目录1. Master清理信息1.1 清理Worker信息:removeWorker()1.2 清理Application信息:1.3 清理Driver信息:1. Master清理信息 本文主要是介绍Master清理Driver、Worker、Application的源码和分析。先附上源码,分析待续。 1.1 清理Worker信息:removeWorker() p...原创 2019-09-02 23:11:20 · 310 阅读 · 0 评论 -
Spark SQL的前世今生
文章目录1. Spark SQL简介1.1 Spark SQL 起源1.2 Spark SQL缘起2. Spark SQL 架构2.1 语言API2.2 模式RDD2.3 数据源3. Spark SQL 支持的数据格式和编程语言4. Spark SQL 功能特性4.1 集成4.2 统一数据访问4.3 Hive兼容性4.4 标准连接4.5 可扩展性1. Spark SQL简介1.1 Spark ...原创 2019-08-23 15:54:05 · 3356 阅读 · 0 评论 -
Spark学习-2.4.0-源码分析-3-Spark 核心篇-Spark Submit任务提交
文章目录1. 概述2. Spark应用程序执行流程简介3. Spark Submit任务提交流程详解3.1 第一步,编写用户脚本并用Spark-Submit提交3.1.1 用户脚本内容3.1.2 命令行日志3.1.3 Spark-Submit脚本分析1. 概述 本文介绍Spark应用程序提交的第一步: 使用Spark Submit提交应用。本文将从spark提交的脚本开始,逐步分析脚本内容...原创 2019-08-18 15:44:51 · 1365 阅读 · 0 评论 -
Spark学习-2.4.0-源码分析-3-Spark 核心篇-Master注册机制原理剖析
文章目录1.Master 与 Driver, Worker, Application 注册关系阐述2. Worker注册流程分析3. Application注册流程分析致谢1.Master 与 Driver, Worker, Application 注册关系阐述如果拿一个公司来类比的话,可以这样理解: (类比出处)Master 想像成公司里的总经理Driver 就是客户Wor...原创 2019-08-16 02:19:49 · 287 阅读 · 0 评论 -
离线日志采集流程
文章目录概述流程概述本文主要介绍在数据分析领域中,服务器离线日志数据从生成到采集再到存储、分析的流程。流程序号步骤内容说明1数据产生途径我们的数据从哪里来?- 互联网行业:网站、app、系统(交易系统。。)- 传统行业:电信,人们的上网、打电话、发短信等等数据数据源:网站、app都要往我们的后台去发送请求,获取数据,执行业务逻辑;app获取要展现的商品数据;发送...原创 2019-08-20 23:52:33 · 453 阅读 · 0 评论 -
Spark学习-2.4.0-源码分析-2-Spark 核心篇-Master主备切换机制
文章目录1. “主备”是什么2. 主备切换机制3. 主备切换流程分析3.1 ZooKeeper切换机制流程3.1.1 在ZooKeeper端中被选举3.1.2 在Master 中接收消息并处理切换3.2 文件系统切换机制流程致谢1. “主备”是什么 对于Spark来说,Master实际上可以配置两个,分别为Active Master 和 StandBy Master。而Spark原生的st...原创 2019-08-14 22:08:44 · 482 阅读 · 0 评论 -
Spark学习-2.4.0-源码分析-3-Spark 核心篇-Driver的启动注册流程分析
文章目录概述大致流程概述在探究了SparkContext与SparkSubmit源码之后,我们大致了解了任务提交与SC的创建,但是有一个疑问就是:文章中所说的,在SparkContext初始化的过程中,会先注册Driver,再去注册Application。而SparkSubmit中也有提到Driver注册。那么,SaprkSubmit中的注册Driver与SC中的注册Driver,到底...原创 2019-08-18 17:34:02 · 284 阅读 · 0 评论 -
Spark四种部署模式
Spark集群三种部署模式的区别Spark的四种部署方式概括原创 2019-09-03 18:09:40 · 1441 阅读 · 0 评论 -
Spark RPC 之 Netty 启动
文章目录摘要千言万语不如一张图1. SparkContext.scala2. SparkEnv.scala3. RpcEnv.scala4. NettyRpcEnvFactory.scala5. NettyRpcEnv.scala5.1 TransportContext.scala5.1.1 TransportServer.scala摘要Spark RPC概述中我们介绍了Spark RPC接口...原创 2019-09-03 23:55:12 · 252 阅读 · 0 评论 -
Spark RPC之Worker启动、注册、发送心跳
文章目录概要1. Class Worker1.1 Class Worker之onStart()1.2 Class Worker之receive()1.3 Class Worker之receiveAndReply()1.4 Class Worker之onStop()2. Object Worker2.1 Object Worker之main()2.2 Object Worker之startRpcEn...转载 2019-09-09 17:54:07 · 379 阅读 · 0 评论 -
Spark RPC 之 Master 启动并提供服务
文章目录概要1. Class Master解析1.1 Master之onStart()1.2 Master之receive()1.3 Master之recevieAndReply()1.4 Master之onStop()2. Object Master解析2.1 Object Master之main()2.2 Object Master之startRpcEnvAndEndpoint()总结概要...转载 2019-09-09 16:46:57 · 442 阅读 · 0 评论 -
SparkRpc 之 RpcEnv \ RpcEnvFileServer \ RpcConfig
文章目录概述1. RpcEnv1.1 Object RpcEnv1.2 Abstract Class RpcEnv2. Trait RpcEnvFileServer3. RpcConfig概述本文主要介绍RpcEnv.scala中三个Class/Object。1. RpcEnv1.1 Object RpcEnvrpcenv实现必须具有具有空构造函数的[[rpcenvfactory]]...原创 2019-09-09 15:26:09 · 203 阅读 · 0 评论 -
Spark RPC之RpcEndpointVerifier
文章目录概要1. 定义2. 请求流程3. server端注册RpcEndpointVerifier4. client发请求CheckExistence总结概要Spark RPC概述中介绍了Spark PRC抽象接口RpcEndpointRef 、RpcEndpoint的用法,RpcEndpointVerifier的作用是,当RpcEndpointRef访问对应的RpcEndpoint前,判...转载 2019-09-09 14:57:53 · 447 阅读 · 0 评论