将Spark计算任务从Yarn迁移至K8S上运行。# 最初的尝试spark-thrift-server考虑到我们服务的客户数据量都不是很大,并且在数据相关的场景中都是基于SQL来实现。上半年我们在离线业务中首先选择了spark-thrift-ser... NodePort两种类型方便本地测试```yamlapiVersion: v1kind: Servicemetadata: name: spark-thrift-server-test namespace: defaultspec: ports: - name: thrift-server-tcp-10000 port: 10000...
> 本文整理自火山引擎基础架构研发工程师陶克路、王正在 ApacheCon Asia 2022 上的演讲。文章主要介绍了 Apache Zeppelin 支持 Flink 和 Spark 云原生实践。作者|火山引擎云原生计算研发工程师-陶克路、火山引擎... **元数据存储**:Zeppelin 包含多种元数据,其中重要的元数据 Notebook 可以支持本地文件的存储、远程存储、对象存储等;在扩展之后能够支持火山引擎 TosNotabookRepo 的对象存储;另外一种存储则需要借助 K8s 里的...
字节跳动拥有业界领先的 Spark 业务规模,每天运行数百万的离线作业,占有资源量数百万核,GPU 数万张卡,总集群规模节点也达到了上万台。如此大规模的 Spark 负载意味着要实现 Spark 彻底原生化不是一件容易的事情。以下是我们在实践中思考的问题。Spark 作业部署是 Standalone 的静态部署还是 K8s Native 动态部署,是否使用 Operator?在 K8s 上如何实现 Spark 作业的租户级别资源管控,在作业提交时进行管控还是在 Pod 创建时进行管...
**LAS Spark架构图如下所示,**整体基于Spark On K8S的云原生架构,底层容器服务为VCI,支持极致高效的弹性伸缩能力, **并且可按需付费,减少非必要开销,降低成本。** ![picture.image](https://p3-volc-c... RowGroup2中的a列分布在[1, 99],对于过滤条件a=10,无法过滤任何一个RowGroup,需要读取整个文件数据。 为此,我们引入LocalSort。Spark引擎会在数据写入Parquet文件之前基于指定字段做一次本地排序,这样能将...
在火山引擎的实践过程中,我们通过裁剪只包含 Flink 和 Spark 的部分,同时利用 Docker 镜像的多阶段构建技术,达到镜像缩小、体积缩小的目的,实现镜像层数的缩减;* **元数据** **存储**:Zeppelin 包含多种元数据,其中重要的元数据 Notebook 可以支持本地文件的存储、远程存储、对象存储等;在扩展之后能够支持火山引擎 TosNotabookRepo 的对象存储;另外一种存储则需要借助 K8s 里的 Persistent Volume 机制,将一块磁盘/云盘,映...
字节跳动拥有业界领先的 Spark 业务规模,每天运行数百万的离线作业,占有资源量数百万核,GPU 数万张卡,总集群规模节点也达到了上万台。如此大规模的 Spark 负载意味着要实现 Spark 彻底原生化不是一件容易的事情。以下是我们在实践中思考的问题。Spark 作业部署,是 Standalone 的静态部署还是 K8s Native 动态部署,是否使用 Operator?在 K8s 上如何实现 Spark 作业的租户级别资源管控,在作业提交时进行管控,还是在 Pod 创建时进行...
本文主要介绍在 VKE 集群中安装 Spark Operator,并使用 VCI 运行 Spark 数据处理任务的操作。 背景信息本文将使用 Kubernetes 原生 Spark Operator 方式,介绍使用 VCI 运行 Spark 任务的操作。主要流程如下: 创建集群 连接集群 安装 spark-operator 测试 spark-operator 如果您需要使用更多 VCI 的高级功能,可以通过设置 Annotation(注解)对 VCI 进行参数配置。详情请参见 Pod Annotation 说明。 前提条件本地已安装 kubectl 工具...
kubernetes官方表示单个kubernetes集群能稳定运行的机器节点规模在5K左右,超出规模之后kubernetes的存储系统、pod调度性能、容器请求路由性能等都会受到影响。另外在大规模集群管理上,也会存在很多其他问题,比如多集群管理、多租户、事件异常追踪等。开源项目KubeWharf就是用来解决管理和使用大规模kubernetes集群面临的各种问题的,接下来和大家分享一下自己对KubeWharf的各个子项目的理解。## 1.kubebrain 当k8s集群规模...
这种运行模式对于 YARN 来说是没有问题的,因为 YARN 的吞吐非常高。但是随着我们内部业务从 YARN 迁移到 K8s 集群的时候发现,MapReduce 作业经常会触发 API Server 报警,影响 K8s 集群的稳定性,一个 MapReduce 任务跑完经常需要申请 10w 个以上的 POD;而同样规模的 Spark 作业可能仅需要几千个 POD,因为 Spark 作业内部还有一层调度,Spark 申请到的 Container 作为 Executor 不会在跑完一个 Task 后推出,而是由 Spark 框架调度新...
这种运行模式对于 YARN 来说是没有问题的,因为 YARN 的吞吐非常高。但是随着我们内部业务从 YARN 迁移到 K8s 集群的时候发现,MapReduce 作业经常会触发 API Server 报警,影响 K8s 集群的稳定性,一个 MapReduce 任务跑完经常需要申请 10w 个以上的 POD;而同样规模的 Spark 作业可能仅需要几千个 POD,因为 Spark 作业内部还有一层调度,Spark 申请到的 Container 作为 Executor 不会在跑完一个 Task 后推出,而是由 Spark 框架调度新...
Spark on K8S- Kyuubi:Spark SQL Gateway- CatalogService:湖仓一体元数据架构实践- LAS Batch Scheduler:云原生批处理调度器- UIService:云原生 Spark History Server- Falcon:Remote Shuffle... 确保了不同租户的 Spark 任务之间的资源公平分配。基于 Kyuubi,LAS 提供了简单易用的接口,用户可以通过 JDBC/ODBC 客户端或者 LAS Console 进行交互,可以轻松地在 LAS 上运行 Spark SQL 查询。为了能够适配更多类...
本文会逐个展开此类问题并介绍在字节跳动的优化实践。 **External Shuffle Service**首先来看,在 Spark 3.0 及最新的 Spark 3.3 中,External Shuffle Service(以下简称 ESS)是如何完成 Shuffle 任务的?如下图,每一个 Map Task,从 Mapper 1 到 Mapper M 都会在本地生成属于自己的 Shuffle 文件。这个 Shuffle 文件内部由 R 个连续的数据片段组成。每一个 Reduce Task 运行时都会分别连接所有的 Task,从 Ma...
Spark on K8S- Kyuubi:Spark SQL Gateway- CatalogService:湖仓一体元数据架构实践- LAS Batch Scheduler:云原生批处理调度器- UIService:云原生 Spark History Server- Falcon:Remote Shuffle... 确保了不同租户的 Spark 任务之间的资源公平分配。基于 Kyuubi,LAS 提供了简单易用的接口,用户可以通过 JDBC/ODBC 客户端或者 LAS Console 进行交互,可以轻松地在 LAS 上运行 Spark SQL 查询。为了能够适配更多类...