Работали ли вы с Hadoop?

«Работали ли вы с Hadoop?» — вопрос из категории Apache Spark, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я работал с экосистемой 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 важно для работы с унаследованными системами и для глубокого понимания распределенных вычислений.