Не удается достичь ожидаемой пропускной способности загрузки с S3 на экземпляр m4.x16large

Я обрабатываю данные с помощью экземпляра m4.x16large, используя фреймворк Spark. Мне нужно загрузить много ТБ данных из S3, распределенных во многих файлах размером ~ 128 МБ. Согласно спецификациям экземпляра EC2, у меня должна быть пропускная способность до 20 Гбит / с, что соответствует примерно 2 ГБ / с. Однако при обработке данных из S3 я в среднем достигаю пропускной способности ~ 650 МБ / с.

И экземпляр, и сегмент S3 находятся в одном регионе, и загрузка ЦП машины не достигает 100%, поэтому я предполагаю, что узкое место не в скорости обработки. Я выполняю легкую агрегацию данных по мере их поступления и сохраняю их на диске, но я не понимаю, как это может ограничить пропускную способность сети.

Я делаю что-то неправильно? Можно ли повысить производительность при загрузке данных из S3? Как я могу лучше достичь теоретического предела пропускной способности сети в 20 Гбит / с?

Редактировать: Я использую минимум для запуска этого экземпляра. Я создал один общедоступный VPC с подсетью, имеющей конечную точку службы для S3.

Из мастера создания VPC у меня есть:

Public subnet instances use Elastic IPs or Public IPs to access the Internet.

Сколько одновременных / параллельных загрузок вы выполняете при достижении 650 МБ (б?) / С? Как этот экземпляр получает доступ к S3 ... Elastic IP? NAT-шлюз? Экземпляр NAT? Конечная точка S3 VPC?

Michael - sqlbot 11.04.2018 02:12

Спасибо за продолжение, я добавил дополнительную информацию к своему вопросу. Пожалуйста, дайте мне знать, если я могу предоставить какую-либо другую полезную информацию.

enzo 12.04.2018 00:46

Я не понимаю, где вы объяснили, сколько параллельных / одновременных загрузок вы делаете. Было бы полезно знать типичную пропускную способность, которую вы видите при каждой отдельной загрузке.

Michael - sqlbot 12.04.2018 02:28

Как я могу получить эту информацию? Когда я пытаюсь прочитать данные, Spark создает ~ 10 тыс. Задач, соответствующих каждому из файлов в каталоге S3. Поскольку у меня доступно около 110 ядер, я предполагаю, что это количество одновременных загрузок? Я считываю данные в фрейм данных с помощью sparkSession.read.text(s3_path).

enzo 16.04.2018 14:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
207
0

Другие вопросы по теме