Ответ
Да, я работал с экосистемой Hadoop, преимущественно в связке со Spark.
Основные компоненты, с которыми приходилось иметь дело:
- HDFS (Hadoop Distributed File System): Использовал как основное хранилище для больших объемов сырых и обработанных данных (логи, датасеты для обучения).
- YARN: Для управления ресурсами кластера и планирования задач Spark-приложений.
- Hive: Для выполнения SQL-подобных запросов (HiveQL) к данным в HDFS, особенно когда требовалось предоставить доступ к данным аналитикам.
Пример работы с HDFS через PySpark:
from pyspark.sql import SparkSession
spark = SparkSession.builder
.appName("HDFS_Processing")
.config("spark.hadoop.fs.defaultFS", "hdfs://namenode:8020")
.getOrCreate()
# Чтение данных напрямую из HDFS
df_logs = spark.read.json("hdfs:///data/raw/logs/*.json")
# Запись обработанных данных обратно в HDFS в формате Parquet
df_processed.write.mode("overwrite").parquet("hdfs:///data/processed/logs_aggregated")
Роль в стеке данных: Hadoop (HDFS) часто выступал в роли надежного, распределенного «озера данных» (data lake). Spark использовался как вычислительный движок поверх него для высокоскоростной обработки в памяти. Для многих новых проектов мы переходили на облачные объектные хранилища (S3, GCS), но понимание принципов HDFS и MapReduce важно для работы с унаследованными системами и для глубокого понимания распределенных вычислений.