Rapide introduction à Hadoop lors du lancement du Casablanca Hadoop & Big Data Meetup.
En partenariat avec Hortonworks
http://www.meetup.com/Casablanca-Hadoop-et-Big-Data-Meetup
2. 2
L’histoire d’Hadoop
Le principe et l’architecture d’Hadoop
Un filesystem: HDFS
Un framework (historique) de traitements distribués: MapReduce
Quelques composants de l’écosystème
Démo MapReduce
Démo Hive
Présentation Ambari
De quoi allons nous parler ?
3. 3
Démos sur Hortonworks Data Platform
VM pré-cablée pour tester Hadoop
http://hortonworks.com/products/hortonworks-sandbox/
4. 4
Présentation d’Hadoop – Qu’est ce que c’est ?
Solution Open Source Big Data fournissant un socle
Distribué
Stockage
Traitement
Scalable
Scalabilité linéaire
Stockage local Rapide et peu cher
SAN 2-10$ / Go
NAS 1-5$/ Go
Local 0.05$ / Go
Clusters de « commodity hardware »
Open Source pour éviter le « vendor lock-in »
6. 6
Pour les systèmes décisionnels, Hadoop s’impose
comme l’architecture de référence sur la marché
Open •Apache Hadoop
Source
•Cloudera
•Hortonworks
•MapR
Pure
Players
•Greenplum (Pivotal)
•IBM InfoSphere BigInsights (CDH)
•Oracle Big data appliance (CDH)
•NetApp Analytics (CDH)
•…
Editeurs
•Amazon Elastic MapReduce
•Microsoft Azure HDInsight (HW)
•Hadoop on Google GCP
Cloud
publique
De nombreuses
solutions d’entreprise
souvent construites autour d’Hadoop
9. 9
Les composants d’Hadoop – HDFS
Système de fichiers distribué
Scalable horizontalement (ajout de noeuds)
Tolérant aux pannes grâce à la réplication intelligente des blocs (128Mo)
Un noeud HDFS sur chaque DataNode du cluster
HDFS est optimisé
Pour le stockage de gros fichiers en nombre réduit (< 1M de fichiers)
Pour la lecture en bloc de ces fichiers (« full scan ») Pas de Random Access
Déposer, naviguer, télécharger, supprimer des fichiers
CLI ou interface web
Le NameNode maintient la liste des fichiers et de ses blocs
Analogue à la FAT d’un système de fichiers classique
10. 10
Les composants d’Hadoop – Un cluster HDFS
RÉSEAU LOCAL
Name node Data node
file1 #1
file2 #2
Client
HDFS
Data node
file1 #1
file1 #2
file2 #1
Data node
file2 #2
file1 #2
file2 #1
/file1
1 2
/file2
1 2
RACK 1 RACK 2
Console web
12. 12
Framework de programmation
MapReduce
Parallélisation automatique des jobs Hadoop.
Gestion transparente du mode distribué agréable pour le développeur !
MapReduce = 2 fonctions
map()
convertir une donnée en entrée en une série de paires clé/valeur
et reduce()
appliquer un traitement à l'ensemble des valeurs trouvées pour une clé
Ie: consolider les données issues du Mapper
Map Reduce est un framework
Structurant en terme de développement / conception
Il faut rentrer dans le paradigme
13. 13
Data node
Task tracker Task tracker Task tracker
file1 #1
Data node
file1 #2
Data node
file1 #3
Client
MR
Data node
Job tracker
Name node
Présentation d’Hadoop – Map Reduce
15. 15
Data node
Task tracker Task tracker Task tracker
file1 #1
Data node
file1 #2
Data node
file1 #3
Mapper
Reducer
Mapper
Reducer
Mapper
Data node
Job tracker
Name node
Shuffle & sort
Client
MR
Présentation d’Hadoop – Map Reduce
16. 16
Exemple de MapReduce
Les Mapper
-lisent leur bloc ligne par ligne
-découpent les lignes en mot
-envoient ces mots aux Reducers
La phase de Shuffle & Sort
-combine les paires qui ont la même clé
-trie
Les Reducers
-somment les 1
-envoient vers la sortie (HDFS) la liste des
mots et le compte associé
17. 17
API native en Java
Bas niveau
Comment créer un job Map Reduce ?
Rapide
Beaucoup de contrôle
Parfois complexe à utiliser pour des tâches complexes (ex: joins)
Trois éléments essentiels
Mapper : classe contenant la méthode map()
Reducer : classe contenant la méthode reduce()
Driver : classe contenant la méthode main() et configurant le job
Il est aussi possible d’écrire des jobs Map Reduce
indépendamment du langage (Shell, Python, Ruby…) grâce à
l’API Streaming Hadoop
31. 31
Requêtage SQL sur Hadoop (HiveQL)
Apache Hive
Permet d’accéder simplement aux données
Ouvre Hadoop aux habitués du SQL
Propose des drivers ODBC pour brancher des outils externes (Tableau, etc.)
Origine:
Facebook (90%+ des job Hadoop de Facebook sont générés avec Hive)
Les requêtes HiveQL sont compilés en jobs MapReduce
Lenteur importante (aujourd’hui: pas interactif mais batch)
Faibles performances + Marché très important des BD SQL
Forte concurrence
Impala (Cloudera)
Spark SQL
Hortonworks de son côté pousse la communauté vers l’optimisation (Stinger)
39. 39
Continuer à explorer l’écosystème
HBase
Streaming (Storm, …)
…
Optimisation Hadoop (jobs MapReduce, etc.)
Industrialiser le déploiement de son cluster
Chef/Puppet
Capistrano
…
Pour aller plus loin
Hinweis der Redaktion
Merci Nabil pour cette intro aux BD Graph
A mon tour, je vais vous faire une intro à Hadoop
L’idée n’est pas de vous présenter en détail cette plateforme assez complexe mais de comprendre le principe et l’archi et coder ensemble un job
Commodity => Boites à Pizza au lieu de gros serveur IBM Power System
Vendor LockIn => enorme customisation Hadoop chez les géants du web
En 2002, Doug Cutting - créateur de Lucene - veut créer un moteur de recherche web open-source sur la base de Lucene. Projet Nutch
En 2003, Google publie le WP « GFS », en 2004 Doug porte Nutch sur NDFS
En 2004: Google publie le papier « MapReduce », en 2005, Doug migre complètement Nutch sur MR
En 2006, Doug sort le projet de Lucene et invente le nom (éléphant de son fils)
Même année, recruté par Yahoo! (en 2008, Yahoo! = cluster Hadoop de 10.000 nœuds)
Maintenant Cutting est chez Cloudera et président de Apache SF
+ histoire HW
Les alliances
Intel-Cloudera-MongoDB
Intel a investi 740 millions $ dans Cloudera et souhaite en faire la plateforme de facto de l’IoT
Intel a aussi investi dans MongoDB
Hortonworks-Teradata-Microsoft-SAP
Partenariats « revendeurs » et « techniques »
Cavaliers seuls:
Pivotal mais fait partie de la fédération EMC avec VMWare, etc.
IBM
Core Hadoop = HDFS, YARN, MR, Console web & Cli
Slide = HDP mais alternatives
Scheduling = Azkaban
Au dessus de HDFS = Hbase
HDP inclus Ambari Cloudera propose Cloudera Manager (plus mature et complet mais propriétaire)
Déploiement sur Linux/Windows (beau partenariat MS/HW: HDP sur Windows – MS contribue en OSS avec son background BI, etc.)
HA dispo sans techno externe depuis la 2.0
======================
Zookeeper: Gère tout ce qui demande unesynchronisation dans le cluster
Verrous : dans la base de données Hbase par exemple
Notification d’évènement
Haute dispo HDFS
On a 2 fichiers (le orange et le vert) qui sont divisés en blocs (de 128 Mo)
Chaque bloc est déployé (intelligemment) sur un le cluster et répliqué (indice de réplication = 3 par défaut. Dans cet exemple = 2)
=> Dans cet exemple, on peut perdre 1/3 des nœuds du cluster sans perdre de données
/*
NameNode = SPOF
Hadoop 1 : Linux HA / Wmware Vsphere
Hadoop 2 : Actif/Passif – NameMode en hot standby + service de journal
*/
On en parle car:
MapReduce a été l’unique moyen de faire de processing sur Hadoop jusqu’à YARN
Une grande partie des BD NoSQL intègre une implem MR (ex: MongoDB…)
Switch de mindset (procédural objet)
Avec un peu d’astuce on peut traiter énormément de pb en MR (mais il faut apprendre à penser MR)
Ex: Choses faciles en SGBDR mais Faire des jointures en Map Reduce n’est pas trivial
On a notre Cluster: nameNode + DataNode et donnée distribuée
Le client soumet un job au JobTracker
Le jobTracker distribue le job sur les différents nœuds du cluster ou se trouve la donnée
Vous vous souvenez de l’intro au Big Data ?
Le goulet c’est le I/O
Les mappers prennent la donnée en entrée, la convertisse au format clé/valeur (+traitement additionnel si besoin)
S&S: Se charge de trier les données en sortie des Mapper (en fonction de leur clé) + distribuer vers les Reducer
Ils vont diriger tous les enregistrements qui ont la même clé (en provenance de tous les mapper) vers le même reducer
Ex: je compte les mots d’un énorme fichier
Le fichier est découpé en bloc et les Mapper ont chacun un bloc.
Ils le traitent ligne par ligne
A chaque fois q’un des mapper verra le mot A, il l’enverra vers le Reducer 1
A chaque fois q’un des mapper verra le mot B, il l’enverra vers le Reducer 2
A la fin de la phase de Map, Le Reducer 1 aura reçu toutes les instances du mot A remontées par tous les Mappers
Le Reducer applique le traitement (somme, statistique, etc.) Il consolide les données issues du Mapper
Remarque:
Exemple avec 2 reducers. On peut en avoir 1 seul ou même 0 (les Mapper écrivent directement la sortie)
Le wordCount, c’est le Hello World du MapReduce !
MR découpe le fichier en splits et passe les splits au mapper
Les mappers lisent leur split ligne par ligne, découpent les mots et passent la sortie au Reducer
La phase de S&S combine les paires qui ont la même clé et trie
Les reducers font la somme des 1
YARN, en tant que Fwk, leur a ouvert l’accès à la plateforme
Un OS au dessus d’HDFS
YARN permet d’aller au-delà du batch et ne plus passer par MR pour attaquer HDFS
mapreduce comme paradigme de développement / pattern d'accès à la data (scripts à deux phases, Map et reduce). en dessous tu as le moteur d'exécution qui peut être mapreduce, ou tez