Hadoop est omniprésent dans les organisations qui ont investi dans le big data il y a 10 ans. En entretien, on évalue la capacité à maintenir cet héritage ET à planifier la migration vers le cloud.
Quelle est l architecture HDFS ? Pourquoi Spark est-il plus adapté qu HDFS pour les nouvelles architectures ?
Expliquez le paradigme MapReduce. Pourquoi Spark l a-t-il largement remplacé ?
## MapReduce : framework de traitement distribué
# Phase MAP : transformer chaque record en paires (clé, valeur)
def mapper(record):
for word in record.split():
yield (word, 1)
# Phase SHUFFLE : regrouper par clé (automatique)
# word -> [(word, 1), (word, 1), (word, 1)...]
# Phase REDUCE : agréger les valeurs par clé
def reducer(key, values):
return (key, sum(values))
## Spark vs MapReduce :
# MapReduce : écrit sur disque entre chaque étape -> lent
# Spark : garde les données en mémoire -> 10-100x plus rapide
# MapReduce : 1 étape par job -> beaucoup de jobs pour les algos complexes
# Spark : DAG d opérations -> pipeline complet en un seul jobComment Hive traduit-il les requêtes SQL en jobs MapReduce ou Tez ?
-- Hive : interface SQL sur HDFS
-- Les données sont dans HDFS, Hive ajoute le schéma
-- Créer une table externe (les données restent dans HDFS)
CREATE EXTERNAL TABLE orders (
order_id STRING,
customer_id STRING,
amount DOUBLE,
order_date DATE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS PARQUET
LOCATION '/user/hive/warehouse/orders/';
-- Requête HiveQL (syntaxe proche de SQL)
SELECT
customer_id,
SUM(amount) AS total_revenue
FROM orders
WHERE order_date >= '2024-01-01'
GROUP BY customer_id
ORDER BY total_revenue DESC
LIMIT 10;Comment le partitionnement Hive améliore-t-il les performances ?
-- Partitionnement statique : données dans des sous-répertoires
CREATE TABLE orders_partitioned (
order_id STRING,
customer_id STRING,
amount DOUBLE
)
PARTITIONED BY (year INT, month INT)
STORED AS ORC;
-- HDFS structure :
-- /warehouse/orders_partitioned/year=2024/month=01/
-- /warehouse/orders_partitioned/year=2024/month=02/
-- Sans partitionnement : scan complet de toute la table
-- Avec partitionnement : scan uniquement des partitions filtrées
SELECT * FROM orders_partitioned
WHERE year = 2024 AND month = 1; -- ne lit que ce dossier
-- Bucketing : subdiviser les partitions pour les jointures
CREATE TABLE orders_bucketed
CLUSTERED BY (customer_id) INTO 50 BUCKETS
STORED AS ORC;Quelle est la stratégie de migration d un cluster Hadoop vers le cloud ?
Comment faites-vous cohabiter Hadoop existant avec dbt ou Spark ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Architecture HDFS, HiveQL, partitionnement | A requêté Hive, comprend le partitionnement, peut écrire du HiveQL | Ne sait pas ce qu est HDFS |
| Senior | MapReduce vs Spark, stratégie de migration, Hive Metastore | A participé à une migration Hadoop → cloud, utilise Trino pour l interopérabilité | Ne sait pas expliquer pourquoi Spark est plus rapide que MapReduce |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.