0% ont trouvé ce document utile (0 vote)
5 vues2 pages

Guide complet sur Hadoop et Kafka

Transféré par

hassanmoulay453
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues2 pages

Guide complet sur Hadoop et Kafka

Transféré par

hassanmoulay453
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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);

Vous aimerez peut-être aussi