35

Dans les coulisses de Google BigQuery

Embed Size (px)

Citation preview

Page 1: Dans les coulisses de Google BigQuery
Page 2: Dans les coulisses de Google BigQuery

2/35

Qui suis-je ?Aurélie Vaché

Développeuse Full Stack chez

@aurelievache

#bigquery @aurelievache

Page 3: Dans les coulisses de Google BigQuery

“Big Data” != “Hadoop”

3/35#bigquery @aurelievache

Page 4: Dans les coulisses de Google BigQuery

GFS

MapReduce

BigTable

2004 2008 2012

Dremel

Colossus

BigQuery

Google et la révolution Big Data

2002 2006 2010 2015

DatalabBeta

4/35#bigquery @aurelievache

Page 5: Dans les coulisses de Google BigQuery

● 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 ?

5/35#bigquery @aurelievache

Page 6: Dans les coulisses de Google BigQuery

Qu’est ce que BigQuery ?

6/35#bigquery @aurelievache

Page 7: Dans les coulisses de Google BigQuery

Pourquoi utiliser BigQuery ?- SLA 99.9%

- Infrastructure de Google

- Pas de coût de serveurs, d'opération et de maintenance

- Moins complexe écosystème Hadoop

- BigQuery SQL

8/35#bigquery @aurelievache

Page 8: Dans les coulisses de Google BigQuery

Pourquoi utiliser BigQuery ?- Scalabilité

- Rapide

- “Pay only for what you use”

- Requêtes synchrones et asynchrones

- Facilité d’interconnexion avec outils tiers

9/35#bigquery @aurelievache

Page 9: Dans les coulisses de Google BigQuery

Inconvénients/Limitations- “ Append-only tables ”

- Latences réseau possibles

- Performant sur des énormes tables (Go, To, Po), moins sur des petites tables

- Les données doivent être structurées

10/35#bigquery @aurelievache

Page 10: Dans les coulisses de Google BigQuery

● BigQuery => Analytics.

● Cloud Bigtable => NoSQL - stockage a grande échelle, update possible.

Différence entre BigQuery et Bigtable ?

7/35#bigquery @aurelievache

Page 11: Dans les coulisses de Google BigQuery

Usages

11/35#bigquery @aurelievache

Page 12: Dans les coulisses de Google BigQuery

Quotas

Requêtes

● 20 000 req/jour● 100 To données

100 000 lignes insérées /sec / table

StreamingChargement

● 1 000 jobs /table / jour● 10 000 jobs /projet

/jour● ...

12/35#bigquery @aurelievache

Page 13: Dans les coulisses de Google BigQuery

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

13/35#bigquery @aurelievache

Page 14: Dans les coulisses de Google BigQuery

Architecture technique1. BDD orientée colonne

14/35#bigquery @aurelievache

Page 15: Dans les coulisses de Google BigQuery

Architecture technique2. Architecture en arbre

15/35#bigquery @aurelievache

Page 16: Dans les coulisses de Google BigQuery

ComposantsProject (billing, top-level container)

Dataset (organization, access control)

Job (query, import, export, copy)

Table (data with schema) <project>:<dataset>.<table_name>

16/35#bigquery @aurelievache

Page 17: Dans les coulisses de Google BigQuery

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

17/35#bigquery @aurelievache

Page 18: Dans les coulisses de Google BigQuery

Comment charger vos données ?

18/35#bigquery @aurelievache

Page 19: Dans les coulisses de Google BigQuery

Comment charger vos données ?

19/35#bigquery @aurelievache

Page 20: Dans les coulisses de Google BigQuery

L’API REST

20/35#bigquery @aurelievache

Page 21: Dans les coulisses de Google BigQuery

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

21/35#bigquery @aurelievache

Page 22: Dans les coulisses de Google BigQuery

Connecteurs

22/35#bigquery @aurelievache

Page 23: Dans les coulisses de Google BigQuery

Fonctions intéressantes :

- TOP- TABLE_DATE_RANGE- REGEXP_MATCH / REGEXP_REPLACE / REGEXP_EXTRACT

BigQuery SQLVariante de l’instruction SELECT SQL standard

… FROM (TABLE_DATE_RANGE(TDS.meetup_, TIMESTAMP('2015-11-01'), TIMESTAMP('2015-11-30')))

23/35#bigquery @aurelievache

Page 24: Dans les coulisses de Google BigQuery

Demo Time !

24/35#bigquery @aurelievache

Page 25: Dans les coulisses de Google BigQuery

Visualisation et BI ETL

Third-party toolsConnecteurs

25/35#bigquery @aurelievache

Page 26: Dans les coulisses de Google BigQuery

Performances

26/35#bigquery @aurelievache

Page 27: Dans les coulisses de Google BigQuery

Ils utilisent BigQuery

27/35#bigquery @aurelievache

Page 28: Dans les coulisses de Google BigQuery

É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

28/35#bigquery @aurelievache

Page 29: Dans les coulisses de Google BigQuery

- Coût hardware : 0 €

- Coût opé : 0 €

Passage à Google BigQuery

29/35#bigquery @aurelievache

Page 30: Dans les coulisses de Google BigQuery

Utilisation

30/35#bigquery @aurelievache

Page 31: Dans les coulisses de Google BigQuery

- Bien structurer ses données

- Split by date

- Utiliser le query cache

- Définir une date d’expiration lors de la création de la table

Astuces/Tips

31/35#bigquery @aurelievache

Page 32: Dans les coulisses de Google BigQuery

- Attention aux jointures

- Possibilité de partager un dataset/des rows à des collaborateurs

- Format date : UTC !

- Ne pas utiliser l'instruction SELECT * FROM

- UDF (User-Defined Functions)

Astuces/Tips

32/35#bigquery @aurelievache

Page 33: Dans les coulisses de Google 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

- Tuto : Real-time data analysis with Kubernetes, Cloud Pub/Sub, and BigQuery

Liens

33/35#bigquery @aurelievache

Page 34: Dans les coulisses de Google BigQuery

Pour aller plus loin ...

34/35#bigquery @aurelievache

Page 35: Dans les coulisses de Google BigQuery

SELECT questions FROM meetup:TDS.bigquery

35/35#bigquery @aurelievache