Definicja #
Apache Hadoop to open-source'owy framework do rozproszonego przechowywania i przetwarzania ogromnych zbiorów danych (Big Data) na klastrach serwerów. Stworzony przez Douga Cuttinga i Mike'a Caffarellę, inspirowany papierami Google (GFS i MapReduce), wydany przez Apache Software Foundation.
Cztery główne komponenty Hadoop:
- HDFS (Hadoop Distributed File System) — rozproszony system plików dzielący duże pliki na bloki (domyślnie 128 MB) i dystrybuujący je po węzłach klastra z replikacją (domyślnie 3 kopie). Zapewnia wysoką dostępność danych.
- MapReduce — model programistyczny do równoległego przetwarzania danych: faza Map (przetwarzanie par klucz-wartość) i faza Reduce (agregacja wyników). Działa na danych przechowywanych w HDFS.
- YARN (Yet Another Resource Negotiator) — zarządca zasobów klastra; planuje joby i alokuje CPU/RAM dla aplikacji (MapReduce, Spark, Hive i inne)
- Hadoop Common — wspólne biblioteki i narzędzia używane przez pozostałe moduły
Ekosystem Hadoop:
- Apache Hive — warstwa SQL nad HDFS (HiveQL), dla analityków bez znajomości MapReduce
- Apache HBase — kolumnowa baza NoSQL na HDFS dla dostępu do danych w czasie rzeczywistym
- Apache Spark — szybszy, in-memory następca MapReduce; działa z YARN i HDFS
- Apache Pig — język skryptowy do przetwarzania danych (Pig Latin)
- Apache Oozie — harmonogramowanie workflow'ów Hadoop
Zastosowania #
Hadoop stosuje się do:
- Przetwarzania wsadowego (batch processing) ogromnych zbiorów danych — analiza logów web na milionach rekordów, ETL do hurtowni danych
- Budowy data lake — HDFS jako tania, skalowalna warstwa przechowywania surowych danych (structured, semi-structured, unstructured)
- Analizy danych niestrukturalnych — przetwarzanie plików JSON, XML, Avro, Parquet na HDFS
- Machine learning na dużych danych — Spark ML Library z YARN jako resource manager na klastrze Hadoop
- Archiwizacji i przechowywania danych historycznych — koszt HDFS na commodity hardware wielokrotnie niższy niż tradycyjny DWH
Ścieżka nauki #
Hadoop wymaga znajomości Linuksa i co najmniej jednego języka (Java, Python, SQL). Ekosystem jest rozległy — zacznij od fundamentów.
Zacznij od:
- Koncepcja Big Data i architektura klastra Hadoop — Master (NameNode, ResourceManager) i Worker (DataNode, NodeManager)
- Uruchomienie Hadoop w trybie pseudo-distributed (jeden węzeł na lokalnej maszynie lub Docker)
- Podstawy HDFS:
hadoop fs -ls,-put,-get,-cat— operacje na plikach w HDFS - Apache Hive — zacznij od SQL-owego interfejsu zamiast surowego MapReduce; HiveQL to dobry punkt wejścia
Następnie:
- Apache Spark — Spark API (PySpark) jest nowocześniejszy i szybszy niż MapReduce; zdecydowanie zalecany do nowych projektów
- Formaty danych: Parquet, ORC, Avro — optymalizacja storage i query performance
- Dystrybucje zarządzane: Cloudera CDP, Amazon EMR, Azure HDInsight — eliminują ręczną administrację klastrem
- Nowoczesne alternatywy: Delta Lake (Databricks), Apache Iceberg — zastępują surowy HDFS w nowych architekturach
FAQ #
- Czy Hadoop jest nadal używany?
- Tak, ale jego rola ewoluuje. Surowy MapReduce i HDFS są wypierane przez nowocześniejsze narzędzia (Spark, Delta Lake, cloud object storage). Jednak ekosystem Hadoop (YARN, HDFS, Hive) pozostaje w wielu dużych enterprise'ach. Na rynku pracy znajomość Spark jest bardziej poszukiwana niż MapReduce.
- Czym różni się Hadoop od Spark?
- Hadoop MapReduce przetwarza dane wsadowo, zapisując wyniki pośrednie na dysk — jest wolniejszy, ale tani. Apache Spark przetwarza dane w pamięci (in-memory), co daje 10-100x szybsze obliczenia dla algorytmów iteracyjnych (ML). Spark może działać na klastrze YARN Hadoop, korzystając z HDFS jako storage.
- Co to jest HDFS?
- HDFS (Hadoop Distributed File System) to rozproszony system plików Hadoop. Dzieli duże pliki na bloki (128 MB) i dystrybuuje je po węzłach DataNode klastra z replikacją (domyślnie 3 kopie). NameNode przechowuje metadane (lokalizację bloków). HDFS jest zoptymalizowany pod sekwencyjny odczyt dużych plików.
- Ile zarabia Data Engineer znający Hadoop?
- Data Engineer w Polsce zarabia od 12 000 do 24 000 zł brutto. Znajomość ekosystemu Hadoop (Spark, Hive, HDFS) i platform chmurowych (AWS EMR, Azure HDInsight, Databricks) znacząco podnosi wycenę. Senior Data Engineer z Spark i cloud zarabia od 20 000 do 32 000 zł.