37
Dans les coulisses de Google BigQuery “Fully managed data warehouse”

Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Embed Size (px)

Citation preview

Page 1: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Dans les coulisses de Google BigQuery“Fully managed data warehouse”

Page 2: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

2/34

Qui suis-je ?Aurélie Vache

Lead Developer chez

@aurelievache

#BigQuery #DevFestToulouse @aurelievache

Page 3: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

“Big Data” != “Hadoop”

3/34#BigQuery #DevFestToulouse @aurelievache

Page 4: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

GFS

MapReduce

Dremel

2004 2010 2015

BigQueryBeta

BigQuery

Dremel X

Google et la révolution Big Data

2002 2006 2012 2016

Capacitor

4/34#BigQuery #DevFestToulouse @aurelievache

Page 5: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

● 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/34#BigQuery #DevFestToulouse @aurelievache

SQL QueryPetabit Network

BigQuery

Storage ComputeStreaming Ingest

Fast Batch Load

Page 6: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Qu’est ce que BigQuery ?

6/34#BigQuery #DevFestToulouse @aurelievache

Page 7: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Pourquoi utiliser BigQuery ?- Hautement disponible. SLA 99.9%

- Infrastructure de Google

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

- Moins complexe écosystème Hadoop

- BigQuery + Standard SQL

7/34#BigQuery #DevFestToulouse @aurelievache

Page 8: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Pourquoi utiliser BigQuery ?- Scalabilité

- Rapide

- “Pay only for what you use”

- Données encryptées

- Facilité d’interconnexion avec outils tiers

8/34#BigQuery #DevFestToulouse @aurelievache

Page 9: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

BigQuery: 5 ans d'innovation transparente

9/34#BigQuery #DevFestToulouse @aurelievache

2010 2011 2012 2013 2014

Public launch

Large query results

2015 2016

900

300

0

1,200

Beta Release at Google I/O

Dremel X

Big JOIN support

Dynamic Execution

Capacitor

Faster shuffle

100k qps streaming

User-defined functions

Code Submits

Page 10: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

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

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

moins sur des petites tables

- Les données doivent être structurées

10/34#BigQuery #DevFestToulouse @aurelievache

* BigQuery DML

Page 11: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Usages

11/34#BigQuery #DevFestToulouse @aurelievache

Page 12: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Quotas

Requêtes

● 1000 tables /query● query size limit:

unlimited

● 100 000 lignes insérées /sec / table *● 1 000 000 lignes /sec

/projet

StreamingChargement

● 1 000 jobs /table / jour● 10 000 colonnes /table● ...

12/34#BigQuery #DevFestToulouse @aurelievache

https://cloud.google.com/bigquery/quota-policy

Page 13: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

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,05$/Go

Stockage Insertion

● 0,02$/Go/mois● 0,01$/Go/mois

long term storage

13/34#BigQuery #DevFestToulouse @aurelievache

https://cloud.google.com/bigquery/#pricing

Page 14: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Moteur de stockage : ColumnIO (2006-2015)

14/34#BigQuery #DevFestToulouse @aurelievache

SELECT play_count FROM songs WHERE name = “Here Comes The Sun”;

Decompress Filter

xc*@6j

c8!af

8ec2(*&

7h!%d2A

a7c%a1

c-%1G!

F$#h5

rm7y5

a%6%#

H#$$i

4t#@h

@#Ds

{5375, Hey Jude}

{2188, I Want to Hold Your Hand}

{9363, While My Guitar Gently Weeps}

{9502, My Michelle}

{7383, Here Comes The Sun}

{3912, Strawberry Fields Forever}

Here Comes The Sun

Page 15: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Moteur de stockage : Capacitor (2016-now)

15/34#BigQuery #DevFestToulouse @aurelievache

SELECT play_count FROM songs WHERE name = “Here Comes The Sun”;

Filter CompressDecompress

{7833}

xc*@6j

c8!af

8ec2(*&

7h!%d2A

a7c%a1

c-%1G!

F$#h5

rm7y5

a%6%#

H#$$i

4t#@h

@#Ds

4t#@h Here Comes The Sun

Page 16: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Dremel == BigQuery

16/34#BigQuery #DevFestToulouse @aurelievache

● Long-lived Serving Tree

Distributed Storage

Leaf Leaf LeafLeaf

Mixer 1Mixer 1

● Partial Reduction

● Columnar Storage

● Diskless data flow

Mixer 0

Architecture de Dremel : 2006 - 2015

Page 17: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Dremel X == BigQuery

17/34#BigQuery #DevFestToulouse @aurelievache

Architecture de Dremel X : 2015 - maintenant

Master

Distributed Storage

Shard Shard ShardShard

● Columnar Storage

● Dynamic Serving TreeShard Shard

Shard Shard Shard Shard

Shard Shard

Page 18: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

ComposantsProject (billing, top-level container)

Dataset (organization, access control)

Job (query, import, export, copy)

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

18/34#BigQuery #DevFestToulouse @aurelievache

Page 19: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Comment charger vos données ?

19/34#BigQuery #DevFestToulouse @aurelievache

CSVJSONAvroGoogle Sheets

Page 20: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Comment charger vos données ?

20/34#BigQuery #DevFestToulouse @aurelievache

JSONAvro

Page 21: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

L’API REST

21/34#BigQuery #DevFestToulouse @aurelievache

Page 22: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

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

22/34#BigQuery #DevFestToulouse @aurelievache

Page 23: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

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(DevFest.toulouse_, TIMESTAMP('2016-11-02'), TIMESTAMP('2016-11-03')))

23/34#BigQuery #DevFestToulouse @aurelievache

Page 24: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Demo Time !

24/34#BigQuery #DevFestToulouse @aurelievache

Page 25: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Mais attention :

- Activer Standard SQL- Quotas- /!\ UPDATE tables partitionnées NOK

https://cloud.google.com/bigquery/sql-reference/data-manipulation-language

Data Manipulation LanguageINSERT, UPDATE et DELETE dans BigQuery !!!

QueryResponse query = bigquery.jobs().query( this.projectId,

new QueryRequest() .setTimeoutMs(timeout) .setQuery(query) .setUseLegacySql(useLegacySql)) .execute();

25/34#BigQuery #DevFestToulouse @aurelievache

Page 26: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Visualisation et BI ETL

Third-party toolsConnecteurs

26/34#BigQuery #DevFestToulouse @aurelievache

Page 27: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

É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

27/34#BigQuery #DevFestToulouse @aurelievache

Page 28: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

- Coût hardware : 0 €

- Coût opé : 0 €

Passage à Google BigQuery

28/34#BigQuery #DevFestToulouse @aurelievache

Page 29: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Utilisation

29/34#BigQuery #DevFestToulouse @aurelievache

=> 6.2 milliards msg/an

Page 30: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

- Bien structurer ses données

- Table sharding (old way)

- Table partitioning (new way)

- Utiliser le query cache

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

Astuces/Tips

30/34#BigQuery #DevFestToulouse @aurelievache

20160101

20160102

20160131

sales

Page 31: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

- 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

31/34#BigQuery #DevFestToulouse @aurelievache

Page 32: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

- Google presentation : https://www.youtube.com/watch?v=eyBK9nj-7AA

- SLA : https://cloud.google.com/bigquery/sla

- Pricing calculator : https://cloud.google.com/products/calculator/

- SQL : https://cloud.google.com/bigquery/query-reference

- Table partitioning : https://cloud.google.com/bigquery/docs/partitioned-tables

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

- Moving tables from Redshift to BigQuery : https://github.com/iconara/bigshift

Liens

32/34#BigQuery #DevFestToulouse @aurelievache

Page 33: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Pour aller plus loin ...

33/34#BigQuery #DevFestToulouse @aurelievache

Page 34: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

SELECT questions

FROM DevFest:Toulouse.bigquery

34/34#BigQuery #DevFestToulouse @aurelievache

Page 35: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

#BigQuery #DevFestToulouse @aurelievache

Bonus Track

Page 36: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Performances

#BigQuery #DevFestToulouse @aurelievache +1

Page 37: Dans les coulisses de Google BigQuery - DevFest Toulouse 2016

Ils utilisent BigQuery

+2#BigQuery #DevFestToulouse @aurelievache