![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
文章平均质量分 81
勤言不勤语
走走看看,停停想想。
展开
-
【Spark】Spark On Yarn 安装
文章目录一、下载和解压二、配置2.1、配置 spark-default.conf,按需调整2.2、配置 spark-env.sh2.3、配置 slaves2.4、创建目录2.5、拷贝到其他节点2.6、配置环境变量三、启动与测试3.1、启动 Standalone 模式3.2、 启动 spark 的 history-server3.3、测试 Yarn 模式一、下载和解压https://archiv...原创 2019-11-14 14:38:41 · 871 阅读 · 0 评论 -
【Spark】Spark 容错及 HA--Worker 异常
一、心跳连接Spark Standalone 是经典的 Master/Slave 结构,Slave 就是集群中的 Worker,Worker 启动后,会向 Master 注册,注册成功后会定时向 Master 发送 心跳,上报自己的状态。同时 Master 也会不断检查注册的 Worker 是否超时。首先,Worker 发送心跳信息:Worker # handleRegisterRespon...原创 2019-03-06 15:10:30 · 486 阅读 · 0 评论 -
【Spark】Spark 容错及 HA--Master 异常
一、Master 配置 recoveryModeMaster 作为 Spark Standalone 模式中的核心,如果 Master 出现异常,则整个集群的运行情况和资源将无法进行管理,整个集群将处于“群龙无首”的状况。Spark 在设计时考虑了这种情况,在集群运行的时候,可以启动一个或多个 Standby Master,当 Master 出现异常的时候,Standby Master 将根据...原创 2019-03-06 17:19:07 · 537 阅读 · 0 评论 -
【Spark】Spark 存储原理--存储层分析
本篇结构:缓存分析存储级别如何选择存储级别一、缓存分析RDD 有 persist 和 cache 方法,其中 cache 是 StorageLevel.MEMORY_ONLY 级别的 persist 特例。追踪下源码,先从 RDD # cache 开始:/** * Persist this RDD with the default storage level (`MEMORY_...原创 2019-03-19 16:45:05 · 281 阅读 · 0 评论 -
【Spark】Spark 存储原理--通信层架构分析
本篇结构:概念介绍初始化过程相互通信Spark 存储管理模块采用的是主从结构(Master/Slave)来实现通信层,主节点和从节点之间传输控制信息、状态信息,通信的底层还是依赖 Spark Rpc 框架。Master 主要负责整个应用程序在运行期间 block 元数据的管理和维护,Slave 主要负责将本地数据块的状态的汇报给 Master,而且接收 Master 传过来的执行指令...原创 2019-03-18 20:46:13 · 255 阅读 · 0 评论 -
【Spark】Spark 存储原理--shuffle 过程
本篇结构:Spark Shuffle 的发展Spark Shuffle 中数据结构Spark Shuffle 原理后记Spark Shuffle 是 spark job 中某些算子触发的操作。当 rdd 依赖中出现宽依赖的时候,就会触发 Shuffle 操作,Shuffle 操作通常会伴随着不同 executor/host 之间数据的传输。Shuffle 操作可能涉及的过程包括数...转载 2019-03-25 20:37:12 · 611 阅读 · 0 评论 -
【Spark】Spark 存储原理--读数据过程
本篇结构:读取数据块过程内存读取磁盘读取一、读取数据块过程BlockManager 的 get 方法是读数据的入口点,有本地读取和远程读取两个分叉口。本地读取使用 getLocalValues 方法,根据存储级别的不同,使用 MemoryStore.getValues 或者 DiskStore.getBytes 读取数据。远程读取使用 getRemoteValues 方法,调用远程...原创 2019-03-22 21:03:23 · 1333 阅读 · 1 评论 -
【Spark】Spark 存储原理--写数据过程
本篇结构:写数据块过程写内存写磁盘写远程一、写数据块过程分析读数据过程时,可以了解到 RDD.iterator -> RDD.getOrCompute -> BlockManager.getOrElseUpdate 既是读数据的入口,也是写数据的入口。不同的是,读数据走 BlockManager.get 方法,而写数据走 doPutIterator 方法。在 doP...原创 2019-03-23 18:01:09 · 1042 阅读 · 0 评论 -
【Spark】Spark 运行架构--YARN 运行模式
本篇结构:运行架构组成运行模式介绍两个重要类 TaskScheduler 和 SchedulerBackendyarn 运行模式一、运行架构组成Spark 运行架构主要由三部分组成:SparkContext:Spark 运行上下文,通常可以认为是 Driver 端,负责与 ClusterManager 通信,进行资源申请、认为分配和监控,负责作业执行的全部生命周期。Clust...原创 2019-04-11 20:08:29 · 308 阅读 · 0 评论 -
【Spark】Spark 运行架构--YARN-Client
本篇结构:运行流程图运行步骤运行启动类图运行实现原理运行作业调用图一、运行流程图二、运行步骤启动运用程序,main 函数方法中会启动 SparkContext,在 SparkContext 启动过程,会构建 DAGScheduler,利用反射构建 YarnScheduler(TaskScheduler)和 YarnClientSchedulerBackend(Schedul...原创 2019-04-11 20:11:29 · 368 阅读 · 0 评论 -
【Spark】Spark 运行架构--YARN-Cluster
本篇结构:YARN-Cluster 工作流程图YARN-Cluster 工作流程YARN-Cluster 模式启动类图YARN-Cluster 实现原理YARN-Cluster 作业运行调用图一、YARN-Cluster 工作流程图二、YARN-Cluster 工作流程客户端通过 spark-submit 提交应用程序,反射生成 YarnClusterApplication...原创 2019-04-12 19:27:33 · 483 阅读 · 0 评论 -
【Spark】Spark 基础实践--Spark UDF
文章目录一、Spark SQL 中 UDF 用法二、DataFrame 中 UDF 用法三、UDAF用户定义函数(User-defined functions, UDFs)是大多数 SQL 环境的关键特性,用于扩展系统的内置功能。UDF 允许开发人员通过抽象其低级语言实现来在更高级语言(如 SQL)中启用新功能。一、Spark SQL 中 UDF 用法object SparkSqlUDF {...原创 2019-09-06 16:39:13 · 230 阅读 · 0 评论 -
【Spark】Spark 容错及 HA--Executor 异常
Spark 支持多种运行模式,这些运行模式中的集群管理器会为任务分配运行资源,在运行资源中启动 Executor,由 Executor 负责执行任务的运行,最终把任务运行状态发送给 Driver。以独立运行(standalone )模式为例分析 Executor 出现异常的情况,其运行结构如下图所示,其中虚线为正常运行中进行消息通信线路,实现为异常处理步骤。(1) 在 standalone ...原创 2019-03-05 15:38:09 · 687 阅读 · 0 评论 -
【Spark】 Spark作业执行原理--获取执行结果
一、执行结果并序列化任务执行完成后,是在 TaskRunner 的 run 方法的后半部分返回结果给 Driver 的:override def run(): Unit = { ... // 执行任务 val value = try { val res = task.run( taskAttemptId = taskId, a...原创 2019-01-08 14:45:18 · 1220 阅读 · 0 评论 -
【Spark】Spark 并行查询 Greenplum
本文结构如下:前言Spark SQL 几个属性介绍Spark 并行查询总结一、前言Spark 支持通过 JDBC 连接关系型数据库,连接方式如下:// Note: JDBC loading and saving can be achieved via either the load/save or jdbc methods// Loading data from a JDBC ...原创 2018-09-25 20:49:47 · 4168 阅读 · 5 评论 -
【Spark】Spark 事件总线
本篇结构:事件总线介绍ListenerBus 继承体系LiveListenerBus 详解流程总结一、事件总线介绍Spark 定义了一个特质 ListenerBus,可以接受事件并且将事件提交到对应事件的监听器。该特征主要有一个 listeners 成员,用于维护所有注册的监听器,其数据结构是一个线程安全的 CopyOnWriteArrayList[L]。该特征还有几个主要的函...原创 2018-10-28 14:32:33 · 1251 阅读 · 0 评论 -
【Spark】Spark 基本概念、模块和架构
本文结构如下:基本概念基本模块基本架构一、基本概念RDD(Resilient Distributed Datasets):弹性分布式数据集,只读分区记录的集合,Spark 对所处理数据的基本抽象。RDD 是 Spark 分发数据和计算的基础抽象类。一个 RDD 是一个不可改变的分布式集合对象,因此在使用 scala 编写时,前面加修饰符 val 。Spark 中 的计算可以简单抽象...原创 2018-10-24 10:18:10 · 2245 阅读 · 0 评论 -
【Spark】Spark 消息通信架构
本篇结构:前言几个重要概念Spark RpcEnvSpark RpcEndpointSpark RpcEndpointRefRpcEnv 和 RpcEndpoint 关系类图Dispatcher 和 InboxOutbox时序图一、前言在 Spark 事件总线 一篇中有介绍组件内之间的通信,那 Spark 集群内,各组件之间又是怎么通信的? Spark 有内置的 RPC ...原创 2018-11-15 14:41:04 · 2285 阅读 · 2 评论 -
【Spark】Spark 启动消息通信
本篇结构:前言详细过程一、前言在介绍了 Spark RPC 框架的大致内容后,下面以 Standalone 运行模式分析下 Spark 启动过程中的通信。启动过程中主要是 Master 和 Worker 之间的通信。首先 Worker 向 Master 发送注册消息,然后 Master 回复注册成功或者注册失败的消息,如果 Worker 收到注册成功的消息,就定时向 Master ...原创 2018-11-20 15:58:24 · 219 阅读 · 0 评论 -
【Spark】Spark 运行消息通信
本篇结构:前言详细过程一、前言前面介绍了 Spark Rpc 框架,及 Spark 启动时通信,这篇主要介绍 Spark 运行时通信。下面还是以 Standalone 模式介绍:用户提交应用程序时,应用程序的 SparkContext 会向 Master 发送应用注册消息,并由 Master 给应用分配 Executor,Executor 会向 SparkContext 发送注册成...原创 2018-11-24 12:53:31 · 750 阅读 · 0 评论 -
【Spark】Spark作业执行原理--提交作业
本篇结构:前言提交作业一、前言Spark 的作业和任务调度系统是其核心,它能够有效进行调度的原因是对任务划分 DAG 和容错。想真正搞懂 Spark,查看 Spark 作业执行流程的源码必不可少。本篇主要介绍 Spark 作业执行原理–提交作业。二、提交作业Spark 算子有 transformation 和 action 两种,transformation 算子是懒操作,不会触...原创 2018-12-13 11:28:25 · 373 阅读 · 0 评论 -
【Spark】Spark作业执行原理--提交调度阶段
在 DAGScheduler 的 handleMapStageSubmitted 方法中,划分完调度阶段后,进行调度阶段的提交。调度阶段的提交是在 submitStage 方法中进行的:/** Submits stage, but first recursively submits any missing parents. */private def submitStage(stage: S...原创 2018-12-19 17:08:10 · 350 阅读 · 0 评论 -
【Spark】Spark作业执行原理--划分调度阶段
本篇结构:划分调度阶段实例解析一、划分调度阶段Spark 调度阶段的划分是由 DAGScheduler 实现的,它会从最后一个 RDD 出发遍历整个依赖树,从而划分调度阶段,调度阶段的划分是以操作是否为宽依赖进行的。即当某个 RDD 的操作时 shuffle 时,以该 shuffle 操作为界限将划分成前后两个调度阶段。划分调度阶段的逻辑是在 DAGScheduler 的 handl...原创 2018-12-14 17:32:52 · 461 阅读 · 0 评论 -
【Spark】Spark作业执行原理--执行任务
本篇结构:CoarseGrainedExecutorBackend 接收 LaunchTask 消息Executor 执行 launchTask执行 Task 的 run 方法一、CoarseGrainedExecutorBackend 接收 LaunchTask 消息CoarseGrainedSchedulerBackend 中向 Executor 发送 LaunchTask 消息...原创 2018-12-26 17:20:48 · 264 阅读 · 0 评论 -
【Spark】Spark作业执行原理--提交任务
本篇结构:创建 Task创建 TaskSetManager 并 向 DriverEndpoint 发送消息分配资源发送消息告诉 Executor 去执行 Task一、创建 Task当调度阶段运行后,在 DAGScheduler 的 submitMissingTasks 方法中会根据调度阶段 Partition 数量拆分对应个数任务。对于 ResultStage,生成 Result...原创 2018-12-21 17:15:10 · 266 阅读 · 0 评论 -
【Spark】Ubuntu16.04 spark 集群安装 (standalone模式)
一、前言目前 Apache Spark 支持三种分布式部署方式,分别是:standalonespark on mesos spark on YARN其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比...原创 2018-09-15 17:27:57 · 455 阅读 · 0 评论