杭州个人网站建设wordpress修改导航栏

张小明 2025/12/27 2:57:45
杭州个人网站建设,wordpress修改导航栏,国内信息图制作网站,返利网 网站建设费用一、架构Spark 框架的核心是一个计算引擎#xff0c;整体来说#xff0c;它采用了标准的 master-slave 结构。上图中的 Driver 表示 master #xff0c;负责管理整个集群中的作业任务调度#xff1b;Executor 则是 slave#xff0c;负责实际执行任务#xff1b;1.1 Drive…一、架构Spark 框架的核心是一个计算引擎整体来说它采用了标准的 master-slave 结构。上图中的 Driver 表示 master 负责管理整个集群中的作业任务调度Executor 则是 slave负责实际执行任务1.1 DriverSpark 驱动器节点运行 Application 的 main() 函数负责实际代码的执行工作。它会创建SparkContextSparkContext 负责和 Cluster Manager 通信进行资源申请、任务分配和监控等当 Executor 部分运行完毕后Driver 负责将 SparkContext 关闭Spark 作业执行时主要负责将用户程序转化为作业job在 Executor 之间调度任务task跟踪 Executor 的执行情况通过 UI 展示查询运行情况1.1.1 SparkContextSparkContext 是 Spark 功能的主要入口。其代表与 Spark 集群的连接能够用来在集群上创建 RDD、累加器、广播变量。每个 JVM 里只能存在一个处于激活状态的 SparkContext在创建新的 SparkContext 之前必须调用 stop() 来关闭之前的 SparkContext。在 SparkContext 的初始化过程中Spark 会分别创建 DAGScheduler 作业和 TaskScheduler 任务调度两级调度模块。1.1.1.1 RDD弹性分布式数据集是 Spark 的核心结构Spark 的基本运算单元可以通过一系列算子进行操作Spark 的所有算子都是基于 RDD 来执行的不同的场景会有不同的 RDD 实现类但是都可以进行相互转换RDD 执行过程中会形成 DAG 图然后形成 lineage(血统) 保证容错性从物理层面来看RDD 存储的是 block 和 node 之间的映射RDD 在逻辑上是一个 HDFS 文件在抽象是一种元素集合包含了数据。它是可被分区的分为多个分区每个分区在集群的不同节点上从而让 RDD 中的数据可以被并行操作RDD 有以下特性弹性存储弹性内存与磁盘自动切换容错弹性数据丢失可以自动恢复计算弹性计算出错有重试机制分片弹性可以根据需要重新分片分布式数据存储在大数据集群不同节点上数据集RDD 封装了计算逻辑并不保存数据所以对 RDD 的操作并不会改变数据本身改变的只是 RDD 提供的数据副本数据抽象RDD 是一个抽象类需要子类具体实现不可变RDD 可以类似看作 String 是不可改变的只能产生新的 RDD可分区、并行计算RDD 的缺陷不支持细粒度的写和更新操作Spark 写数据是粗粒度的所谓粗粒度就是批量写入数据目的是为了提高效率但是 Spark 读数据是细粒度的也就是一条一条读不支持增量迭代计算1.1.1.2 DAG有向无环图描述了 RDD 的依赖关系有向无环图并不是真正意义的图形而是由 Spark 程序直接映射成的数据流的高级抽象模型描述了 RDD 的依赖关系当 RDD 遇到 Action 算子时会将之前的所有算子形成一个 DAG 也就是 RDD Graph再在 Spark 中转化为 Job 提交到集群执行。一个 APP 中可以包含多个 Job1.1.1.3 DAGSchedulerDAGScheduler 是 Spark 中高层调度层它实现了面向阶段的调度。它将 Job 划分成一个或多个 Stage并把 Stage 分成一个或多个 Task当完成 Task 的创建后将 Task 按 TaskSet 的方式发送个 TaskScheduler如果某个阶段的任务失败DAGScheduler 会重新提交该阶段。如果某个阶段丢失了它会重新提交该阶段以及所有依赖的阶段DAGScheduler 的工作流程提交作业当用户在程序中调用一个行动操作如 count、save 等时Spark 会创建一个作业并提交给 DAGScheduler。划分阶段DAGScheduler 从最终的 RDD 出发逆向遍历 RDD 的依赖链遇到宽依赖就划分一个新的阶段。这样会得到一个或多个阶段每个阶段包含一系列连续的窄依赖转换。提交阶段DAGScheduler 按照阶段的依赖关系依次提交阶段。如果一个阶段依赖的父阶段已经执行完成那么该阶段就可以提交了。DAGScheduler 会为每个阶段创建一个任务集TaskSet每个任务对应一个分区。然后DAGScheduler 将这个任务集提交给 TaskScheduler。任务调度与执行TaskScheduler 负责将任务分配到集群的 Executor 上执行。TaskScheduler 会考虑数据本地性尽量将任务分配到数据所在的节点上。监控任务执行DAGScheduler 监控任务的执行情况。如果某个任务失败DAGScheduler 会重试该任务重试次数可配置。如果重试次数用尽或者阶段因 shuffle 数据丢失而无法计算DAGScheduler 会重新提交该阶段以及所有依赖的阶段。作业完成当所有阶段都成功执行完毕后作业完成。1.1.1.4 TaskSchedulerTaskScheduler 是 Spark 中负责将 DAGScheduler 划分出来的 TaskSet一组任务调度到集群上的组件。负责接收 DAGScheduler 提交来的 TaskSet按照一定的调度策略将任务分发到 Executor 上执行并处理任务失败的情况。1.1.1.5 SparkEnvSpark 执行环境对象其中包括与众多 Executor 指向相关的对象1.2 Cluster ManagerClusterManager 是 Spark 资源管理系统的核心组件负责分配和管理集群资源。standalone 模式中即 Master 节点控制整个集群yarn 模式中则是 JobManager1.2.1 工作流程提交应用程序用户通过spark-submit提交应用程序资源请求Driver 向 ClusterManager 请求资源启动 ExecutorClusterManager 在 Worker 节点上启动 Executor 进程任务执行Driver 将任务发送到 Executor 执行资源释放应用程序完成后释放资源1.3 WorkerSpark 的计算节点1.3.1 Executor集群中 Worker 节点上一个执行 Application 的 JVM 进程负责在 Spark 作业中运行具体任务Task任务彼此之间相互独立并负责将数据存在内存或磁盘上每个 Application 都有各自独立的一批 ExecutorSpark 应用启动时Executor 节点被同时启动并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃Spark 应用也可以继续执行会将出错节点上的任务调度到其他 Executor 节点上继续运行Executor 的两个核心功能负责运行组成 Spark 应用的任务并将结果返回给 Driver 进程它们通过自身的块管理器Block Manager为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在 Executor 进程内的因此任务可以在运行时充分利用缓存数据加速运算二、相关概念2.1 Job一个 RDD Graph 触发的作业包含多个 Task 组成的并行计算往往由 Spark Action 算子触发一个 Application 种往往会产生多个 Job一个 Job 包含多个 RDD 及作用于相应 RDD 上的各种 Operation在 SparkContext 中通过 runJob() 方法向 Spark 提交 Job2.2 Stage每个 Job 会根据 RDD 的宽依赖关系被切分成多个 Stage每个 Stage 中包含一组相同的 Task这一组 Task 也叫 TaskSet每个 Job 会被拆分成多组 Task作为一个TaskSet这个 TaskSet 就称为 StageStage 的划分和调度是由 DAGScheduler 来负责的 Stage 分为最终 Stage(Result Stage) 和非最终的 Stage(Shuffle Map Stage)Stage 的边界就是发生 Shuffle 的地方2.3 Task被送到 Executor上的一个工作单元一个分区对应一个 TaskTask 执行 RDD 中对应 Stage 中包含的算子。Task 被封装好后放入 Executor 的线程池中执行Task的调度和管理是由 TaskScheduler 负责一个 Job 包含多个 Stage一个 Stage 包含多个 Task2.4 宽依赖和窄依赖窄依赖和宽依赖的概念主要用在两个地方一个是容错中相当于 Redo 日志的功能另一个是在调度中构建 DAG 作为不同 Stage 的划分点2.4.1 宽依赖即 shuffle 依赖指父 RDD 的每个 Partition 都可能被多个子 RDD Partition 使用子 RDD Partition 通常对应所有的父 RDD Partition宽依赖的函数有 groupByKey、join(父 RDD 一个分区的数据进入到多个不同子 RDD 的分区)、partitionBy宽依赖的作用划分 Stage 的依据对于宽依赖必须等到上一阶段的计算完成才能计算下一阶段2.4.2 窄依赖窄依赖表示每一个父 RDD 的 Partition 最多被子 RDD 的一个 Partition 使用窄依赖我们形象的比喻为独生子女2.5 Spark 容错机制2.5.1 lineage(血统容错)机制如果一节点死机了而且运算窄依赖则只要把丢失的父 RDD 分区重新计算即可不依赖与其他节点没有数据计算冗余适合用于窄依赖关系。而宽依赖需要父 RDD 的所有分区都存在重算数据的开销就很大并且有冗余计算(问题节点的每个父 RDD 分区并不是都给丢失的子 RDD但数据也会计算)。2.5.2 checkpoint 机制辅助 lineage 做容错lineage 过长会造成容错成本过高这样不如在中间点做检查点容错如果之后有节点出现问题而丢失分区从做检查点的 RDD 开始重新做 lineage可以减少开销。应用场景DAG 中 lineage 过长在宽依赖上做 checkpoint 获得的收益更大三、程序提交流程大致的流程如下图所示3.1 Yarn client 模式在 Yarn client 模式下通过 spark-submit 提交程序后会在 client 服务器运行 main() 函数启动 Dirver 进程Driver 开始构建并初始化 SparkContext SparkContext 向 ClusterManagerResourceManager注册并申请运行 Executor 的资源内核和内存ClusterManager 根据 SparkContext 提出的申请和 WorkerNodeManager 的心跳报告来决定在哪个 Worker 上启动 ExecutorWorker 节点收到请求后会启动 ExecutorExecutor 向 SparkContext 注册这样 Driver 就知道哪些 Executor 运行该应用SparkContext 构建 DAG 图DAG Scheduler 将 DAG 图分解成多个 Stage 并把每个 Stage 的 TaskSet 发送给 Task Scheduler Executor 向 SparkContext 申请 Task Task Secheduler 将 Task发送给 Executor同时 SparkContext 将程序代码发送给 ExecutorTask 在 Executor 上运行把运行结果反馈给 Task Scheduler然后再反馈给 DAG Scheduler运行完毕后写入数据SparkContext 向 ClusterManager 注销并释放所有资源3.2 Yarn cluster 模式在 Yarn cluster 模式下通过 spark-submit 提交任务后会启动一个临时进程临时进程向 ClusterManagerResourceManager 通信申请启动 ApplicationMasterDriverClusterManager分配 container并通知 NodeManager 启动 ApplicationMaster此时的 ApplicationMaster 就是 DriverNodeManager 启动 DriverDriver 启动后开始运行用户 main() 函数Driver开始构建 SparkContextSparkContext 向 ClusterManager注册 Application 并申请运行 Executor 的资源ClusterManager收到 Driver 的资源申请后会分配合适的 Worker 节点Worker 节点启动 Executor 进程Executor 进程启动后会向 SparkContext 反向注册SparkContext 构建 DAG 图DAG Scheduler 将 DAG 图分解成多个 Stage 并把每个 Stage 的 TaskSet 发送给 Task Scheduler Executor 向 SparkContext 申请 Task Task Secheduler 将 Task发送给 Executor同时 SparkContext 将程序代码发送给 ExecutorTask 在 Executor 上运行把运行结果反馈给 Task Scheduler然后再反馈给 DAG Scheduler运行完毕后写入数据SparkContext 向 ClusterManager 注销并释放所有资源
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

乌克兰网站后缀网站开发实战教程

1 测试背景与目标 1.1 背景分析 数字孪生作为物理实体在虚拟空间的动态映射体,其测试复杂度远超传统软件系统。根据Gartner最新研究报告,到2027年超过70%的制造业企业将使用数字孪生技术进行流程优化,这对测试从业者提出了三大核心挑战&…

张小明 2025/12/25 13:35:53 网站建设

安防行业网站建设方案网站建设需求什么功能

还在为Alienware设备的功能限制而烦恼吗?AlienFX Tools作为一套开源工具集,为你提供了前所未有的设备控制能力。无论你是追求极致性能的游戏玩家,还是注重使用体验的创作者,这套轻量级解决方案都能让你的设备发挥出最佳状态。仅50…

张小明 2025/12/25 13:35:54 网站建设

昆明网站设计网站建设直通车关键词设置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个模拟数据库索引的B树实现案例。要求展示B树如何加速数据库查询,包括建立索引、查询过程和性能对比。提供可视化界面展示B树结构变化,并用实际数据测…

张小明 2025/12/25 13:35:52 网站建设

网站推广意义扬中网站建设效果

Conda激活Qwen-Image-Edit-2509专用环境:构建稳定高效的多模态AI推理体系 在电商运营、社交媒体内容工厂和数字广告投放等高频图像处理场景中,一个看似微小的技术决策——是否为模型创建独立运行环境——往往决定了整个自动化流程的成败。想象一下&#…

张小明 2025/12/25 13:35:55 网站建设

云南省文化馆网站建设客户管理软件app

Vue-OrgChart是一个基于Vue.js的轻量级组织结构图插件,采用创新的嵌套表格技术实现树状图表展示。作为jOrgChart的现代化升级版本,它完美解决了原项目长期未更新的问题,为企业管理系统、团队协作平台提供了简洁高效的可视化解决方案。 【免费…

张小明 2025/12/23 8:11:47 网站建设

做设计 素材网站有哪酒店网站模板设计方案

时钟信号为何是数字系统的“心跳”?从边沿触发到抖动控制的深度解析你有没有想过,为什么一块FPGA或SoC芯片能在纳秒级时间内完成成千上万次逻辑运算?答案藏在一个看似简单的波形里——时钟信号(Clock Signal)。它不像数…

张小明 2025/12/23 8:10:45 网站建设