HTTP400 при попытке прочитать корзину S3 из развертывания k8s сервера истории Spark

Я пытаюсь развернуть сервер истории Spark на EKS, следуя этим инструкциям: [https://github.com/helm/charts/tree/master/stable/spark-history-server]. Я хочу, чтобы мои задания Spark записывались в корзину S3, а сервер истории читал из этой корзины. Оба должны пройти аутентификацию с использованием ключа доступа и секрета. Запись журналов в ведро из моего приложения работает нормально. Однако у меня возникли проблемы с настройкой сервера истории искр для чтения из корзины. Я создал секрет k8s, как описано с моим ключом доступа и секретом. Кроме того, я создал следующий файл конфигурации:

#values.yaml
pvc:
  enablePVC: false
  existingClaimName: nfs-pvc
  eventsDir: “/”
nfs:
  enableExampleNFS: false
  pvName: nfs-pv
  pvcName: nfs-pvc
s3:
  enableS3: true
  enableIAM: false
  secret: aws-secrets
  accessKeyName: aws-access-key
  secretKeyName: aws-secret-key
  logDirectory: s3a://my-bucket-name/path-in-my-bucket

Однако, когда я пытаюсь установить диаграмму управления, мой модуль, на котором запущен сервер истории, продолжает вылетать с ошибкой http400:

2021-01-18 13:02:13 INFO  HistoryServer:2566 - Started daemon with process name: 7@spark-history-server-1610974923-66c4fd74f6-5xkjf
2021-01-18 13:02:13 INFO  SignalUtils:54 - Registered signal handler for TERM
2021-01-18 13:02:13 INFO  SignalUtils:54 - Registered signal handler for HUP
2021-01-18 13:02:13 INFO  SignalUtils:54 - Registered signal handler for INT
2021-01-18 13:02:13 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2021-01-18 13:02:13 INFO  SecurityManager:54 - Changing view acls to: root
2021-01-18 13:02:13 INFO  SecurityManager:54 - Changing modify acls to: root
2021-01-18 13:02:13 INFO  SecurityManager:54 - Changing view acls groups to:
2021-01-18 13:02:13 INFO  SecurityManager:54 - Changing modify acls groups to:
2021-01-18 13:02:13 INFO  SecurityManager:54 - SecurityManager: authentication disabled; ui acls disabled; users  with view permissions: Set(root); groups with view permissions: Set(); users  with modify permissions: Set(root); groups with modify permissions: Set()
2021-01-18 13:02:13 INFO  FsHistoryProvider:54 - History server ui acls disabled; users with admin permissions: ; groups with admin permissions
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.spark.deploy.history.HistoryServer$.main(HistoryServer.scala:280)
    at org.apache.spark.deploy.history.HistoryServer.main(HistoryServer.scala)
Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: DEFB3BC73467356C, AWS Error Code: null, AWS Error Message: Bad Request, S3 Extended Request ID: f1aPV+hj8fIrlSLpfmxwMblFWXr67PFfD4YtJ0ucx7RzUYJdUKVE9QwAzc3Hfn5DvtJb5qADLco=
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:798)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:421)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:232)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3528)
    at com.amazonaws.services.s3.AmazonS3Client.headBucket(AmazonS3Client.java:1031)
    at com.amazonaws.services.s3.AmazonS3Client.doesBucketExist(AmazonS3Client.java:994)
    at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:297)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
    at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:117)
    at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:86)
    ... 6 more

Я застрял на этом этапе и прошу дать предложения по дальнейшим исследованиям / возможностям устранения неполадок.

Спасибо!


person user2732117    schedule 18.01.2021    source источник


Ответы (1)


Это вообще то, что S3 не любит ваше сообщение с подписью.

См. устранение неполадок s3a для нормативной информации. документация по отладке коннектора S3A.

(Модераторы: я ссылаюсь на документы ASF, а не копирую текст, поскольку (а) он устареет только по сравнению с нормативными документами и (б) людям нужно научиться читать документацию)

person stevel    schedule 19.01.2021
comment
Спасибо, ссылка была полезна! Проблема была связана с несоответствием версии подписи в приложении (V2) и принятой версии S3 в регионе моего сегмента (V4). - person user2732117; 21.01.2021
comment
не стоит беспокоиться. Проблема с ошибкой 400 такая же, как и у большинства логинов, они не хотят предоставлять диагностику в случае утечки информации. Общий источник боли. Команда hadoop s3guard bucket -info распечатывает этот регион, по крайней мере, в последних версиях 3.3+. - person stevel; 22.01.2021