Как записывать журналы Spark в S3 при использовании Kubernetes (EKS)? Ошибка: нераспознанная опция: --spark.kubernetes.driver.secretKeyRef.AWS_ACCESS_KEY_ID - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь отправить работу Spark в Kubernetes и записать логи на S3. Я использую EKS и режим клиента Spark

Я могу записывать свои журналы Spark в локальный каталог, например, работает ниже:

bin/spark-submit \
--master k8s://https://<k8s-master>:443 \
--deploy-mode client \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=5 \
--conf spark.eventLog.enabled=true \
--conf spark.eventLog.dir=file:/tmp/spark_data \
--conf spark.kubernetes.container.image=gcav66/spark:spark-gus \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
file:///home/gus/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.4.4.jar 

Я хотел бы хранить журналы в ведро S3. Основываясь на документации Spark (https://spark.apache.org/docs/latest/running-on-kubernetes.html#secret -management ), я пытаюсь передать свои AWS ключи доступа и секретного ключа через spark.kubernetes.driver.secretKeyRef.[EnvName]

bin/spark-submit \
--master k8s://https://<k8s-master>:443 \
--deploy-mode client \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=3 \
--conf spark.eventLog.enabled=true \
--conf spark.eventLog.dir=s3a://<my-bucket> \
--conf spark.history.fs.logDirectory=s3a://<my-bucket> \
--conf spark.kubernetes.container.image=gcav66/spark:spark-gus \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--spark.kubernetes.driver.secretKeyRef.AWS_ACCESS_KEY_ID=aws-secrets:key \
--spark.kubernetes.driver.secretKeyRef.AWS_SECRET_ACCESS_KEY=aws-secrets:secret \
--spark.kubernetes.executor.secretKeyRef.AWS_ACCESS_KEY_ID=aws-secrets:key \
--spark.kubernetes.executor.secretKeyRef.AWS_SECRET_ACCESS_KEY=aws-secrets:secret \
file:///home/gus/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.4.4.jar 

Ошибка, которую я получаю это: Error: Unrecognized option: --spark.kubernetes.driver.secretKeyRef.AWS_ACCESS_KEY_ID

У меня есть переменная окружения AWS_ACCESS_KEY_ID, и я создал секрет Kubernetes через kubectl create secret generic aws-secrets --from-file=aws-access-key --from-file=aws-secret-key

$ kubectl get secret
NAME                                                    TYPE                                  DATA   AGE
aws-secrets                                             Opaque                                2      8h

Я не думаю, что у меня есть опечатка - любая идеи?

1 Ответ

1 голос
/ 01 марта 2020

Вам нужно передать конфиги с --conf:

Вы делаете: --spark.kubernetes.driver.secretKeyRef.AWS_ACCESS_KEY_ID=aws-secrets:key

Вам необходимо: --conf spark.kubernetes.driver.secretKeyRef.AWS_ACCESS_KEY_ID=aws-secrets:key

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