• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Valtech  - Big Data & NoSQL : au-delà du nouveau buzz
 

Valtech - Big Data & NoSQL : au-delà du nouveau buzz

on

  • 1,564 views

Frederic Sauzet, Consultant, Valtech ...

Frederic Sauzet, Consultant, Valtech
Frederic.Sauzet@valtech.fr

Herve Desaunois, Responsable Technique
Herve.Desaunois@valtech.fr

Ces nouvelles bases de données spécialisées comme Hbase et Neo4j sont de très bonnes solutions pour répondre à de nouvelles problématiques : comme un nombre grandissant de données multi-canales à stocker et à exploiter ou à l’exploitation des graphes sociaux du Web 2.0. Les leaders du Web comme Facebook, Twitter, Google, Adobe, Viadeo se sont emparés de ces solutions très performantes de types NoSQL pour bâtir leur empire de données.

Statistics

Views

Total Views
1,564
Views on SlideShare
1,277
Embed Views
287

Actions

Likes
1
Downloads
69
Comments
0

3 Embeds 287

http://www.valtech.fr 275
http://www.webmarketing-referencement.com 6
http://www.scoop.it 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Valtech  - Big Data & NoSQL : au-delà du nouveau buzz Valtech - Big Data & NoSQL : au-delà du nouveau buzz Presentation Transcript

    • Big Data et NoSQL au-delà du nouveau buzz
    • Définition Méthodologie Architecture! Cas d’utilisation
    • Définition
    • Définition «Les technologies Big Data correspondent à une nouvelle génération de technologies et d’architectures, conçues pour retirer une valeur économique de gigantesques volumes de données hétéroclites, en les capturant, en les explorant et/ou en les analysant en un temps record » 4
    • Sommaire Ò  Présentation Ò  Cas d’utilisation Ò  Architecture Ò  Cas Pratique Ò  Conclusion Ò  Références Ò  Annexes 5 Méthodologie
    • Big Data / Méthodologie La mise en place d’une démarche Big Data est toujours composée de trois étapes : Ò  Collecter, stocker les données : Partie infrastructure. Ò  Analyser, corréler, agréger les données : Partie analytique. Ò  Exploiter, afficher l’analyse Big Data : Comment exploiter les données et les analyses ?
    • Architecture
    • Architecture Big Data Audio, Vidéo, Image Docs, Texte, XML Web logs, Clicks, Social, Graphs, RSS, Capteurs, Graphs, RSS, Spatial, GPS Autres Base de données Orientée colonne NoSQL Distributed File System Map Reduce Base de données SQL SQL Analytiques , Business Intelligent COLLECTER LESDONNEES STOCKAGE&ORGANISATIONEXTRACTION ANALYSER & VISUALISER BUSINESS
    • Technologie Big Data Audio, Vidéo, Image Docs, Texte, XML Web logs, Clicks, Social, Graphs, RSS, Capteurs, Graphs, RSS, Spatial, GPS Autres HBase, Big Table, Cassandra, Voldemort, … HDFS, GFS, S3, … Oracle, DB2, MySQL, … SQL COLLECTER LESDONNEES STOCKAGE&ORGANISATIONEXTRACTION ANALYSER & VISUALISER BUSINESS
    • Architecture Big Data Open Source pour l’entreprise
    • Big Data full solution
    • Cas d’utilisation
    • Cas d’utilisation BigQuery
    • Cas d’utilisation Hadoop Ò  Facebook uses Hadoop to store copies of internal log and dimension data sources and as a source for reporting/analytics and machine learning. There are two clusters, a 1100-machine cluster with 8800 cores and about 12 PB raw storage and a 300- machine cluster with 2400 cores and about 3 PB raw storage. Ò  Yahoo! deploys more than 100,000 CPUs in > 40,000 computers running Hadoop. The biggest cluster has 4500 nodes (2*4cpu boxes w 4*1TB disk & 16GB RAM). This is used to support research for Ad Systems and Web Search and to do scaling tests to support development of Hadoop on larger clusters Ò  eBay uses a 532 nodes cluster (8 * 532 cores, 5.3PB), Java MapReduce, Pig, Hive and HBase Ò  Twitter uses Hadoop to store and process tweets, log files, and other data generated across Twitter. They use Cloudera’s CDH2 distribution of Hadoop. They use both Scala and Java to access Hadoop’s MapReduce APIs as well as Pig, Avro, Hive, and Cassandra.
    • Gartner talk « D'ici 2015, 4,4 millions d'emplois informatiques seront créés dans le monde pour soutenir le Big Data, dont 1,9 millions aux Etat- Unis », a déclaré Peter Sondergaard, senior vice-président et responsable mondial de la recherche chez Gartner. Wanted « Sophisticated Statistical Analysis » 100 000 to 500 000 $
    • HBase
    • Présentation Architecture & API Cas d’utilisations Etude de cas Sécurité Ecosystème Hadoop
    • Présentation
    • Présentation “HBase is the Hadoop database. Think of it as a distributed scalable Big Data store” http://hbase.apache.org/ 19
    • Présentation “Project's goal is the hosting of very large tables – billions of rows X millions of columns – atop clusters of commodity hardware” http://hbase.apache.org/ 20
    • Présentation “HBase is an open-source, distributed, versioned, column-oriented store modeled after Google's BigTable” http://hbase.apache.org/ 21
    • La trilogie Google Ò The Google File System http://research.google.com/archive/gfs.html Ò MapReduce: Simplified Data Processing on Large Cluster http://research.google.com/archive/mapreduce.html Ò Bigtable: A Distributed Storage System for Structured Data http://research.google.com/archive/bigtable.html 22
    • Systèmes d’exploitation / Plateforme 23
    • Installation / démarrage / arrêt $ mkdir bigdata $ cd bigdata $ wget http://apache.claz.org/hbase/ hbase-0.92.1/hbase-0.92.1.tar.gz … $ tar xvfz hbase-0.92.1.tar.gz … $ export HBASE_HOME=`pwd`/hbase-0.92.1 $ $HBASE_HOME/bin/start-hbase.sh … $ $HBASE_HOME/bin/stop-hbase.sh … 24
    • HBase Shell / exemple de session $ $HBASE_HOME/hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.92.1, r1298924, Fri Mar 9 16:58:34 UTC 2012 hbase(main):001:0> list TABLE 0 row(s) in 0.5510 seconds hbase(main):002:0> create 'mytable', 'cf' 0 row(s) in 1.1730 seconds hbase(main):003:0> list TABLE mytable 1 row(s) in 0.0080 seconds hbase(main):004:0> put 'mytable', 'first', 'cf:message', 'hello HBase' 0 row(s) in 0.2070 seconds hbase(main):005:0> get 'mytable', 'first' COLUMN CELL cf:message timestamp=1323483954406, value=hello HBase 1 row(s) in 0.0250 seconds 25
    • HBase Shell / Commandes Ò  Générales Ò  status, version Ò  DDL Ò  alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, is_disabled, is_enabled, list, show_filters Ò  DML Ò  count, delete, deleteall, get, get_counter, incr, put, scan, truncate Ò  Outils Ò  assign, balance_switch, balancer, close_region, compact, flush, hlog_roll, major_compact, move, split, unassign, zk_dump Ò  Replication Ò  add_peer, disable_peer, enable_peer, list_peers, remove_peer, start_replication, stop_replication Ò  Securité Ò  grant, revoke, user_permission 26
    • Architecture & API
    • Architecture logique 28
    • Table Design 29
    • Exemple de table 30 Ò Coordonnées des données [rowkey, column family, column qualifier, timestamp] → value [fr.wikipedia.org/wiki/NoSQL, links, count, 1234567890] → 24
    • HBase Java API Ò HBaseAdmin, HTableDescriptor, HColumnDescriptor HTableDescriptor desc = new HTableDescriptor("TableName"); HColumnDescriptor cf = new HColumnDescriptor("Family".getBytes()); desc.addFamily(contentFamily); Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); admin.createTable(desc); 31
    • HBase Java API Ò HTablePool & HTableInterface HTablePool pool = new HTablePool(); HTableInterface table = pool.getTable("TableName"); 32
    • HBase Java API Ò Put byte[] cellValue = … Put p = new Put("RowKey".getBytes()); p.add("Family".getBytes(), "Qualifier".getBytes(), cellValue); table.put(p); 33
    • Chemin d’écriture 34
    • HBase Java API Ò Get Get g = new Get("RowKey".getBytes()); g.addColumn("Family".getBytes(), "Qualifier".getBytes()); Result r = table.get(g); Ò Result byte[] cellValue = r.getValue("Family".getBytes(), "Qualifier".getBytes()); 35
    • HBase Java API Ò Scan Scan scan = new Scan(); scan.setStartRow("StartRow".getBytes()); scan.setStopRow("StopRow".getBytes()); scan.addColumn("Family".getBytes(), "Qualifier".getBytes()); ResultScanner rs = table.getScanner(scan); for (Result r : rs) { // … } 36
    • Chemin de lecture 37
    • Sommaire Ò  Présentation Ò  Cas d’utilisation Ò  Architecture Ò  Cas Pratique Ò  Conclusion Ò  Références Ò  Annexes 38 Cas d’utilisations
    • Cas d’utilisations 39
    • Cas d’utilisations 40 Vous ?
    • Etude de cas
    • Moteur de recherche 42
    • Table Wikipedia.fr 43
    • Création de la table Wikipedia HTableDescriptor desc = new HTableDescriptor("wikipedia"); HColumnDescriptor contentFamily = new HColumnDescriptor("content".getBytes()); contentFamily.setMaxVersions(1); desc.addFamily(contentFamily); HColumnDescriptor linksFamily = new HColumnDescriptor("links".getBytes()); linksFamily.setMaxVersions(1); desc.addFamily(linksFamily); Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); admin.createTable(desc); 44
    • HBase API : insertion de données par les Crawlers Put p = new Put(Util.toBytes(url)); p.add("content".getBytes(), "text".getBytes(), htmlParseData.getText().getBytes()); List<WebURL> links = htmlParseData.getOutgoingUrls(); int count = 0; for (WebURL outGoingURL : links) { p.add("links".getBytes(), Bytes.toBytes(count++), outGoingURL.getURL().getBytes()); } p.add("links".getBytes(), "count".getBytes(), Bytes.toBytes(count)); try { table.put(p); } catch (IOException e) { e.printStackTrace(); } 45
    • Table de l’index inversé 46
    • MapReduce 47
    • MapReduce Index inversé – algorithme method map(url, text) for all word ∈ text do emit(word, url) method reduce(word, urls) count ← 0 for all url ∈ urls do put(word, "links", count, url) count ← count + 1 put(word, "links", "count", count) 48
    • MapReduce Index inversé – Configuration public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); Job job = new Job(conf, "Reverse Index Job"); job.setJarByClass(InvertedIndex.class); Scan scan = new Scan(); scan.setCaching(500); scan.addColumn("content".getBytes(), "text".getBytes()); TableMapReduceUtil.initTableMapperJob("wikipedia", scan, Map.class, Text.class, Text.class, job); TableMapReduceUtil.initTableReducerJob("wikipedia_ri", Reduce.class, job); job.setNumReduceTasks(1); System.exit(job.waitForCompletion(true) ? 0 : 1); } 49
    • MapReduce Index inversé – Map public static class Map extends TableMapper<Text, Text> { private static final Pattern PATTERN = Pattern.compile(SENTENCE_SPLITTER_REGEX); private Text key = new Text(); private Text value = new Text(); @Override protected void map(ImmutableBytesWritable rowkey, Result result, Context context) { byte[] b = result.getValue("content".getBytes(), "text".getBytes()); String text = Bytes.toString(b); String[] words = PATTERN.split(text); value.set(result.getRow()); for (String word : words) { key.set(word.getBytes()); try { context.write(key, value); } catch (Exception e) { e.printStackTrace(); } } } } 50
    • MapReduce Index inversé – Reduce public static class Reduce extends TableReducer<Text, Text, ImmutableBytesWritable> { @Override protected void reduce(Text rowkey, Iterable<Text> values, Contex context) { Put p = new Put(rowkey.getBytes()); int count = 0; for (Text link : values) { p.add("links".getBytes(), Bytes.toBytes(count++), link.getBytes()); } p.add("links".getBytes(), "count".getBytes(), Bytes.toBytes(count)); try { context.write(new ImmutableBytesWritable(rowkey.getBytes()), p); } catch (Exception e) { e.printStackTrace(); } } } 51
    • Question Comment trier par ordre d’importance les résultats d’une recherche ? 52
    • Comptage des liens 53
    • Comptage pondéré 54
    • Définition récursive 55
    • Un peu d’algèbre linéaire 56
    • PageRank 57
    • Moteur de recherche 58
    • Digression 1 59 Google@Stanford, Larry Page et Sergey Brin – 1998 Ò 2-proc Pentium II 300mhz, 512mb, five 9gb drives Ò 2-proc Pentium II 300mhz, 512mb, four 9gb drives Ò 4-proc PPC 604 333mhz, 512mb, eight 9gb drives Ò 2-proc UltraSparc II 200mhz, 256mb, three 9gb drives, six 4gb drives Ò Disk expansion, eight 9gb drives Ò Disk expansion, ten 9gb drives CPU   2933  MHz  (sur  10  CPUs)   RAM   1792  MB   HD   366  GB  
    • Digression 2 60 Google 1999 – Premier serveur de production
    • Une formule sans maths J Données + science + perspicacité = valeur 61
    • Sécurité
    • Sécurité Ò Kerberos Ò Access Control List 63
    • Sommaire Ò  Présentation Ò  Cas d’utilisation Ò  Architecture Ò  Cas Pratique Ò  Conclusion Ò  Références Ò  Annexes 64 Ecosystème Hadoop
    • Ecosystème Hadoop Ò Hadoop Ò Pig Ò Hive Ò Mahout Ò Whirr 65
    • Thank you