Начало работы с AWS Cloud Computing и обработкой текста / работа с файлами с помощью Python - PullRequest
1 голос
/ 26 апреля 2019

Я только начал работать со службами облачных вычислений, поскольку некоторые процессы действительно замедляли работу моей машины. Я создал учетную запись на AWS (12-месячный уровень бесплатного пользования) и потратил больше дня на чтение различных учебников, страниц документации и вопросов SO. Я знаю, как запустить экземпляр EC2, как подключиться через ssh и запускать скрипты на python, но я все еще думаю, что весь процесс начала работы со службой облачных вычислений доставляет новичкам действительно тяжелые времена.

Мой случай: я работаю с python для обработки текстовых данных (например, косинусное сходство) в csv-файлах среднего размера (до 1 ГБ). Поскольку мои первые попытки закончились очень медленной обработкой, я решил обратиться к вам, ребята, со следующими вопросами:

  • Более общий: Какие шаги следует предпринять при запуске со службами облачных вычислений (для запуска сценариев Python)? Что важно знать, с чего начать (например, первые шаги: выбор EC2, какой тип экземпляра)?
  • При работе с AWS, когда вы работаете с boto3, а когда напрямую через ssh?
  • Поскольку я не очень знаком с аппаратными проблемами, и у меня есть тысяча возможностей для выбора: что искать при выборе экземпляра EC2 (особенно при работе с текстом через python)?
  • Потому что я пытаюсь обработать CSV-файл: как лучше всего работать с существующими файлами / хранить новые файлы? Лучше хранить их в ведре S3? Как подключиться?

Извините, если мои вопросы кажутся немного неосведомленными. Я действительно пытался погрузиться в это сам, но все так размыто, и вся информация, которую я смог найти, носит весьма общий характер.

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

поздравляю с прохождением первых нескольких уроков и успешным освоением собственного экземпляра EC2!Облако имеет много преимуществ, но оно все же имеет некоторые накладные расходы при начале работы, которые могут быть сложными для новичков, но именно такая обратная связь помогает нам улучшить опыт разработчиков.

1.Какие шаги следует предпринять, начиная с облачных вычислений (для запуска сценариев Python?)

Похоже, что вы уже промокли от SSHing к экземпляру EC2 (который будет наиболее тесно связан симитировать терминал в вашей системе), но я решил, что помогу вам предоставить несколько других вариантов запуска сценариев python в облаке в зависимости от вашего варианта использования.

  • AWS Cloud9 : облачная среда IDE, которая упрощает доступ к другим сервисам и ресурсам в облаке AWS.Если vim / emacs - это не ваша чашка чая, то возможность кодировать напрямую из этой IDE на основе браузера может иметь большое значение, вместо того, чтобы кодировать локально и постоянно передавать код в ваш экземпляр EC2.

  • Записные книжки Amazon SageMaker : это управляемые записные книжки Jupyter / JupyterLab, которые позволяют запускать Python (или ядро ​​по вашему выбору) в ячейках, которые представляют собой модульные куски кода.Они чрезвычайно популярны среди людей, которые пишут код для обработки данных (исследователи данных, исследователи ML / AI и т. Д.), И его можно запустить и запустить менее чем за пять минут, и вам не придется беспокоиться о SSH.

2.Что важно знать, с чего начать (например, первые шаги: выбор EC2, какой тип экземпляра)?

Идеальным типом экземпляра будет тот, который будет иметь благоприятное пересечение цены и производительности для вашего конкретного случая.рабочая нагрузка и бюджет. Существует большое количество различных классов экземпляров EC2 , каждый из которых оптимизирован для различных рабочих нагрузок.

Чтобы выбрать экземпляр для ускорения вашей конкретной рабочей нагрузки, мне нужно было бы немного больше узнать о самом коде, чтобы выяснить, в чем заключается ваше вычислительное узкое место - увеличит ли объем ОЗУ большие партии, тем самым ускориввычисления, или это, возможно, неэффективный алгоритм со взрывной сложностью, который требует только больше вычислений?Является ли процесс распараллеливаемым, и, следовательно, выиграет ли он от использования графических процессоров?

3.Когда вы работаете с AWS, когда вы работаете с boto3 и когда напрямую через ssh?

boto3 - это AWS Python SDK, который обеспечивает программный доступ (создание, чтение, обновление или удаление) к другимРесурсы AWS во время выполнения из ваших скриптов.Это позволяет выполнять любые функции, которые вы можете выполнять с консоли, во время обработки рабочей нагрузки.Типичным примером может быть извлечение набора данных из S3 или перенос задания преобразования в EMR (Elastic Map Reduce).В качестве альтернативы вы можете использовать утилиту командной строки awscli для выполнения тех же действий вне среды выполнения, непосредственно из bash.SSH используется для прямого доступа к серверу, либо для изменения содержимого, для запуска команд или для отладки.

4.На что обращать внимание при выборе экземпляра EC2 (особенно при работе с текстом через python)?

Самый большой вопрос здесь - это вопрос: каков вычислительный профиль вашей рабочей нагрузки?Как упоминалось в A2, выбор более мощного экземпляра во всех основных свойствах (оперативная память, ядра / скорость процессора, графический процессор, работа в сети и т. Д.) Практически гарантирует ускорение вашего процесса, и вы, скорее всего, будете переплачивать / недоиспользовать, как толькоПодмножество этих ресурсов будет истинным узким местом для вашей системы.Определение того, какой тип оборудования в настоящее время имеет максимальную емкость в текущей рабочей нагрузке, поможет вам определить, какой тип экземпляра необходимо подготовить.

Не обращая внимания, я бы порекомендовал экземпляр C-class (оптимизированный для вычислений) или P-class (оптимизированный для графического процессора / параллельных вычислений), в зависимости от того, можно ли распараллелить ваш процесс с графическим процессором.

5.Потому что я пытаюсь обработать CSV-файл: как лучше всего работать с существующими файлами / хранить новые файлы?Лучше хранить их в ведре S3?Как подключиться?

Хранение в S3, вероятно, будет идеальным, учитывая, что это позволит другим сервисам более легко получать доступ к файлам (будь то другие сервисы AWS в облаке или вы пытаетесьвытащите файл снаружи AWS).Кроме того, он позволяет вам завершить работу сервера после выполнения вычислений, и файл будет сохранен на S3 навсегда.

Надеюсь, что эти ответы помогут - ваши вопросы абсолютно естественны и правильные!Добро пожаловать в AWS и счастливого взлома!

1 голос
/ 27 апреля 2019

Проблема, которую я обнаружил, начав изучать Облако, состоит в том, что есть так много вещей, которые легко потерять. Я бы посоветовал вам рассмотреть возможность упрощения вашего подхода к облаку. Вы можете рассмотреть 3 простых шага.

1) Узнайте о S3 и настройке S3 bucket. Это довольно легко.

2) Используйте boto3 и подключайтесь со своего ПК к корзине S3 и читайте и записывайте файлы в корзину S3 в python.

3) Теперь попробуйте взять ваш код на Python и запустить его в лямбда-функции, используя Serverless Framework Возможно, функции lamdba подойдут для вашего случая использования. Если нет, добавьте еще один шаг, чтобы настроить EC2 и запустить там ту же функцию. Я не силен как системный администратор, поэтому сначала я думаю о лямбде.

Удачи и поздравлений с началом.

1 голос
/ 26 апреля 2019

1, 3. Какие шаги следует предпринять при запуске со службами облачных вычислений (для запуска сценариев Python)?Что важно знать, с чего начать (например, первые шаги: выбор EC2, какой тип экземпляра)?

  • Редкая обработка: t2 / t3 или использование Lambda.Редкая пакетная обработка: спот.
  • Понимание ограничения обработки пакета на основе кредита t2 / t3.
  • Всегда изучайте фактические последствия фактических затрат экземпляра
  • Знайте свое требование к передаче данных.Не просто размещайте веб-сайт внутри EC2, не зная стоимости передачи данных.Многие люди усваивают урок трудным путем (после того, как они увидели здоровенную передачу данных в Интернет-счет).

2.Когда вы работаете с AWS, когда вы работаете с boto3 и когда напрямую через ssh?

  • Для новичков используйте ssh и AWSCLI, чтобы ознакомиться с AWS
  • Попробуйте limit boto3использование для доступа к сервисам AWS, не используйте его для автоматизации развертывания.
  • В долгосрочной перспективе вы должны подумать о таких инструментах развертывания, как Terraform / cloudformation / etc.Соблазнительно использовать boto3 для создания собственного развертывания.

4.Потому что я пытаюсь обработать CSV-файл: как лучше всего работать с существующими файлами / хранить новые файлы?Лучше хранить их в ведре S3?Как подключиться?

  • Просто прогуляйтесь по «пошаговому примеру», касающемуся настройки EC2, чтобы разрешить подключение к s3
  • Не просто подписывать и делиться файлом S3если вы не знаете, что делаете
  • Вы можете использовать бесплатный уровень AWS , чтобы поэкспериментировать с настройками служб и безопасности.Пока вы сохраняете передачу данных из AWS минимальным.
...