Вопрос или проблема
Я работаю над проектом больших данных и использую несколько старых серверов на базе различных операционных систем (Ubuntu, CentOS, Windows 2012, Windows 10). Одна из основных причин, по которой я бы хотел использовать распределенное хранилище, заключается в том, что я собираю большие объемы данных очень быстро, и попытка записывать все данные на один диск перегружает его, что приводит к потере данных. Алгоритм сбора данных написан полностью на Python. В конечном итоге я хочу использовать данные для обучения моделей машинного обучения в TensorFlow.
Я поражен количеством доступных вариантов распределенного хранилища данных, и кажется, что эта область быстро развивалась в последние несколько лет.
Похоже, что Hadoop был оправданным решением для больших данных, но его трудно настроить, особенно на Windows, и он, по-видимому, не работает нативно в Python. Databricks выглядит интересно, но мне не ясно, так ли хорошо оно работает как Hadoop в распределенном хранении данных (или это даже возможность Databricks).
Я был бы очень признателен за любые рекомендации по инструментам и фреймворкам для изучения (я открыт как для платных, так и для бесплатных инструментов) и любые поправки касательно моего понимания Hadoop и Databricks выше.
PySpark с Amazon EMR идут рука об руку и могут подойти для того, чтобы меньше беспокоиться о настройке и обеспечить надежность хранения, развертывая Amazon EC2 для хранения ваших данных.
Вот статья Amazon по настройке. Имейте в виду, что вам придется заплатить некоторые сборы, если вы хотите попробовать Amazon EMR сразу, но это должно быть относительно недорого, чтобы попробовать перед реальной реализацией.
Если вы используете Jupyter Notebook, ознакомьтесь с этой статьей.
.
Ответ или решение
Рассмотрим все варианты поэтапно, основываясь на ваших текущих потребностях и подходящих решениях для распределённого хранения данных в смешанной операционной среде с использованием Python.
Теория: Выбор распределенной системы хранения данных
Основными факторами, которые влияют на выбор системы распределенного хранения данных, являются:
-
Гибкость и адаптивность: Важно выбрать платформу, которая может быть легко адаптирована к различным операционным системам и аппаратным условиям, учитывая, что у вас имеется смесь Ubuntu, CentOS, Windows 2012 и Windows 10.
-
Поддержка работы с Python: Поскольку ваш алгоритм сбора данных полностью реализован на Python, важно выбрать систему, которая имеет нативную поддержку или интеграцию с Python.
-
Масштабируемость и надежность: С учетом большого объема данных, система должна обеспечивать высокую скорость записи и чтения, а также быть устойчива к сбоям.
-
Совместимость с TensorFlow: Рассмотрите возможность легкой интеграции с TensorFlow для машинного обучения.
Пример: Различные платформы для распределённого хранения данных
-
Hadoop и HDFS: Это традиционное решение для больших данных, широко используемое в течение многих лет. Однако оно требует значительных навыков для настройки, особенно в Windows среде, и нативно не поддерживает Python, что может вызвать дополнительные сложности.
-
Databricks: Databricks предлагает облачную платформу, которая фокусируется на обработке больших данных и машинном обучении, и это делает PySpark доступным для использования, что может быть преимуществом с точки зрения интеграции с Python.
-
Amazon EMR и PySpark: Amazon EMR позволяет использовать кластерные вычисления для обработки данных, в том числе через PySpark. Это снижает необходимость сложной ручной установки и настройки, и обеспечивает надежное хранение на Amazon S3. Однако это облачное решение и может потребовать дополнительной оплаты.
Применение: Рекомендации для вашего проекта
Учитывая ваши потребности и текущее окружение, рекомендуется рассмотреть Amazon EMR в связке с PySpark. Это позволит вам:
-
Обойти сложности настройки Hadoop на Windows: Облачная инфраструктура AWS упрощает процесс настройки кластерной среды и предоставляет удобные средства для масштабирования.
-
Воспользоваться мощностями Spark: С помощью PySpark вы сможете использовать все преимущества Apache Spark для быстрой и эффективной обработки больших данных с поддержкой Python.
-
Интегрировать с TensorFlow: Amazon EMR и AWS обеспечивают совместимость с различными инструментами для машинного обучения, включая TensorFlow.
Для начала вы можете попробовать Amazon EMR в небольшом масштабе, чтобы оценить, подходит ли решение для ваших задач и бюджета. Это поможет вам избежать потенциальных проблем, связанных со сложностью локальной настройки распределенной среды и обеспечит надежное хранение данных без риска их потери.