【甘道夫】Spark1.3.0 Cluster Mode Overview 官方文档精华摘要

本文详细解读了Spark集群架构中的关键组件及其运行原理,包括Driver Program、Cluster Manager、Executor等,并介绍了如何通过spark-submit脚本提交应用程序到不同类型的Cluster Manager。此外,文章还阐述了Spark应用程序的监控机制、资源分配控制以及术语定义,旨在为读者提供全面的Spark知识框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言
由于工作需要,即将拥抱Spark,曾经进行过相关知识的学习,现在计划详细读一遍最新版本Spark1.3的部分官方文档,一是复习,二是了解最新进展,三是为公司团队培训做储备。

欢迎转载,请注明出处:
http://blog.youkuaiyun.com/u010967382/article/details/45062323

该文档重点介绍了Spark集群架构中的各个关键组件,对于我们理解Spark的运行原理至关重要。

文档内容主要是在解释下图,及相关术语:

Spark cluster components
上图的核心概念描述如下:
  1. Spark应用程序以一组独立进程的形式运行在集群中,应用程序的main方法中的SparkContext对象负责调度控制这一组独立进程的合作,这个包含main方法的程序叫Driver Program
  2. Cluster Manager为运行在集群中的应用程序分配资源。SparkContext对象可以连接多种类型的Cluster Manager,包括Spark自带的standalone cluster manager,或者Mesos/YARN
  3. 一旦SparkContext对象成功连接Cluster Manager,Spark应用程序就可以获取到集群中各个节点上的executor,这些executor将为你的应用执行计算任务和存储数据;
  4. 接下来,SparkContext将分发应用程序代码到各个executor上;
  5. 最后,SparkContext将分发tasks到各个executor上去运行。

在这个运行架构中,有一些需要注意的要点:
  • 每个应用程序都有它自己的一组executor进程,这组executor进程在应用的全生命周期内运行,负责以多线程方式运行自己分配到的task。这样做的好处是可以隔离不同的应用程序。然而,这也意味着,数据不能跨应用程序(SparkContext的实例)共享,除非将数据写入一个外部的存储系统(比如Tachyon?)。
  • 因为driver程序负责调度在集群上运行的tasks,所以driver应该贴近worker节点运行,最好在相同的局域网内,否则两者相隔较远的话,driver和worker之间的通信会对程序执行带来影响。

Spark支持三种类型的Cluster Manager:
  • Standalone – Spark自带的相对简单的集群管理器;
  • Apache Mesos – 一个通用的集群管理器,它同时也可以运行Hadoop MR程序和其它服务应用;
  • Hadoop YARN – Hadoop2.0中的资源管理器。

我们可以通过spark-submit脚本提交应用程序到任意一类Cluster Manager上。


Spark应用程序的监控:每一个driver程序都有一个web UI,经典的在4040端口,展示了正在运行的task、executors和存储情况的相关信息。我们可以简单的通过http://<driver-node>:4040在浏览器中进入web UI,如下图:


注意,这里的地址是driver-node,不是master node。


Spark的资源分配控制同时在两个级别进行:

  • 跨应用程序级别(在Cluster Manager级别);
  • 应用程序内部级别(如果多个计算任务同时在一个SparkContext上发生)。


最后是术语表,尤其重要,务必理解熟记

Term Meaning
Application User program built on Spark. Consists of a driver program and executors on the cluster.
Application = 一个driver + 多个executor
Application jar A jar containing the user's Spark application. In some cases users will want to create an "uber jar" containing their application along with its dependencies. The user's jar should never include Hadoop or Spark libraries, however, these will be added at runtime.
应用程序jar文件某些情况下会包含所有的依赖包,但是千万不要包含Hadoop或者Spark的依赖库,这些依赖库在程序运行时会添加。
Driver program The process running the main() function of the application and creating the SparkContext
运行main()方法创建SparkContext实例的进程。
Cluster manager An external service for acquiring resources on the cluster (e.g. standalone manager, Mesos, YARN)
一个外部服务,用于获取集群资源,例如standalone manager, Mesos, YARN
Deploy mode Distinguishes where the driver process runs. In "cluster" mode, the framework launches the driver inside of the cluster. In "client" mode, the submitter launches the driver outside of the cluster.
区分driver进程运行在哪里:
  • 在cluster模式中,Spark框架在集群中启动driver进程。
  • 在client模式中,submitter在集群外启动driver进程。
Worker node Any node that can run application code in the cluster
可以运行application代码的集群节点。
Executor A process launched for an application on a worker node, that runs tasks and keeps data in memory or disk storage across them. Each application has its own executors.
为运行application在worker nodes上启动的线程,这些线程负责运行tasks,及保存数据在内存或磁盘。
每一个applicaiton都有自己的一组executor!
Task A unit of work that will be sent to one executor
一个工作单元,将被发送到executor上。
Job A parallel computation consisting of multiple tasks that gets spawned in response to a Spark action (e.g. save,collect); you'll see this term used in the driver's logs.
Spark action(例如save,collect)触发的一系列并行计算tasks。
Stage Each job gets divided into smaller sets of tasks called stages that depend on each other (similar to the map and reduce stages in MapReduce); you'll see this term used in the driver's logs.
每一个job将分为很多组task,每一组task称为一个stage,这些stage相互依赖。类似于MapReduce计算模型中的map和reduce stage。
基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值