Кластер EKS не может получить доступ к файлам s3a при использовании spark-submit.Как это решить? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь запустить искровое задание в кластере EKS, заставляя его создать 5 рабочих узлов для выполнения задания.Все работает отлично, кроме доступа к исполняемому файлу jar в AWS S3, который должен быть запущен.Вот мой код.

apiVersion: batch/v1beta1 kind: CronJob metadata: name: project namespace: spark spec: schedule: "48 15 * * *" #min hour day month week \ will be "00 04 * * *" maybe jobTemplate: spec: template: spec: serviceAccountName: spark-service-acc containers: - name: project image: 1234567890.dkr.ecr.us-east-1.amazonaws.com/spark:latest command: ["/bin/sh", "-c", "date && \ cd /opt/spark/jars/ && \ wget <a href="http://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.1.1/hadoop-aws-3.1.1.jar" rel="nofollow noreferrer">http://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.1.1/hadoop-aws-3.1.1.jar</a> && \ wget <a href="http://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.11.396/aws-java-sdk-core-1.11.396.jar" rel="nofollow noreferrer">http://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.11.396/aws-java-sdk-core-1.11.396.jar</a> && \<br> cd ~ && \ YESTERDAY=<code>TZ=GMT+24 date +%Y.%m.%d && \ / opt / spark / bin / spark-submit \ --deploy-mode k8s: //https://ABCDEF0123456789.y99.us-east-1.eks.amazonaws.com \ --deploy-mode cluster \ --class com.enterprise.project.MainClass \ --conf 'spark.executor.instances = 5' \ --conf 'spark.kubernetes.container.image = 1234567890.dkr.ecr.us-east-1.amazonaws.com / spark: последний '\ --conf' spark.kubernetes.namespace = spark '\ --conf' spark.kubernetes.authenticate.driver.serviceAccountName = spark-service-acc '\ --conf' spark.executorEnv.ENVIRONMENT = $ (ОКРУЖАЮЩАЯ СРЕДА) '\ --conf' spark.executorEnv.AWS_ACCESS_KEY_ID = $ (AWS_ACCESS_KEY_ID) '\ --conf' spark.executorEnv.AWS_SESS_KESS_CESS_ $ ($)'\ --conf' spark.kubernetes.driverEnv.ENVIRONMENT = $ (ОКРУЖАЮЩАЯ СРЕДА)$ (AWS_SECRET_ACCESS_KEY) '\ --conf' spark.hadoop.fs.s3a.impl = org.apache.hadoop.fs.s3a.S3AFileSystem '
--conf' spark.hadoop.fs.s3a.access.key = $ (AWS_ACCESS_KEY_ID) '--conf' spark.hadoop.fs.s3a.secret.key = $ (AWS_SECRET_ACCESS_KEY) '--driver-class-path / opt / spark / jars / aws-java-sdk-core-1.11.396.jar --driver-class-path /opt/spark/jars/hadoop-aws-3.1.1.jar s3a: //abc123/executable-file.jar \ my-исполняемый-файл-with-3-params $ YESTERDAY s3a: // abc123 esserver.abc.com:9200 && sleep 600 "] env: # все поля, указанные ниже, должны быть переданы под секретным" env-vars "- name: ENVIRONMENT valueFrom: secretKeyRef: имя: env-vars ключ: окружение - имя: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: имя: env-vars ключ: aws-access-key-id - имя: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: имя: env-vars ключ: aws-secret-ключ доступа restartPolicy: Никогда

Сообщение об ошибке: «Не удалось найти main на com.enterprise.project.MainClass».Это сообщение происходит, потому что код не может получить доступ к файлу JAR.Я знаю это, потому что код работает, когда я делаю файл jar общедоступным и использую http для получения файла jar.

Как ни странно, когда исполняемый файл запускается в my-executable-file-with-3-params $YESTERDAY s3a://abc123 esserver.abc.com:9200, где второй аргументs3a://abc123 - это место для записи выходных файлов исполнения.Эта операция записи работает правильно (когда я использую http для доступа к исполняемому файлу).Эта корзина такая же, как корзина, которая содержит исполняемый файл, к которому, как уже упоминалось, нельзя получить доступ через S3A.

Это странное поведение может быть из-за того, что в исполняемом файле есть jar-файлы hasoop, которые хорошо управляют чтением и записью.Так что это приводит к моим предположениям о том, что конфигурация hadoop / aws почему-то не работает.Я могу подтвердить, что ключ доступа и секретный ключ, заданные в качестве переменных среды, являются правильными, как и имена сегментов.

Теперь, как возможно получить доступ к этому файлу jar?Как я могу устранить эту проблему (возможно, проблема конфигурации hadoop)?

...