3. Configuration Hadoop Hadoop 1.0: MapReduce (Batch) + HDFS Hadoop 2.
0: leader/Demandes R peuvent être envoyées au
[Link]: l'host et port du NameNode YARN (Shared) + HDFS (MapReduce devient une app leader/followers/Partitions followers consomment
[Link]:Config du NameNode et parmi d'autres sur YARN) enregistrements du leader comme simples
10. Composants de Écosystème Hadoop consommateurs kafka
DataNode,Taille de bloc,Chemin du namespace et
Stockage et traitement: HDFS: YARN: Rôle de ZooKeeper:Service centralisé/Maintenir info de
fichiers logs Nombre de réplications
MapReduce,Spark (Moteur d'analyse unifié traitem grande échelle) config et nommage/Fournir synchronisat distribuée et
5. API Java pour HDFS Classes principales:
Services de traitement de données: services de grp/Gérer et coordonner brokers
FileSystem: (copier, renommer, créer)
PIG HIVE/HBase: Mahout, Spark MLlib: ml Kafka/Notifier producers/consumers de présence/échec
FileStatus: Gère info d'un fichier ou dossier d'un broker dans cluster
Moteurs de requêtes:Apache Drill
Configuration du cluster Path Gestion et coordination: Zookeeper: 11. Kafka ConnectComposant Kafka pour intégration
6. MapReduce parallel computing Planification:Oozie: de workflow pour jobs en streaming entre Kafka et systèmes externes/Exécute
Modèle de données <k, v>Tableau associatif Ingestion de données:Flume: Collecter, agréger et déplacer des connecteurs qui implémentent logique
(hashtable) Il opère sur couples <k, v> f inpu/outp/intern fichiers logs Sqoop: Transfert données entre Hadoop et BDR personnalisée pour interagir avec système externe
Machi darori le même espace de nommage à chaque étape Recherche et indexation:Solr & Lucene API Java: Simplifier développement, déploiement
Étapes MapReduce: Administration: Ambari: Mise à disposition, monitoring et
maintenance cluster
et gestion connecteurs
Split (Découper):données initiales fragmentées en
plusieurs blocs pour être traitées en parallèle. Notebooks: Apache Zeppelin: Web-based pour analyses interactives Moteur d'exécution: Distributed(Exécute nœuds
Connect sur plusieurs machines
Map : Intrinsèquement parallèleChaque fragment est [Link] Sys de messagerie tolérant aux pannes basé
Forme cluster Connect Scalabilité et haute
traité par une fct de mappage qui transforme les sur publish/subscribe java scala ops de linkdi Event-based
disponibilité) / Standalone(Utile pour
données d’entrée <k, v> en liste de paires intermédiaires Événement:Tout type d'action changement identifié ou
<k2, v2> applique une fct sur chaque donnée.(k et k2 enregistré par une application & Combinaison de notif développement et testsSur machine locale)
n’appartient pas au mm domaine forcément) map((f: x->x + qui peut déclencher une autre activité/état Interface REST:Soumettre,gérer connecteurs
1), [1, 2, 3]) = [2, 3, 4]
2. Architectures Temps Réel Types de connecteurs: Source
Shuffle (Regrouper / Trier) : GROUP BY k2 en SQL. Connector:Récupère données d'un système
Les paires <k2, v2> sont triées et regroupées par clé afin Architecture Lambda 2 pipelines dif traitent données
Pipeline temps réel : Faible latence pour analyses externeLes publie dans KafkaSink Connector:Lit
d’obtenir <k2, [v2]>.
Reduce : Applique une fct sur chaque groupe pour critiques Pipeline batch (Batch Layer): Cohérence et messages d'un topic Kafka Les écrit dans système
complétude des données /Analyses plus approfondies externe Configuration: via fichier .properties
produire les résultats finaux <k3, v3>. reduce((f: x, y ->x
Serving Layer: Combine résultats des deux pipelines Connecteurs sont plug-and-play
+ y), [1, 2, 3, 4]) = (1+(2+(3+4)))=10Purement fonctionn
Répond aux requêtes V. BASES DE DONNÉES NoSQL - HBASE Colonnes
7. MapReduce Hadoop - Architecture Architecture KappaUnification du traitement temps Six concepts fondamentaux:
JobTracker (Maître):Recevoir la tâche à exécuter réel et batch en 1pipeline"When everything is a stream" 1. Table2. Row (Ligne):Identifiées par clé unique (Row
(jar) data input et le répertoire où stocker Stream Processing System: Traite tous flux (temps réel Key)Traitée comme tableau d'octets3. Column Family
résultatsUn JobTracker par cluster et historique)Serving DB: Stocke résultats pour (Famille de colonnes):Données dans une ligne
TaskTracker:kydwi avec le JobTrackerReçoit requêtesKafka Cluster: Input topic unique regroupées par column family Chaque ligne a mêmes
opérations map/reduce à effectuer et blocs 3. Message-Oriented Middleware (MOM) column families (peuvent être peuplées ou
corresp1par machine cluster résultats intermédiaires Système de messagerie: Respo du transfert de data pas)Définies à la création de la table 4. Column
sont stockés local Les résultats finaux sont écrits dans HDFS d'une app à une autre Basé sur le concept de file Qualifier (Colonne):Accès aux données dans column
8. API Java pour MapReduce d'attente de msg fiable,Msg asynchr entre app clientes family via column qualifierPas spécifié à la création
Trois classes :Mapper, Reducer ,Driver et système de messagerie mais à l'insertion Traité comme tableau d'octets
Interface Writable:Constructeur Modificateur Accesseur Deux types de modèles: 1. Système Point-à-Point,2. 5. Cell (Cellule):Combinaison de: RowKey + Column
Context Object:Permet au Mapper/Reducer Système Publication-Abonnement (Pub-Sub): Msg Family + Column Qualifier/Identifie une cellule de
d'interagir avec le système Hadoop conservés dans un sujet /Consomment tous ses msg manière unique/Valeurs stockées = tableau d'octets
Accès aux data: config settings and task metada Event Record:Type d'action, incident ou changement 6. Version (Timestamp):Nombre de versions configuré
Méthodes output: [Link](k, v) pour enregistré par une app via Column Family (défaut: 3)
Clé: Identifiant (peut être any type)Valeur Horodatage: 4. Architecture HBase
générer résultats État de la tâche: ID de tentative,
En-têtes métadata: Optionnel HBase Client:API pour communiquer avec HBase
statut Accès à la config:Paramètr personnalisés Topic:Unité d'organisation et stockage des évén
HBase Services: (CLI ;Web interface,Hive Server)
9. YARN (Yet Another Resource Negotiator) /Catégorie dans laquelle enregistrements sont stockés et Metastore:BDR pour stocker schéma des BD,
Problème du JobTracker:bzf responsabilités: publiés/ Filtrage des évén selon sémantique tables/Mappage sur fichiers HDFS
Gérer ressources du cluster et Gérer jobs commune/Fichier log d'évents: événts immuables HBase HMaster:Gère affectation des régions
Solution YARN: Gestionnaire de ressources et tâches Partition:Topics divisés en plusieurs partitions /Opérations création/suppression tablesUn HMaster
Sépare gestion de l'état du cluster et gestion (allocation) /Nouvel événement publié est ajouté à l'une de ses par cluster
des ressources & Permet de lancer des jobs MapReduce partitions/Offset: Identifiant séquentiel unique d'un Region Server:Fournit données pour lectures et
et suivre leur avancement Peut déplacer un processus enregistrement dans une partition/Événements avec écritures /Clients communiquent directement avec
d'une machine à l'autre (transparent) f défaillance même clé écrits dans même partition/Objectif: RegionServers/ Plusieurs RegionServers dans cluster
Composants principaux: Paralléliser l'accès aux enregistrements (R/W) d'un topicZooKeeper:Maintenir le cluster en état
ResourceManager (RM) - Global: Broker:Serveur exécutant Kafka/Cluster Kafka = Service de coordination
Arbitre ressources entre toutes applications plusieurs brokers/Stocke données dans HDFS HDFS:DataNode: Stocke data que Region Server gère
fih: Scheduler: Allouer des ressources aux applications RegionServers colocalisés avec DataNodes
NameNode: Maintient métadata sur blocs physiques
ApplicationsManager: Accepter soumissions de Producer:Envoi des enregistrements au broker (leader Colocalisation:RegionServers colocalisés avec
job,Négocier premier conteneur pour ApplicationMaster de partition) Broker rattache enregistrement à queue
DataNodes/Optimise performances
/Redémarrer ApplicationMaster en cas d'échec d'une partition Region:Tables HBase divisées horizontalement par row
NodeManager - Par machine:Agent responsable: Consumer:Consomme lots (batches) d'enregistre du /Contient toutes lignes comprises entre deux clés
Des containers Surveillance utilisation des broker/Peut lire à partir de n'import quel offset données /Affectées à des nœuds (Region Servers)
ressources Rapporter au ResourceManager Group consumer: Regroup consumers 6. Réplication
ApplicationMaster - Par app:gérer tsks, Déployé sur Dans un topic, chaque partition consommée par un seul Implémentation:Au niveau partition (région)
consumer du groupe Leader: Broker respo R/W sur partition
nœuds esclaves Gère le cycle de vie de l'app
Réplication:Implémentée au niveau partition Followers: Brokers contenant répliques
Container: Exécute une tâche spécifique
Leader: Broker responsable R/W sur une Fonctionnement: Demandes W acheminées au leader/
Allocation de ressource sur un NodeManager partition/Followers: Brokers contenant répliques Demandes R peuvent être envoyées au leader/followers
(follower replica) de partition principale (leader Partitions followers consomment enregistrements du
replica)/Demandes W acheminées au leader/Familles doivent être déf lors de création
Coûteux de créer famille ultérieurement Bucket:Tables ou partitions subdivisées en Bucketing:
Ne déf que noms des familles, pas colonnes buckets/Basé sur fct de hachage d'une colonne CLUSTERED BY (colonne) INTO n BUCKETS;
Colonnes créées dynamiquement 8. Bases de Données Hive • Divise data0 uniformément en buckets
HBase n'est qu'un stockage de mégadata Créer BD:
• Basé sur hachage d'une colonne
Pas de dispositif d'interrogations sophistiqué CREATE DATABASE [IF NOT EXISTS] <db_name>;
Pas de requêtes imbriquées, agrégation, Supprimer BD: • Améliore performances (jointures)
Pour requêtes SQL sophistiquées: use Hive DROP DATABASE <db_name> [CASCADE]; 14. Formats de Fichiers
VI. BIG DATA QUERY PROCESSING - APACHE PIG Formats Row-Based/CSV/Text/JSON:
• CASCADE: Supprime aussi toutes tables
Définition:Plateforme simplifiée pour analyse de SequenceFile:Format binaire paires clé-valeur/
BD en cours:
données massives sur clusters Hadoop /Utilise langage Optimisé pour Hadoop/MapReduce
SELECT current_database();
de script "Pig Latin" Avro:Format binaire avec schéma JSON
9. Création de Table
Défis de la programmation MapReduce: ORC (Optimized Row Columnar):Format binaire
Syntaxe:
Nécessite compréhension approfondie concepts bas optimisé pour Hive
CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
niveau/ Simple opération nécessite plusieurs lignes Parquet:Format binaire orienté colonne open
[nom_db.]nom_table (
Jav/Perte de temps et risque d'erreurs élevé source/Très efficace pour requêtes analytiques
col_name data_type [COMMENT 'col_comment'],..)
Pigs Eat tous types et forma / multiples sources/ Note: Parquet stores data in row groups!
ROW FORMAT DELIMITED DescFormat
Pigs Live Everywhere:Implémenté sur Hadoop /Traite Mapper
[STORED AS file_format]
aussi données SF local import [Link];
[PARTITIONED BY (col_name data_type)]
Pigs Are Domestic Animals: import [Link];
[CLUSTERED BY (col_name) INTO n BUCKETS]
Pigs Fly:Traiter rapidement via optimiseur interne import [Link].*;
Directives de format:
3. Caractéristiques Apache Pig import [Link];
FIELDS TERMINATED BY:
Facilité d'utilisation:Optimisé:Extensible: public class TokenizerMapper extends Mapper<Object,
FIELDS TERMINATED BY ';'
4. Architecture Apache Pig Text, Text, IntWritable>{
Pig Latin Scripts3ad Parser:Vérifier syntaxe
• Séparateur de champs private final static IntWritable one = newIntWritable(1);
COLLECTION ITEMS TERMINATED BY: private Text word = new Text();
Optimizer:Garantir que data est minimale
COLLECTION ITEMS TERMINATED BY ',' public void map(Object key, Text value, Context context)
Compiler:Compiler plan logique optimisé en série de
tâches MapReduce • Séparateur entre éléments d'un ARRAY throws
Execution Engine:Tâches MapReduce soumises à MAP KEYS TERMINATED BY ':' IOException, InterruptedException {
Hadoop 3ad Hdfs LINES TERMINATED BY '\n' [Link]([Link]());
6. Modes d'Exécution Pig STORED AS: StringTokenizer itr = new
Mode Local:S'exécute dans seule JVM TEXTFILE, SEQUENCEFILE, PARQUET, AVRO, RCFILE, StringTokenizer([Link]());
Mode MapReduce (default):Pig convertit script en ORC while ([Link]()) {
tâches MapReduce Les exécute sur cluster Hadoop PARTITIONED BY (col_name data_type) [Link]([Link]());
7. Mécanismes d'Exécution Exemple complet: [Link](word, one);
CREATE TABLE employees (id INT,name STRING,salary [Link]
Mode interactif (shell Grunt):Saisir instructions Pig
FLOAT,department STRING) import [Link];
Latin/Obtenir sortie (avec opérateur Dump) import [Link].*;
ROW FORMAT DELIMITED
Mode par batch :Écrire script dans fichier .pig FIELDS TERMINATED BY ',' import [Link];
Mode intégré (UDF):def fct propres en Java/Scala public class IntSumReducer extends
LINES TERMINATED BY '\n'
Reducer<Text,IntWritable,Text,IntWritable> {
8. Structure d'un Script Pig Latin STORED AS TEXTFILE; private IntWritable result = new IntWritable();
1. Load: depuis HDFS /Donner un schéma 10. Chargement de Données public void reduce(Text key, Iterable<IntWritable> values,
2. Transformation:Opérateurs relationnels: FILTER, Charger depuis HDFS: Context context)
ORDER, DISTINCT, JOIN, GROUP, LOAD DATA INPATH '/input/data' [OVERWRITE] INTO throws IOException, InterruptedException {
3. DUMP ou STORE:Afficher résultat sur écranOu TABLE purchases; int sum = 0;
stocker dans fichier Hive déplace le fichier CSV dans ses propres répertoires for (IntWritable val : values) {
sum += [Link]();
Important:Résultat de chaque instruction Pig = Empêcher déplacement:
}
collection de n-uplets (relation/bag) CREATE EXTERNAL TABLE ... [Link](sum);
VII. HADOOP DATAWAREHOUSE - APACHE HIVE Charger depuis local: LOAD DATA LOCAL INPATH [Link](key, result);
Schéma (métadonnées):Noms et types des colonnes '/shared_volume/[Link]' Main
/Structure info en tables exploitables par HiveQL OVERWRITE INTO TABLE purchases; import [Link];
import [Link];
Enregistré dans BDR appelée metastore (Derby par • Fichier copié dans HDFS
import [Link];
défaut) Insérer données: INSERT INTO TABLE nom_table import [Link].*;
5. Architecture Hive VALUES ('valeur1', 'valeur2'); import [Link];
Hive Client 11. Manipulation de Tables import
Hive Services (CLI, Web Interface, Hive Server) Afficher structure: DESCRIBE [nom_db.]nom_table; [Link];
Hive Driver (Compiler, Optimizer, Execution Engine) Vider table: TRUNCATE TABLE nom_table; import
Metastore ←→ Apache Derby DB [Link];
• Applicable pour table interne uniquement public class WordCount {
Processing Frameworks (MapReduce v2, Tez, Spark)
Supprimer table: public static void main(String[] args) throws Exception {
Distributed Storage (HDFS)
DROP TABLE nom_table; // TODO Auto-generated method stub
7. Modèle de Données Hive
12. Requêtes de Base Configuration conf = new Configuration();
Hiérarchie: DB ->table->Partition -> bucket Job job = [Link](conf, "word count");
Agrégation:
Managed Table (par défaut):Données déplacées dans
SELECT colonne1, COUNT(*) FROM nom_table GROUP // classe principale
emplacement pré-configuré (data warehouse) de Hive [Link]([Link]);
BY colonne1;
Lors suppression: données et metadata supprimés // classe qui fait le map
Jointure: SELECT a.colonne1, b.colonne2 [Link]([Link]);
Hive gère complètement le cycle de vie
FROM table1 a JOIN table2 b ON [Link] = [Link]; // classe qui fait le shuffling et le reduce
External Table:Emplacement des données externes
13. Optimisation des Requêtes [Link]([Link]);
spécifié à création/Lors suppression: seules metadata
Partitionnement: [Link]([Link]);
supprimées/Données restent en place/Utile pour [Link]([Link]);
CREATE TABLE nom_table_partition (colonne1 TYPE,
données partagées entre app [Link]([Link]);
colonne2 TYPE)
Partition:Organise tables en partitions/Regroupe même // spécifier le fichier d'entrée
PARTITIONED BY (colonne_partition TYPE);
type de données selon colonne ou clé/pour Accélérer [Link](job, new Path(args[0]));
requêtes sur slices de data
• Organise logiquement données dans répertoires // spécifier le fichier contenant le résultat
• Basé sur valeurs des colonnes (année, région) [Link](job, new Path(args[1]));
[Link]([Link](true) ? 0 : 1);