Spark / k8s: как запустить spark submit на Kubernetes в режиме клиента - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь использовать spark-submit с режимом client в модуле kubernetes для отправки заданий в EMR (из-за некоторых других проблем с инфраструктурой мы не разрешаем режим cluster). По умолчанию spark-submit использует hostname модуля в качестве spark.driver.host, а hostname - имя хоста модуля, поэтому spark executor не может его разрешить. И spark.driver.port также локально для стручка (контейнера).

Я знаю способ передать некоторые конфы spark-submit, чтобы spark executor мог общаться с driver, эти конфиги:

--conf spark.driver.bindAddress=0.0.0.0 --conf spark.driver.host=$HOST_IP_OF_K8S_WORKER --conf spark.driver.port=32000 --conf spark.driver.blockManager.port=32001

и создать службу в kubernetes, чтобы spark executor мог общаться с driver:

apiVersion: v1
kind: Service
metadata:
  name: spark-block-manager
  namespace: my-app
spec:
  selector:
    app: my-app
  type: NodePort
  ports:
    - name: port-0
      nodePort: 32000
      port: 32000
      protocol: TCP
      targetPort: 32000
    - name: port-1
      nodePort: 32001
      port: 32001
      protocol: TCP
      targetPort: 32001
    - name: port-2
      nodePort: 32002
      port: 32002
      protocol: TCP
      targetPort: 32002

Но проблема в том, что на одном k8s может работать более 1 модуля. рабочий и даже более 1 spark-submit рабочих мест в одном пакете. Поэтому, прежде чем запускать модуль, нам нужно динамически выбрать несколько доступных портов в узле k8s и создать службу для сопоставления портов, а затем во время запуска модуля передать эти порты в модуль, чтобы сообщить spark-submit об их использовании. Я чувствую, что это немного сложно.

Использование hostNetwork: true потенциально может решить эту проблему, но это приводит к множеству других проблем в нашей инфраструктуре, поэтому это не вариант.

Если spark-submit может поддерживать концепцию bindPort точно так же, как driver.bindAddress и driver.host или поддержку proxy, решение проблемы будет чище.

Есть ли у кого-нибудь похожая ситуация? Пожалуйста, поделитесь некоторыми идеями.

Спасибо.

Дополнительный контекст: spark version: 2.4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...