Skip to content

Spark Operator 测验 ​

基线版本:Kubeflow 2.5.2 和 Apache operator 1.0.0 / chart 1.8.0。

1. 两种 Spark operator 之间是什么关系? ​

  • A) 同一个 chart 的重命名版本
  • B) Kubeflow 停止支持后的替代项目
  • C) 使用不同 API 和生命周期模型的独立项目
  • D) 只更改 apiVersion 就能完全兼容
显示答案

答案:C

Kubeflow 使用 sparkoperator.k8s.io/v1beta2;本章使用 Apache spark.apache.org/v1。迁移时也需要审查字段、状态和重试行为。

2. 经评审的 Apache operator 1.0.0 配套使用哪个 chart? ​

  • A) 必须使用 1.0.0
  • B) 与 Kubeflow 一样使用 2.5.2
  • C) 与 Spark 一样使用 4.2.0
  • D) 1.8.0
显示答案

答案:D

Chart 版本和应用版本彼此独立。应检查发布/chart 元数据和渲染出的资源。

3. 使用 Comet 或 Gluten 需要什么? ​

  • A) 兼容的插件、镜像、类路径和配置
  • B) 只需安装 Apache operator
  • C) 所有架构和 Spark 版本上的行为都相同
  • D) Kubeflow 永远无法运行此类工作负载
显示答案

答案:A

官方示例有额外的前置条件。仅选择 operator 并不能保证加速效果或插件兼容性。

4. 关于直接使用 spark-submit,哪项说法正确? ​

  • A) 它总是提交后即返回,不等待结果
  • B) 它可以等待并显示日志;operator 的 CR 调和是单独的功能
  • C) 它无法创建 executor Pod
  • D) 它的配置无法在 Git 中进行版本控制
显示答案

答案:B

原生提交方式提供状态、日志和 UI 访问。Operator 则增加了 CR 生命周期管理、计划任务控制器和应用重试。

5. Kubeflow 2.5.2 的 webhook.enable 默认值是什么? ​

  • A) false
  • B) 会随 Spark 版本自动更改
  • C) true
  • D) 仅在默认安装命名空间中为 true
显示答案

答案:C

示例明确指定了默认值。如果禁用,请检查依赖该准入路径的功能。

6. 经评审的两个 chart 在准入方面有什么区别? ​

  • A) 两者都安装相同的 Pod mutator
  • B) Webhook 会将 Pod 放置到节点上
  • C) Webhook 会分配 Spark 任务
  • D) Apache 不会安装与 Kubeflow 等效的 Pod 变更 webhook
显示答案

答案:D

图中展示的是 Kubeflow。Kubernetes 调度和 Spark driver 任务分配仍然是不同的职责。

7. 在 spark-jobs 命名空间运行作业需要满足什么? ​

  • A) 使监听的命名空间、作业命名空间和 RBAC 相互匹配
  • B) 所有作业都只能提交到安装命名空间
  • C) 使用 ClusterRole 后就无需考虑监听范围
  • D) 监听 default 会自动包含所有命名空间
显示答案

答案:A

安装命名空间和工作负载命名空间可以不同。默认监听范围不会自动包含新的作业命名空间。

8. Kubeflow 中自定义卷应配置在哪里? ​

  • A) 仅在 spec.driver.volumes 中
  • B) 在 spec.volumes 中定义,并通过 driver/executor.volumeMounts 挂载
  • C) 仅在 spec.executor.volumes 中
  • D) 在 status.volumes 中
显示答案

答案:B

经评审的 CRD 没有 driver.volumes 或 executor.volumes 字段。在 spec.volumes 中声明共享卷定义,再按需挂载。

9. spark-local-dir- 卷有什么特殊之处? ​

  • A) 会自动创建物理 NVMe 磁盘
  • B) 会将所有卷转换为 S3
  • C) 会将其转换为 Spark 原生本地卷配置
  • D) 必须仅通过 webhook 实现
显示答案

答案:C

通用卷 mutator 会跳过这些本地目录卷;提交配置负责处理它们。emptyDir 本身并不会选择物理存储。

10. Kubeflow 2.5.2 中哪些 serviceAccount 字段有效? ​

  • A) 仅 driver.serviceAccount
  • B) 仅 executor.serviceAccount
  • C) 两者都必须包含 AWS IAM ARN
  • D) driver.serviceAccount 和 executor.serviceAccount 都有效
显示答案

答案:D

两个字段都指定 Kubernetes service account。API RBAC 和 AWS 数据权限需分别配置。

11. 如何安排 ScheduledSparkApplication 每天在 UTC 02:00 运行? ​

  • A) 设置 schedule: "0 2 * * *" 并将 timeZone 设为 UTC
  • B) 始终依赖控制器本地时间
  • C) 不支持 timeZone
  • D) 只设置 executor Pod 的 TZ
显示答案

答案:A

2.5.2 版本支持 timeZone,默认值为 Local。明确指定计划时区可避免依赖控制器环境。

12. concurrencyPolicy: Forbid 会阻止什么? ​

  • A) 所有系统中的重复写入
  • B) 某个计划资源的上一次运行与下一次计划运行重叠
  • C) 所有应用重试
  • D) 所有手动提交
显示答案

答案:B

其他调度器、手动运行和重试仍可能造成重复副作用。应设计幂等或事务性输出。

13. suspend: true 会做什么? ​

  • A) 必然终止当前运行的子作业
  • B) 回滚已写入的数据
  • C) 停止未来的计划触发
  • D) 删除 operator 部署
显示答案

答案:C

应单独检查或终止当前运行。挂起并不等于数据回滚或备份。

14. 只将 sparkVersion 更改为 4.2.0 能保证什么? ​

  • A) 控制器运行时会自动升级
  • B) 与每个 Spark 插件兼容
  • C) Kubernetes 会自动升级
  • D) 不能保证控制器的 spark-submit 已升级
显示答案

答案:D

Kubeflow 实验与其控制器提交运行时 4.0.4 保持一致。其他提交器/工作负载组合需要单独测试。

15. Operator 会监控哪些 Pod 状态? ​

  • A) driver 和 executor 都会监控
  • B) 仅监控 driver
  • C) 仅监控 executor
  • D) 不监控 Pod 状态
显示答案

答案:A

控制器还会更新 executor 状态并执行清理。Spark driver 会请求 executor 并分配 Spark 任务。

16. 使用 OnFailure 重试时,重要的是什么? ​

  • A) 会自动实现恰好一次写入
  • B) 应用重新运行可能会重复产生输出副作用
  • C) 只会重启同一个容器
  • D) 每个失败的外部事务都会回滚
显示答案

答案:B

提交/应用尝试与容器重启是不同概念。除了重试次数和间隔,还要验证数据语义。

17. IRSA 和 EKS Pod Identity 有什么区别? ​

  • A) 两者都只需要相同的注释
  • B) Kubernetes Role 会授予 S3 访问权限
  • C) IRSA 使用 OIDC/角色注释;Pod Identity 使用关联关系及其 Agent
  • D) S3 URI 会完成身份验证
显示答案

答案:C

应配置 AWS 权限、信任关系或关联,以及兼容的凭证提供程序。还要在实际 Pod 中验证生效的身份和访问权限。

18. Chart 默认在 8080 上提供的 Prometheus 端点会暴露什么? ​

  • A) 自动收集每个 Spark JVM 的 JMX 指标
  • B) 所有 Spark History Server 日志
  • C) S3 数据验证结果
  • D) Operator 指标
显示答案

答案:D

工作负载 JMX 需要单独配置应用 exporter JAR、配置和抓取方式。

19. Helm 升级时应如何处理 CRD? ​

  • A) 检查 CRD 迁移,并显式启用 hook.upgradeCrd
  • B) 普通 helm upgrade 总会替换 CRD
  • C) 始终先删除现有 CRD
  • D) CRD 不会影响应用资源
显示答案

答案:A

普通升级不会自动替换 crds/ 中的 CRD。删除 CRD 会影响其自定义资源,不应作为常规升级步骤。

20. Helm 渲染成功并通过 CRD 检查能证明什么? ​

  • A) 已证明实时 webhook 连通性
  • B) 已验证资源形状和配置路径;实际工作负载是否成功需要另行检查
  • C) 已证明 S3 访问和数据正确性
  • D) 已证明与所有 Spark 版本兼容
显示答案

答案:B

还要检查实际 Pod、状态、输出、重试行为和权限。仅有 COMPLETED 并不能证明外部数据正确。

正文 / Guide

向文档提问

按 Enter 发送,按 Shift+Enter 换行。