Upload
aurelie-vache
View
338
Download
0
Embed Size (px)
Citation preview
Dans les coulisses de Google BigQuery“Fully managed data warehouse”
2/34
Qui suis-je ?Aurélie Vache
Lead Developer chez
@aurelievache
#BigQuery #DevFestToulouse @aurelievache
“Big Data” != “Hadoop”
3/34#BigQuery #DevFestToulouse @aurelievache
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
● 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
Qu’est ce que BigQuery ?
6/34#BigQuery #DevFestToulouse @aurelievache
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
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
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
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
Usages
11/34#BigQuery #DevFestToulouse @aurelievache
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
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
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
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
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
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
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
Comment charger vos données ?
19/34#BigQuery #DevFestToulouse @aurelievache
CSVJSONAvroGoogle Sheets
Comment charger vos données ?
20/34#BigQuery #DevFestToulouse @aurelievache
JSONAvro
L’API REST
21/34#BigQuery #DevFestToulouse @aurelievache
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
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
Demo Time !
24/34#BigQuery #DevFestToulouse @aurelievache
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
Visualisation et BI ETL
Third-party toolsConnecteurs
26/34#BigQuery #DevFestToulouse @aurelievache
É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
- Coût hardware : 0 €
- Coût opé : 0 €
Passage à Google BigQuery
28/34#BigQuery #DevFestToulouse @aurelievache
Utilisation
29/34#BigQuery #DevFestToulouse @aurelievache
=> 6.2 milliards msg/an
- 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
- 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
- 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
Pour aller plus loin ...
33/34#BigQuery #DevFestToulouse @aurelievache
SELECT questions
FROM DevFest:Toulouse.bigquery
34/34#BigQuery #DevFestToulouse @aurelievache
#BigQuery #DevFestToulouse @aurelievache
Bonus Track
Performances
#BigQuery #DevFestToulouse @aurelievache +1
Ils utilisent BigQuery
+2#BigQuery #DevFestToulouse @aurelievache