Модуль Pod для определения допусков при запуске Spark на Kubernetes - PullRequest
0 голосов
/ 30 сентября 2019

У меня возникают некоторые проблемы при попытке запуска заданий Spark с помощью планировщика Kubernetes.

Я хочу, чтобы все мои модули драйверов / исполнителей появлялись на узлах, которые имеют определенный вред. Из-за этого я хочу указать допуски, которые будут напрямую вставлены в файлы конфигурации модулей. В настоящее время нет способа по умолчанию непосредственно из команды spark-submit

. В соответствии с this и this пользователь должен иметь возможность указать шаблон модуля, который можетустановить следующие параметры: spark.kubernetes.driver.podTemplateFile и spark.kubernetes.executor.podTemplateFile.

Я попытался указать эти параметры в команде spark-submit в следующем файле:

pod_template.template

apiVersion: v1
kind: Pod
spec:
  tolerations:
  - effect: NoSchedule
    key: dedicated
    operator: Equal
    value: test

Однако это допуск никогда не добавляется в запущенный модуль драйвера. В настоящее время способ решить эту проблему?

Для справки, вот полная команда spark-submit: /opt/spark/bin/spark-submit --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.options.claimName=pvc-storage --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.mount.subPath=test-stage1/spark --conf spark.executor.memory=1G --conf spark.executor.instances=1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.mount.subPath=test-stage1/spark --conf spark.kubernetes.executor.limit.cores=1 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace=test-stage1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.mount.path=/persistent --conf spark.kubernetes.driver.limit.memory=3G --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.mount.path=/persistent --conf spark.submit.deployMode=cluster --conf spark.kubernetes.container.image=<SPARK IMAGE> --conf spark.master=k8s://https://kubernetes.default.svc --conf spark.kubernetes.driver.limit.cores=1 --conf spark.executor.cores=1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.options.claimName=pvc-storage --conf spark.kubernetes.container.image.pullPolicy=Always --conf spark.kubernetes.executor.podTemplateFile=//opt/pod_template.template --conf spark.kubernetes.driver.podTemplateFile=//opt/pod_template.template local:///opt/spark/examples/src/main/python/pi.py 100

1 Ответ

0 голосов
/ 04 октября 2019

Я проверил различные документы и нашел несколько вещей, которые могут быть неправильно настроены здесь:

  1. Ваш pod_template.template должен иметь .yaml в конце
  2. Вы не указалиspark.kubernetes.driver.pod.name в вашей команде spark-submit и в pod_template.template.yaml в форме metadata
  3. Вы использовали двойной // при указании пути для spark.kubernetes.driver.podTemplateFile= и spark.kubernetes.executor.podTemplateFile=
  4. Вы должны указать все свои допуски в "", например: effect: "NoSchedule"

Пожалуйста, дайте мне знать, если это помогло.

...