Сбой работы клея из-за тайм-аута S3 - PullRequest
0 голосов
/ 21 мая 2018

Я работал над учебными пособиями по склеиванию AWS (https://docs.aws.amazon.com/glue/latest/dg/getting-started.html)) и сейчас пытаюсь настроить свою первую работу, целью которой является копирование всех данных из таблицы RDS в файл паркета на S3.

Я успешно:

  • создал конечную точку S3 VPC
  • создал клейкое RDS-соединение и сканер
  • успешно добавил метаданные таблицы RDSданные в каталог.

Для создания работы у меня есть:

  • Выбран «добавить работу» из панели инструментов клея
  • Присвоить имя работеназначил ту же роль, которая использовалась для подключения RDS выше (как и политику AWSGlueServiceRole), выбрал «Предложенный сценарий, сгенерированный AWS Glue» и оставил другие поля по умолчанию.
  • Выбрал нужную таблицу RDS изкаталог в качестве источника для вывода выбрал «создавать таблицы в вашей цели данных», используя s3 в качестве источника данных, паркет в качестве формата, а в качестве цели выбрал вновь созданную выходную папку s3 - «aws-glue-test-etl / data»
  • После нажатия «СЛЕДУЮЩИЙ» я оставил все сопоставления полей по умолчанию.
  • Сохраните работу и отредактируйте скрипт

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

--conf spark.hadoop.yarn.resourcemanager.connect.max-wait.ms=60000 --conf spark.hadoop.fs.defaultFS=hdfs://ip-10-0-1-88.eu-west-1.compute.internal:8020 --conf spark.hadoop.yarn.resourcemanager.address=ip-10-0-1-88.eu-west-1.compute.internal:8032 --conf spark.dynamicAllocation.enabled=true --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.minExecutors=1 --conf spark.dynamicAllocation.maxExecutors=18 --conf spark.executor.memory=5g --conf spark.executor.cores=4 --JOB_ID j_20380e2f5d565a53d8bd397904dd210cbca826f3825ae8ff6b5a23e8f7bca45d --JOB_RUN_ID jr_6d60e2930a43a06edf6b6e8307171e88bd754ac5f9e66f2eaf5373e570b61280 --scriptLocation s3://aws-glue-scripts-558091818291-eu-west-1/MarcFletcher/UpdateAccountsExport-py --job-bookmark-option job-bookmark-disable --job-language python --TempDir s3://aws-glue-temporary-558091818291-eu-west-1/MarcFletcher --JOB_NAME UpdateAccountsExport-py

YARN_RM_DNS=ip-10-0-1-88.eu-west-1.compute.internal

Detected region eu-west-1

JOB_NAME = UpdateAccountsExport-py

Specifying eu-west-1 while copying script.

S3 copy with region specified failed. Falling back to not specifying region.

И следующий вывод ошибок:

fatal error: HTTPSConnectionPool(host='aws-glue-scripts-558091818291-eu-west-1.s3.eu-west-1.amazonaws.com', port=443): Max retries exceeded with url: /MarcFletcher/UpdateAccountsExport-py (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7f9b11afbf10>, 'Connection to aws-glue-scripts-558091818291-eu-west-1.s3.eu-west-1.amazonaws.com timed out. (connect timeout=60)'))

Error downloading script: fatal error: HTTPSConnectionPool(host='aws-glue-scripts-558091818291-eu-west-1.s3.eu-west-1.amazonaws.com', port=443): Max retries exceeded with url: /MarcFletcher/UpdateAccountsExport-py (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7fe752548f10>, 'Connection to aws-glue-scripts-558091818291-eu-west-1.s3.eu-west-1.amazonaws.com timed out. (connect timeout=60)'))

Я просмотрел руководство по устранению неполадок (https://docs.aws.amazon.com/glue/latest/dg/glue-troubleshooting-errors.html), но не нашел там потенциальных решений).Правильно выбранный регион eu-west-1.

Если кто-то может указать, где работа идет не так, это было бы очень полезно.

Ответы [ 4 ]

0 голосов
/ 27 июля 2019

Я использовал группу secuirty по умолчанию, которая разрешает TCP всем, т. Е. 0.0.0.0/0 и HTTPS до 443, затем также не удалось

0 голосов
/ 09 июля 2018

Скорее всего, проблема блокировки порта группы безопасности.

Проверьте выходное правило вашей группы безопасности AWS, подключенное к клеевому соединению, разрешает TCP через порт 443 для всех

0 голосов
/ 22 января 2019

После настройки конечной точки VPC важно помнить, что она может маршрутизировать трафик только в пределах одного региона AWS .Это означает, что корзина S3, к которой вы пытаетесь получить доступ, должна быть создана в том же регионе, что и ресурсы, связанные с AWS Glue, и в частности ваша конечная точка S3 VPC.

0 голосов
/ 29 июня 2018

Важно иметь конечную точку S3 в таблице маршрутизации подсети.

https://docs.aws.amazon.com/glue/latest/dg/start-development-endpoint.html https://github.com/awsdocs/aws-glue-developer-guide/blob/master/doc_source/vpc-endpoints-s3.md

Несмотря на это, я также счел необходимым указать регион при настройке ресурса boto3.

Я не смог найти это или связанный с ним документ boto.config.

s3 = boto3.resource('s3', 'ap-southeast-2')
file = s3.Object('bucket_name', 'file_key.txt')
file_contents = file.get()['Body'].read()
...