Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#9 Dans les coulisses de Google BigQuery

#9 Dans les coulisses de Google BigQuery

Présentation effectuée le 25 Novembre 2015 au Toulouse Data Science, soirée co-organisée par Duchess France, par Aurélie Vache.

Les ingénieurs de Google avaient du mal à suivre le rythme de croissance de leurs données. Le nombre d’utilisateurs de Gmail augmentait constamment et était de l’ordre de centaines de millions; Il y avait plus de 100 milliards de recherches Google effectuées chaque mois.
Essayer de donner un sens à toutes ces données prenait un temps fou et était une expérience très frustrante pour les équipes de Google.
Ce problème de données a conduit l’élaboration en 2008 d’un outil interne appelé Dremel, qui a permis aux employés de Google d’exécuter des requêtes SQL extrêmement rapides sur un grand ensemble de données.
En 2012 lors de la Google I/O, Google à annoncé la sortie de Google BigQuery, l'implémentation externe de Dremel...

Toulouse Data Science

November 25, 2015
Tweet

More Decks by Toulouse Data Science

Other Decks in Programming

Transcript

  1. GFS MapReduce BigTable 2004 2008 2012 Dremel Colossus BigQuery Google

    et la révolution Big Data 2002 2006 2010 2015 DatalabBeta 4/35
  2. 5/35 • AaaS (Analytics as a Service) • stocker, analyser,

    exécuter des requêtes sur des grands volumes de données et partager ses données structurées Qu’est ce que BigQuery ?
  3. 7/35 Pourquoi utiliser BigQuery ? - SLA 99.9% - Pas

    de coût de serveurs, d'opération et de maintenance - Infrastructure de Google - Moins complexe écosystème Hadoop - BigQuery SQL
  4. 8/35 Pourquoi utiliser BigQuery ? - Scalabilité - Rapide -

    “Pay only for what you use” - Requêtes synchrones et asynchrones - Facilité d’interconnexion avec outils tierces
  5. 9/35 Inconvénients/Limitations : - “ Append-only tables ” - Latences

    réseau possibles - Performant sur des énormes tables (Go, To, Po), moins sur de petites tables - Les données doivent être structurées
  6. 11/35 Quotas : Requêtes • 20 000 req/jour • 100

    To données 10 000 lignes insérées /sec / table Streaming Chargement • 1 000 jobs /table / jour • 10 000 jobs /projet /jour • ...
  7. 12/35 Coûts : Gratuit : Chargement des données + Export

    des données + tables lues + copies de tables + données dans le cache. Requêtes 5$ par To de requêtes 0,01$ pour 200 Mo Stockage Insertion 0,020$/Go/mois
  8. 16/35 Composants Project (billing, top-level container) Dataset (organization, access control)

    Job (query, import, export, copy) Table (data with schema) <project>:<dataset>.<table_name>
  9. 17/35 Composants > Table Ex de schéma : date:TIMESTAMP,cid:INTEGER,cl,toto,titi,uid:INTEGER Type

    de données possible : string, integer, float, boolean, timestamp et record (nested / repeatable).
  10. 21/35 Exemple en JAVA : // insert data List<TableDataInsertAllRequest.Rows> rowList

    = new ArrayList<TableDataInsertAllRequest.Rows>(); rowList.add(new TableDataInsertAllRequest.Rows() .setInsertId(""+System.currentTimeMillis()) .setJson(new TableRow().set("adt", null))); TableDataInsertAllRequest content = new TableDataInsertAllRequest().setRows(rowList); TableDataInsertAllResponse response = bigquery.tabledata().insertAll( PROJECT_NUMBER, DATASET_ID, TABLE_ID, content).execute(); System.out.println("kind="+response.getKind()); System.out.println("errors="+response.getInsertErrors()); System.out.println(response.toPrettyString());
  11. 23/35 Fonctions intéressantes : - TOP - TABLE_DATE_RANGE - REGEXP_MATCH

    / REGEXP_REPLACE / REGEXP_EXTRACT BigQuery SQL : Variante de l’instruction SELECT SQL standard
  12. 28/35 État des lieux - Cluster Hadoop : - 12

    serveurs sous Cloudera Manager v4.6 et CDH 4.3.0 - Facturation de l'électricité pour une dizaine de serveurs : environ 2 000 kilowatt heure / semaine : soit une centaine d'euros par mois - Coût hardware - Coût opérationnel - Évènement : Changement et réduction d’équipe
  13. 29/35 - Coût hardware : 0 € - Coût opé

    : 0 € Passage à Google BigQuery :
  14. 31/35 - Bien structurer ses données - Split by date

    - Utiliser le query cache - Setter une date d’expiration lors de la création de la table Astuces/Tips :
  15. 32/35 - Attention aux jointures - Possibilité de partager un

    dataset/des rows à des collaborateurs - Format date : UTC ! - Ne pas utiliser l'instruction SELECT * FROM Astuces/Tips :
  16. 33/35 - BigQuery : https://cloud.google.com/bigquery/ - SLA : https://cloud.google.com/bigquery/sla -

    Quotas : https://cloud.google.com/bigquery/quota-policy - Prix : https://cloud.google.com/bigquery/#pricing - Pricing calculator : https://cloud.google.com/products/calculator/ - SQL : https://cloud.google.com/bigquery/query-reference Liens