Spark on k8s 试用步骤

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 背景:Spark 2.3.0 开始支持使用k8s 作为资源管理原生调度spark。使用k8s原生调度的spark主要有以下好处: 采用k8s原生调度,不再需要二级调度,直接使用k8s原生的调度模块,实现与其他应用的混布;资源隔离:任务可以提交到指定的namespace,这样可以复用k8s原生的qo.

背景:
Spark 2.3.0 开始支持使用k8s 作为资源管理原生调度spark。使 用k8s原生调度的spark主要有以下好处:

采用k8s原生调度,不再需要二级调度,直接使用k8s原生的调度模块,实现与其他应用的混布;
资源隔离:任务可以提交到指定的namespace,这样可以复用k8s原生的qouta限制,实现任务资源的限制;
资源分配:可以指定每个spark任务的指定资源限制,任务之间更加隔离;
用户自定义:用户可以在spark基础镜像中打上自己的application, 更加灵活和方便;
试用条件:
一个k8s 1.7版本以上的集群,由于spark on k8s 任务提交后实际上在集群中是以custom resources和custom controller的形式,故你需要一个1.7+版本的k8s集群,同时需要启动k8s dns和RBAC。
下载spark2.3.0版本https://www.apache.org/dyn/closer.lua/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz
试用步骤:
制作镜像:
以下为基础镜像,包含了spark和官方exemples,本文的试用使用的是该官方的exemple。

cd /path/to/spark-2.3.0-bin-hadoop2.7
docker build -t <your.image.hub/yourns>/spark:2.3.0 -f kubernetes/dockerfiles/spark/Dockerfile .
docker push <your.image.hub/yourns>/spark:2.3.0

用户可以将自己的application和该基础镜像打在一起,并设置启动main class以及application的路径就可以实现用户application的任务提交。

任务提交:

bin/spark-submit \
    --master k8s://<k8s apiserver address> \
    --deploy-mode cluster \
    --name spark-pi \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.executor.instances=5 \
    --conf spark.kubernetes.container.image=<your.image.hub/yourns>/spark:2.3.0 \
    local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar

更多默认的参数配置请参考:1.spark running on k8s
注意以下坑:

spark 自带的exemples是用jdk1.8编译的,如果启动过程中提示Unsupported major.minor version 52.0请更换jdk版本;
spark-submit默认会去~/.kube/config去加载集群配置,故请将k8s集群config放在该目录下;
spark driver 启动的时候报错Error: Could not find or load main class org.apache.spark.examples.SparkPi
spark 启动参数的local://后面应该跟你自己的spark application在容器里的路径;
spark driver 启动抛异常Caused by: java.net.UnknownHostException: kubernetes.default.svc: Try again, 请保证 k8d let节点间网络互通;
spark driver 启动抛异常system: serviceaccount: default: default" cannot get pods in the namespace "default, 权限问题,执行一下两条命令:
kubectl create rolebinding default-view --clusterrole=view --serviceaccount=default:default --namespace=defalut 和
kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default --namespace=default 后就可以了
任务执行:
spark demo跑了起来后,可以看到spark-submit相当于起了一个controller, 用于管理单个spark任务,首先会创建该任务的service和driver,待driver运行后,会启动exeuctor,个数为--conf spark.executor.instances=5 指定的参数,待执行完毕后,submit会自动删除exeuctor, driver会用默认的gc机制清理。

Reference:
spark running on k8s 
issue #34377

本文转自CSDN-Spark on k8s 试用步骤

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Kubernetes 固态存储 容器
pulsar on k8s
pulsar on k8s
|
2月前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
87 1
|
6月前
|
存储 Kubernetes Apache
pulsar on k8s 部署验证
pulsar on k8s 部署验证
|
5月前
|
分布式计算 Kubernetes Spark
大数据之spark on k8s
大数据之spark on k8s
196 2
|
6月前
|
分布式计算 Kubernetes 监控
容器服务Kubernetes版产品使用合集之怎么实现把 spark 跑在k8s
容器服务Kubernetes版,作为阿里云提供的核心服务之一,旨在帮助企业及开发者高效管理和运行Kubernetes集群,实现应用的容器化与微服务化。以下是关于使用这些服务的一些建议和合集,涵盖基本操作、最佳实践、以及一些高级功能的使用方法。
|
6月前
|
分布式计算 DataWorks API
DataWorks产品使用合集之在DataWorks中,通过spark访问外网的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
166 0
|
6月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。
|
6月前
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
274 0
|
6月前
|
分布式计算 Kubernetes Java
spark on k8s native
spark on k8s native
|
19天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
53 2
ClickHouse与大数据生态集成:Spark & Flink 实战

推荐镜像

更多