Upload
miriade-spa
View
28
Download
0
Embed Size (px)
Citation preview
PostgreSQL - Hadoop: Why not?
Matteo Durighetto
Italian PostgreSQL Users Group www.itpug.org
www.postgresql.org
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
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 - [email protected] - ITPUG.org
WHOAMI:
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - 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 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Casi d’uso dell’offloading
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
PostgreSQL - Hadoop
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
Architettura
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
immagine da : http://www.bigsql.org/hadoopfdw/
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 - [email protected] - ITPUG.org
Architettura
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
Ecosistema Hadoop
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
Architettura
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
immagine da : http://www.cloudera.com
Chi sono?
Hadoop Yarn
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
Architettura
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Immagine da : hadoop.apache.org
Chi sono?
HDFS
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
Architettura
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Immagine da : hadoop.apache.org
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 - [email protected] - ITPUG.org
Metodologie di porting
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Metodologie di porting
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Metodologie di porting
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Metodologie di porting
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 [email protected]:/usr/lib/hadoop/hadoop-common-2.6.0-cdh5.5.0.jar /opt/hadoop/hive-client-lib/
scp [email protected]:/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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
Modificare il .bashrc dell’utete postgres aggiungendo (:
##hadoop fdw jar class pathexport HADOOP_FDW_CLASSPATH=~/bigsql/pg96/lib/postgresql/Hadoop_FDW.jar:$(echo /opt/hadoop/hive-client-lib/*.jar | tr ' ' :)###library pathexport LD_LIBRARY_PATH=~/bigsql/pg96/lib/postgresql:~/bigsql/pg96/lib:$LD_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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
Creare fdw :
cd $HOME/pg96/##carico enviroment : . pg96.env
psql -U postgrespsql (9.6.1)Type "help" for help.
postgres=# create database testfdw ;postgres=# \c testfdwYou 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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
Chi sono?
Spazio a confronto :
PostgreSQL :
Hadoop Parquet :
Copyright 2012 Miriade S.p.a.Copyright 2012 Miriade S.p.a. Matteo Durighetto - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Fdw postgres
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
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 - [email protected] - ITPUG.org
Hue - PostgreSQL
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016
AttribuzioneNon commercialeCondividi allo stesso modo3.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 - [email protected] - ITPUG.org
License
PGDay.IT 2016Camera di Commercio di Prato
Martedì 13 Dicembre 2016