apache-spark - Google Cloud Kubernetes 集群上的 Spark - 不断驱逐执行者:工作人员已注册并拥有足够的资源
问题描述
我已按照以下说明进行操作,除了 minicube,我使用了 Google Cloud Platform Kubernetes 集群:(Spark 2.3.2)
当我提交火花作业时:
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://spark-master:7077 \
--executor-memory 471859200 \
--total-executor-cores 20 \
--deploy-mode cluster \
/opt/spark/examples/jars/spark-examples_2.11-2.3.2.jar \
10
或者简单地使用以下命令打开 Spark shell:
/opt/spark/bin/spark-shell --master spark://spark-master:7077
sc.makeRDD(List(1,2,4,4)).count
我不断收到以下警告消息:
2020-04-18 21:14:38 WARN TaskSchedulerImpl:66 - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2020-04-18 21:14:53 WARN TaskSchedulerImpl:66 - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
在 Spark UI 上,我可以看到我的所有 Worker 节点,我可以通过以下方式轻松控制:
kubectl scale deployment spark-worker --replicas 2 (or any other number, works fine)
我在 Spark UI 上看到一个新的正在运行的应用程序,它保留在现有的执行程序上。我看到它上升到 309 个执行程序,然后我从 Spark UI 中终止了这项工作。
本地模式运行成功:
/opt/spark/bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] /opt/spark/examples/jars/spark-examples_2.11-2.3.2.jar 10
我从 Master Kubernetes pod 触发所有 spark 提交:
kubectl exec -it spark-master-dc7d76bf5-dthvn bash
我究竟做错了什么?请让我知道您希望我提供哪些其他系统详细信息。谢谢。
编辑:添加 Executors 的 Spark UI 截图:
工作人员日志:https ://drive.google.com/file/d/1xU07m_OB1BEzJXyJ30WzvA5vcrpVmxYj/view?usp=sharing
主日志: K8 主日志上的火花
解决方案
嗨,问题可能是因为在 spark 提交上设置了执行程序实例的数量。当我们给 1 作为 executor 的数量时,驱动程序将在该 executor 上运行,对于所有其他任务,将不会有任何 executor 运行。我们需要给 Num executors 至少 2 个,以便驱动程序将在一个执行程序上运行,而工作人员将获得另一个。
我最初使用如下,在更改执行者数量后它起作用了。
bin/spark-submit --name test --master k8s://https://*****:6443 --deploy-mode cluster --class com.classname --conf spark.kubernetes.driver.pod。 name=test --conf spark.kubernetes.authenticate.submission.caCertFile=/etc/kubernetes/pki/ca.crt --conf spark.kubernetes.authenticate.driver.caCertFile=/etc/kubernetes/pki/ca.crt - -conf spark.kubernetes.authenticate.executor.caCertFile=/etc/kubernetes/pki/ca.crt --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace=default --conf spark .executor.instances=3 --conf spark.kubernetes.container.image=spark:latest --conf spark.dynamicAllocation.enabled=false --conf spark.shuffle.service.enabled=false --conf spark.kubernetes.driver.limit.cores=1 --conf spark.kubernetes.executor.limit.cores=1 local:///opt/spark/examples/jars/examplejar.jar
推荐阅读
- reactjs - 子路由,不起作用 React Router with Lazy Loading
- python - 如何在 Python 中查询加密的 System.Data.SQLite?
- c - 应用程序崩溃时如何在 char linux 驱动程序中执行操作
- flutter - 在flutter中点击容器更新弹出列表
- spreadsheet - 电子表格缺少相应单元格的数据
- reload - 斯巴达克斯,取消失败后刷新订单
- python - Python statsmodel 中的 GLM 残差
- vba - 如何返回特定整数的值?
- c - 如何在运行时读取共享库数据段开头的绝对加载地址?
- python - 暂停 selenium 脚本,直到我按下键盘上的 Enter