В прошлый раз мы говорили о том, как между собой взаимодействуют Spark и Pandas. Сегодня поговорим о том, как Apache Spark работает с HDFS и Amazon S3: рассмотрим архитектуру кластеров и примеры создания репозиториев. Читайте далее, чтобы узнать, как эти файловые системы работают в распределенной среде.
Какие файловые системы наиболее распространены при распределенной работе со Spark: 2 самые известные системы
Apache Spark одинаково хорошо работает как с локальными файловыми системами (FAT32, NTFS), так и с распределенными (Lusstre, Minix, Hammer, HDFS, Amazon S3). В этой статье мы рассмотрим 2 самые знаменитые файловые системы, с которыми может работать Spark. К ним относятся следующие:
Каждую из них мы подробнее рассмотрим далее.
Amazon S3
Amazon S3 – это распределенная файловая система, которая также используется для облачных вычислений. S3 в основном работает в пределах Amazon EC2 (Amazon Elastic Compute Cloud). EC2 является веб-сервисом компании Amazon, который предоставляет вычислительные мощности в облаке. За доступ к распределенным наборам данных в S3 отвечают специальные точки доступа (Amazon S3 Access Points), которые являются уникальными названиями узлов, создающимися разработчиками для управления сетью и запросами, идущими через нее.
Для доступа к данным Spark поддерживает специальные символы в путях S3. Для того, чтобы хранить файл в S3 необходимо создать специальную корзину (bucket) в консоли сервиса AWS (Amazon Web Services):
aws s3 mb s3://bucket_of_mine
Далее необходимо создать специальный репозиторий для хранения нужного файла:
aws codecommit create-repository --repository-name myRepo
После этого можно будет получить доступ к файлу следующей командой:
sЗ: // bucket_of_mine / myRepo /my_file .csv
Для того, чтобы избегать сообщений об ошибках доступа от сервера Amazon, необходимо всегда проверять права доступа учетной записи.
HDFS
HDFS (Hadoop Distributed File System) – это распределённая файловая система, которая предназначена для хранения файлов большого размера с разделением их на блоки одинакового размера. Каждый такой блок может размещаться на нескольких узлах одновременно. Развертывание экземпляра HDFS требует наличия центрального узла имен (name node), а также информацию об узлах данных (data nodes), которые хранят блоки данных. Узел имен отвечает за централизованное управление файлами (запись, открытие и закрытие).
Узлы данных, в свою очередь, обрабатывают запросы, идущие от узла имен. Узел имен и узлы данных снабжаются веб-серверами для отображения статуса остальных узлов и просмотра содержимого самой файловой системы. Узел имен также служит для поддержки пространства имен файловой системы. Любое изменение пространства имен сразу же регистрируется узлом имен. Spark и HDFS могут располагаться на одной машине. Однако при этом Spark использует это обстоятельство для хранения данных локально, а также для того, чтобы избегать лишних сетевых соединений.
Таким образом, благодаря интеграции с распределенными файловыми системами, Spark способен вести эффективный распределенный анализ данных и не опасаться за потерю данных при выходе из строя локальной машины, что делает его весьма полезным инструментом для Data Scientist’а и разработчика Big Data приложений. В следующей статье мы поговорим про источники структурированных данных в Spark.
Больше подробностей про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.