1. PostgreSQL - Hadoop: Why not?
Matteo Durighetto
Italian PostgreSQL Users Group
www.itpug.org
www.postgresql.org
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
2. Chi sono?
● Speaker/Author:
○ Matteo Durighetto
○ DBA @ Miriade S.p.A.
○ Tecnologie db: Oracle, PostgreSQL, MySQL, MSSQL
○ Tecnologie nosql: Redis, Hadoop, SolrCloud
○ Tecnologie os/virtual/cloud: AWS, Vmware,XEN, Linux, *NIX,
Windows
○ Membro e Presidente ITPUG
○ Cloudera Certified Administrator for Apache Hadoop
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
WHOAMI:
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
3. Chi sono?
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
INDEX
● Casi d'uso dell'offloading / integration
● Architettura
● Metodologie di porting del dato da PostgreSQL
ad Hadoop
● Fdw per rendere trasparente l'estensione della
base dati postgres con quella Hadoop
● hue -> postgresql
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
4. Chi sono?
In genere nei sistemi odierni abbiamo almeno due aree di dati :
● OLTP : area “leggera” per gestire dati real-time
● DWH : area di analisi di correlazioni già conosciute
Con Il tipico passaggio OLTP ==> DWH
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
5. Chi sono?
Col tempo si sono posti due tipi di problemi nei sistemi informativi:
● OLTP: crescita per mancanza di offloading di tutto il dato verso il
DWH, e in genere comporta un abbassamento dei tempi di
risposta.
● DWH: ci permette di analizzare dati di conosciamo già le
correlazioni. Inoltre le analisi di solito sono limitate
temporalmente.
In più a livello costi ci si è trovati a:
● Costi maggiori per immagazzinamento su SAN/NFS ( mitigati da
differenti tier di dischi, ma comunque alti )
● Costi maggiori per scale up del server singolo.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
6. Chi sono?
Da queste premesse nasce l’idea di un’area ulteriore, destrutturata o
in parte strutturata che abbia scale up e ci permetta di ridurre i costi:
Data Lake: area di offloading del dato ( OLTP / DWH ) e
storicizzazione, interrogabile e basato su architettura scale out
orizzontale. Ideale Schema on Read e non più Schema on Write.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
7. Chi sono?
PostgreSQL tipicamente viene deployato su 3 tipologie di architetture:
● Cloud/Virtuale [ con SAN ]
● SAN
● Dischi interni
L’ultima architettura per scalare, tipicamente si affida allo sharding
applicativo o vi sono tentativi con PostgreSQL-XL o Citus ( ex-
pg_shard ) di scaling orizzontale.
Tuttavia soluzioni come Citus e PostgreSQL-XL sono più adatte a far
scalare OLTP o DWH, che per un Data Lake.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
8. Chi sono?
PostgreSQL - Hadoop
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Architettura
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
immagine da : http://www.bigsql.org/hadoopfdw/
9. Chi sono?
What Is Apache Hadoop?
The Apache™ Hadoop® project develops open-source software for reliable, scalable,
distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed
processing of large data sets across clusters of computers using simple programming
models. It is designed to scale up from single servers to thousands of machines, each
offering local computation and storage. Rather than rely on hardware to deliver
high-availability, the library itself is designed to detect and handle failures at the application
layer, so delivering a highly-available service on top of a cluster of computers, each of
which may be prone to failures.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Architettura
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
10. Chi sono?
Ecosistema Hadoop
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Architettura
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
immagine da : http://www.cloudera.com
11. Chi sono?
Hadoop Yarn
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Architettura
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Immagine da : hadoop.apache.org
12. Chi sono?
HDFS
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Architettura
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Immagine da : hadoop.apache.org
13. Chi sono?
Il porting può avvenire in vari modi :
● Applicativo
● ETL ( kettle )
● Sqoop2
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Metodologie di porting
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
14. Chi sono?
Sqoop :
Installare driver sul nodo Hadoop con Sqoop:
wget http://jdbc.postgresql.org/download/postgresql-9.2-1002.jdbc4.jar
cp postgresql-9.2-1002.jdbc4.jar /var/lib/sqoop/
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Metodologie di porting
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
15. Chi sono?
Sqoop :
Importiamo sulla quickstart.cloudera (hadoop) la tabella orders dal
database testfdw con l’utente test :
sqoop import --table orders -m 1 --connect
jdbc:postgresql://10.193.1.3:5432/testfdw --username=test
--password=test --compression-codec=snappy --as-parquetfile
--warehouse-dir=/user/hive/warehouse --hive-import
Tra le opzioni c’è anche il --direct che accelera la modalità di
estrazione, e il “-m” che indica il livello di parallelismo.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Metodologie di porting
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
16. Chi sono?
Sqoop :
Sqoop supporta delle modalità incrementali :
--check-column ==> colonna incrementante ( tipo timestamp )
--last-value ==> ultimo valore importato
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Metodologie di porting
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
17. Chi sono?
Progetto fdw
Tra i vari progetti, il più interessante è quello di BiSQL :
https://bitbucket.org/openscg/hadoop_fdw
Si può installare o partendo dalla compilazione:
https://github.com/EnterpriseDB/hdfs_fdw/blob/master/INSTALL
o in maniera più semplice
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
18. Chi sono?
Progetto fdw
Nei prossimi passi si comporrà un sistema :
● Postgresql Server ( debian base )
● Quick Start Cloudera 5.5 (
http://www.cloudera.com/downloads/quickstart_vms/5-8.html )
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
19. Chi sono?
Installazione Postgresql + fdw semplificata ( con distro bigsql ) :
python -c "$(curl -fsSL http://s3.amazonaws.com/pgcentral/install.py)"
cd bigsql
./pgc install pg96
./pgc install hadoop_fdw2-pg96
./pgc install java8
./pgc start pg96
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
20. Chi sono?
Recuperare le java class di hadoop dal server hadoop
quickstart.cloudera :
/usr/lib/hadoop/hadoop-common-2.6.0-cdh5.5.0.jar
/usr/lib/hive/lib/hive-jdbc-1.1.0-cdh5.5.0-standalone.jar
Come root sul postgres definire una directory dove piazzare le classi
hadoop:
mkdir -p /opt/hadoop/hive-client-lib
scp root@quickstart.cloudera:/usr/lib/hadoop/hadoop-common-2.6.0-cdh5.5.0.jar
/opt/hadoop/hive-client-lib/
scp root@quickstart.cloudera:/usr/lib/hive/lib/hive-jdbc-1.1.0-cdh5.5.0-standalone.jar
/opt/hadoop/hive-client-lib/
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
21. Chi sono?
Verifica se ci colleghiamo ad hive con il codice di prova ripotarto in :
https://bitbucket.org/openscg/hadoop_fdw
Linkare le librerie sul server postgres libjvm.so sotto la pg lib :
cd $HOME/bigsql/pg96/lib
ln -s $HOME/bigsql/java8/jre/lib/amd64/server/libjvm.so libjvm.so
cd $HOME/bigsql/pg96/lib/postgresql
ln -s $HOME/bigsql/java8/jre/lib/amd64/server/libjvm.so libjvm.so
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
22. Chi sono?
Modificare il .bashrc dell’utete postgres aggiungendo (:
##hadoop fdw jar class path
export
HADOOP_FDW_CLASSPATH=~/bigsql/pg96/lib/postgresql/Hadoop_
FDW.jar:$(echo /opt/hadoop/hive-client-lib/*.jar | tr ' ' :)
###library path
export
LD_LIBRARY_PATH=~/bigsql/pg96/lib/postgresql:~/bigsql/pg96/lib:$L
D_LIBRARY_PATH
Riapriamo una sessione e facciamo ripartire il postgres
cd ~/bigsql
./pgc stop pg96
./pgc start pg96
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
23. Chi sono?
Creare fdw :
cd $HOME/pg96/
##carico enviroment :
. pg96.env
psql -U postgres
psql (9.6.1)
Type "help" for help.
postgres=# create database testfdw ;
postgres=# c testfdw
You are now connected to database "testfdw" as user "postgres".
testfdw=# create extension hadoop_fdw;
CREATE EXTENSION
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
24. Chi sono?
Test estensione (verso tabella orders creata con sqoop):
CREATE SERVER hive_server FOREIGN DATA WRAPPER
hadoop_fdw
OPTIONS (HOST 'quickstart.cloudera', PORT '10000');
CREATE USER MAPPING FOR PUBLIC SERVER hive_server;
CREATE FOREIGN TABLE hdp_orders (
order_id INT,
order_date BIGINT,
order_customer_id INT,
order_status TEXT
) SERVER hive_server OPTIONS ( TABLE 'orders');
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
25. Chi sono?
Test estensione :
select count(*) from hdp_orders ;
count
-------
68883
(1 row)
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
26. Chi sono?
Spazio a confronto :
PostgreSQL :
Hadoop Parquet :
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
27. Chi sono?
Spazio a confronto :
Fr=fattore resilienza
Pg : 4,2Mb x FRpg = 4.2Mb*1.3 ~ 5,5Mb
Hdp : 0,476xFRhdp = 0,476*3 ~ 1,5MB
Quindi con compressione minima ( snappy ) applicata al formato
Parquet, abbiamo circa un fattore di saving tra le 3 e 4 volte.
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Fdw postgres
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
28. Chi sono?
Si può inoltre abilitare l’interfaccia HUE (
http://quickstart.cloudera:8888 ) a puntare nativamente anche al
motore rdbms :
yum install postgresql-devel gcc python-devel
sudo -u hue /usr/lib/hue/build/env/bin/pip install setuptools
sudo -u hue /usr/lib/hue/build/env/bin/pip install psycopg2
modificare hue.ini ( dal cloduera manager o a mano ) :
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
29. Chi sono?
[librdbms]
[[databases]]
[[[postgresql]]]
# Name to show in the UI.
nice_name="testfdw"
name=testfdw
engine=postgresql
host=<postgresql_ip>
port=5432
user=test
password=test
Poi restart hue
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
30. Chi sono?
Hue : avrete nel tab del query editor anche il db postgres!
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016
31. Attribuzione
Non commerciale
Condividi allo stesso modo
3.0 Italia
https://creativecommons.org/licenses/by-nc-sa/3.0/it/
Copyright 2016 Miriade S.p.A. - http://www.miriade.it
Copyright 2012 Miriade S.p.a.
Grazie per l'attenzione
Copyright 2012 Miriade S.p.a.
Matteo Durighetto - m.durighetto@miriade.it - ITPUG.org
License
PGDay.IT 2016
Camera di Commercio di Prato
Martedì 13 Dicembre 2016