Spark:同时从具有不同内存/核心配置的单个 JVM 作业启动

2024-03-18

问题解释

假设您有带有独立管理器的 Spark 集群,其中作业通过SparkSession在客户端应用程序中创建。客户端应用程序在 JVM 上运行。为了提高性能,您必须使用不同的配置启动每个作业,请参阅职位类型示例 below.

问题是您无法从单个 JVM 创建两个会话 https://stackoverflow.com/questions/40153728/multiple-sparksessions-in-single-jvm.

那么如何同时启动具有不同会话配置的多个 Spark 作业呢?

通过不同的会话配置我的意思是:

  • spark.executor.cores
  • spark.executor.memory
  • spark.kryoserializer.buffer.max
  • spark.scheduler.pool
  • etc

我的想法

解决问题的可能方法:

  1. 为同一个 Spark 作业中的每个 Spark 作业设置不同的会话配置SparkSession. 是否可以?
  2. 启动另一个 JVM 只是为了启动另一个SparkSession,我可以称之为 Spark 会话服务。但你永远不知道将来会同时启动多少个具有不同配置的作业。目前 - 我一次只需要 2-3 个不同的配置。可能足够了,但不够灵活。
  3. 使用相同的配置为各种作业创建全局会话。但这种做法从性能角度来看是底部。
  4. 仅将 Spark 用于繁重的作业,并在 Spark 之外运行所有快速搜索任务。但这是一团糟,因为您需要让另一个解决方案(例如 Hazelcast)与 Spark 并行,并在它们之间分配资源。此外,这给所有人带来了额外的复杂性:部署、支持等。

职位类型示例

  1. 转储巨大的数据库任务。它的 CPU 低但 IO 密集型长时间运行任务。因此,您可能希望在每个执行器的内存和核心数较低的情况下启动尽可能多的执行器。
  2. 繁重的处理转储结果任务。它是 CPU 密集型的,因此您将在每台集群机器上启动一个执行程序,并具有最大的 CPU 和内核数。
  3. 快速检索数据任务,每台机器需要一个执行器和最少的资源。
  4. 介于 1-2 和 3 之间的值,其中作业应占用一半的集群资源。
  5. etc.

Spark 独立版为应用程序使用简单的 FIFO 调度程序。默认情况下,每个应用程序都使用集群中的所有可用节点。每个应用程序、每个用户或全局的节点数量可以受到限制。其他资源,例如内存、CPU 等可以通过应用程序的 SparkConf 对象进行控制。

Apache Mesos 有主进程和从属进程。主服务器向应用程序(在 Apache Mesos 中称为框架)提供资源,应用程序要么接受,要么不接受。因此,声明可用资源和运行作业是由应用程序本身决定的。 Apache Mesos 允许对系统中的资源(例如 CPU、内存、磁盘和端口)进行细粒度控制。 Apache Mesos 还提供对资源的粗粒度控制,其中 Spark 提前为每个执行器分配固定数量的 CPU,这些 CPU 直到应用程序退出时才会释放。请注意,在同一集群中,某些应用程序可以设置为使用细粒度控制,而其他应用程序则设置为使用粗粒度控制。

Apache Hadoop YARN 的 ResourceManager 包含两个部分:调度程序和应用程序管理器。调度程序是一个可插入组件。提供了两种实现:CapacityScheduler(在多个组织共享的集群中非常有用)和 FairScheduler(确保所有应用程序平均获得相同数量的资源)。两个调度程序都将应用程序分配到队列,每个队列获取在它们之间平等共享的资源。在队列中,资源在应用程序之间共享。 ApplicationsManager 负责接受作业提交并启动应用程序特定的ApplicationsMaster。在本例中,ApplicationsMaster 是 Spark 应用程序。在 Spark 应用程序中,资源在应用程序的 SparkConf 对象中指定。

对于您的独立情况,这是不可能的,可能有一些前提解决方案,但我还没有遇到过

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark:同时从具有不同内存/核心配置的单个 JVM 作业启动 的相关文章

  • Java 中的 <-- 是什么? [复制]

    这个问题在这里已经有答案了 我遇到了下面的片段 它输出到4 3 2 1 我从来没有遇到过 lt 在爪哇 Is lt 使 var1 的值变为 var2 的运算符 public class Test public static void mai
  • 以相反的顺序打印任何集合中的项目?

    我在 使用 Java 进行数据结构和问题解决 一书中遇到以下问题 编写一个例程 使用 Collections API 以相反的顺序打印任何 Collection 中的项目 不要使用 ListIterator 我不会把它放在这里 因为我想让有
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • JAXB - 忽略元素

    有什么方法可以忽略 Jaxb 解析中的元素吗 我有一个很大的 XML 文件 如果我可以忽略其中一个大而复杂的元素 那么它的解析速度可能会快很多 如果它根本无法验证元素内容并解析文档的其余部分 即使该元素不正确 那就更好了 例如 这应该只生成
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • Spark DataFrame 序列化为无效 json

    TL DR 当我倾倒 Spark 时DataFrame作为 json 我总是得到类似的结果 key1 v11 key2 v21 key1 v12 key2 v22 key1 v13 key2 v23 这是无效的 json 我可以手动编辑转储
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • titledBorder 标题中的图标

    您好 是否可以在 titledBorder 的标题中放置一个图标 例如以下代码 import java awt GridLayout import javax swing JFrame import javax swing JLabel i
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐