Vous êtes sur la page 1sur 13

12/15/2020

Hadoop Data ingest


1

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Objectives

Importer des données externes vers


HDFS via:

• Flume: Importer des données provenant de différentes sources externes

• Sqoop: Importer des données provenant de base de données SQL

• REST: Interface d'importation de données

1
12/15/2020

Flume

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Flume: Vue d'ensemble


 Flume: Service distribué, fiable et hautement disponible, collecte efficace à partir de sources étendues et
variables
 Parfait pour collecter des informations de journaux (logs) et les mettre dans HDFS
 Flume est un projet Open Source Apache
 Initialement développé par Cloudera
 Partie de toutes les principales distributions
 Conçu pour une:
 Fiabilité
 Évolutivité
 Architecture extensible

2
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Flume: Cas d'utilisation typiques


 Journaux (logs)

 Temps réél

 Serveurs Web

 Pare-feu

 Serveurs de messagerie

 Source de données réseau

 Par exemple, sortie Netcat

 Données d'entreprise

 Nouveaux articles

 La performance du réseau publicitaire 5

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Flume Agents
 Chaque agent a:
– Source
– Sink
 Source
– Indique à l'agent d'où obtenir les données
 Sink
– Indique où envoyer les données
 Channel (canal)
– File d'attente de connexion de source et sink
– Peut être en mémoire ou durable
– Les canaux durables survivent à une perte de puissance et à un crash

3
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Flume Configuration Example (1/2)


# example.conf: A single-node Flume configuration
# Name the components on this agent (a1)

a1.sources = myres1
a1.sinks = mysink1
a1.channels = mychan1

# Describe/configure the source

a1.sources.myres1.type = netcat
a1.sources.myres1.bind = localhost
a1.sources.myres1.port = 44444
7

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Flume Configuration Example (2/2)


# Describe the sink
# HDFS as the sink
a1.sinks.mysink1.type = hdfs
a1.sinks.mysink1.hdfs.path = /data
a1.sinks.mysink1.hdfs.filePrefix = access_log
a1.sinks.mysink1.channel = mychan1

# Use a channel that buffers events in memory


a1.channels.mychan1.type = memory
a1.channels.mychan1.capacity = 1000

4
12/15/2020

Sqoop

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Sqoop : Vue d'ensemble


 SQL-to-Hadoop (et vice vers ça) outil d'importation / exportation de base de données
– Projets Apache Open Source
– Développé à l'origine par Cloudera
– Partie de toutes les distributions majeures
 Conçu pour importer des données de SGBDR vers HDFS
– Mais peut aussi exporter
– Les deux sont des modèles de conception architecturale populaires
 Importations et exportations de:
– Tables Hive
– Tables HBase
– Fichiers Avro
– Même les tables Accumulo
 Utilisation étendue de JDBC

10

10

5
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Sqoop - Conception
 (A) Examiner les tables de SGBDR demandées

– Créer une classe Java utilisée pour importer les


données dans HDFS

 (B) Créer et exécuter un job MapReduce pour importer


les données

– Réellement , un job Map uniquement

– Quatre Mappers se connectent au SGBDR par défaut


(vous pouvez changer ça)

– Chacun importe ¼ des données

11

11

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Sqoop - Diagramme de conception

12

12

6
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Sqoop - Caractéristiques
 Importer une seule table ou toutes les tables d'une base de
données

 Clause WHERE: spécifiez les lignes à importer

 Clause SELECT: spécifiez les colonnes à importer

 Toute instruction SELECT peut être utilisée

 Intégré aux tables Hive créer

 Importations incrémentielles de données

 Peut exporter des fichiers de données HDFS dans des tables de


SGBDR
13

13

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Exemples

 List all databases


sqoop list-databases --username root -P --connect jdbc:mysql://localhost

 List all tables in the ‘global’ database


sqoop list-tables --username sondes -P --connect jdbc:mysql://mydb.mycompany.com/global

 Import all tables in the ‘global’ database


sqoop import-all-tables --username sondes --password mypass --connect jdbc:mysql://mydb.mycompany.com

14

14

7
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Importation de tables avec Sqoop


• Cet exemple importe la table customers à partir d'une base de données MySQL
• On va créer le répertoire /mydata/customers dans HDFS
• Le répertoire contiendra des fichiers texte séparés par des virgules

15

15

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Importer une base de données entière avec


Sqoop
• Importer toutes les tables de la base de données (les champs seront délimités par des tabulations)

16

16

8
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Importation de tables partielles avec Sqoop


• Importer uniquement les colonnes spécifiées de la table products

• Importer uniquement les lignes correspondantes de la table products

17

17

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Importations incrémentales avec Sqoop


• Que se passe-t-il si de nouveaux enregistrements sont ajoutés à la base de données?
– On peut réimporter tous les enregistrements, mais ceci est inefficace
• Le mode d'ajout incrémental de Sqoop n'importe que de nouveaux enregistrements
– Basé sur la valeur du dernier enregistrement dans la colonne spécifiée (order_id)

18

18

9
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Traitement des modifications avec des importations


incrémentales
• Que se passe-t-il si les enregistrements existants sont également modifiés dans la base de données?
– Le mode Ajout incrémental ne gère pas ça!
• Dans CDH 5.2 et les versions ultérieures, le dernier mode d'ajout modifié de Sqoop ajoute et met à
jour les enregistrements
–Vous devez maintenir une colonne d'horodatage (a timestamp ) dans votre table

19

19

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Exportation de données de Hadoop vers un SGBDR


avec Sqoop
• Nous avons vu plusieurs façons d'extraire des enregistrements d'un SGBDR vers Hadoop
– Il est parfois également utile de livrer les données de Hadoop vers un SGBDR
• Sqoop assure cela via l'exportation

20

20

10
12/15/2020

REST

21

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Interfaces REST pour l'ingestion des données


 Jusque là…

– Flume

– Sqoop

– hdfs command

 Mais aussi…

– Interfaces Web

• WebHDFS

• HttpFS

22

22

11
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

WebHDFS
 Interface RESTful vers HDFS avec HTTP / HTTPS

– Prend en charge la lecture et l'écriture sur HDFS

– Peut être utilisé à partir du code ou du script

– Peut être utilisé avec curl ou wget

 Facile à utiliser

– Reconfigurer Hadoop conf

– Redémarrer NameNode et DataNodes

 Limites

– Nécessite un accès client à chaque DataNode

– Ne fonctionne pas avec HA (haute disponibilité)


23

23

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

HttpFS
 Interface RESTful vers HDFS avec HTTP / HTTPS

– Implémente le même protocole RESTful que WebHDFS

 Plus difficile à déployer

– Installer HttpFS

– Activer l'accès proxy à HDFS pour l'utilisateur


HttpFS

– Redémarrer le ou les NameNodes(s)

 Avantages

– Nécessite un accès client uniquement au serveur HttpFS

– Le serveur HttpsFS accède à HDFS


24
– Fonctionne avec HA (haute disponibilité)

24

12
12/15/2020

Traitement de
Manipulation HDFS Programmation Hadoop Data Ingest Spark Gestion de streaming de données massives
données

Importer des données sous HDFS avec Lab


Sqoop
Objectifs:
• Manipulation et consultation des bases de données relationnelles sous Cloudera via mysql.

• Utilisation de Sqoop pour importer des tables d'une base de données relationnelle vers HDFS.

Instructions:

• Suivre les étapes du quatrième Lab (Lab4: Data Ingest)

25

25

13

Vous aimerez peut-être aussi