SlideShare a Scribd company logo
1 of 14
Download to read offline
Construindo um data warehouse
com Pentaho e Docker
Wellington Marinho
wpmarinho@globo.com
Business Analytics
Estudo de Caso - EDW CENIPA
EDW CENIPA é um projeto opensource, criado para prover análises dinâmicas de ocorrências aeronáuticas,
ocorridas na aviação civil brasileira. O projeto utiliza técnicas e ferramentas de BI, explorando tecnologias
inovadoras e de baixo custo. Historicamente, plataformas de Business Intelligence são caras e inviáveis
para pequenos projetos. Esses projetos exigem qualificação especializada e custos altos de
desenvolvimento. Este trabalho tem a pretensão de quebrar um pouco esta barreira. O que não significa
pouca dedicação, empenho e esforço.
Todas as análises têm como base os dados abertos fornecidos pelo CENIPA, com histórico de ocorrências
dos últimos 10 anos:
• http://dados.gov.br/dataset/ocorrencias-aeronauticas-da-aviacao-civil-brasileira
Os gráficos foram inspirados no relatório disponibilizado no link:
• http://www.cenipa.aer.mil.br/cenipa/index.php/estatisticas/estatisticas/panorama.
Recursos
Seguem alguns serviços, ferramentas e plataformas que foram utilizados para desenvolver e implantar o projeto:
• Amazon Web Services - https://aws.amazon.com/ - Serviços de infraestrutura de nuvem
• Sistema Operacional Linux - CentOS 6 / Ubuntu 14
• GitHub - https://github.com/ - Serviço de Web Hosting Compartilhado para projetos que usam o controle de
versionamento
• Docker - https://www.docker.com/ - Plataforma aberta para construir e rodar aplicações distribuídas.
• Pentaho - http://www.pentaho.com/ e http://community.pentaho.com/ - Plataforma open source de Big Data,
Data Integration e Business Analytics
Requisitos
• Sistema Operacional com 2GB de RAM e 5GB de espaço em disco
• Docker v1.7.1
• CentOS: https://docs.docker.com/installation/centos/
• Ubuntu: https://docs.docker.com/installation/ubuntulinux/
• Mac : https://docs.docker.com/installation/mac/
• Docker Compose v1.4.2 - https://docs.docker.com/compose/install/
$ yum update -y
$ yum install -y docker
$ service docker start
$ usermod -a -G docker ec2-user
$ yum install -y git
$ pip install -U docker-compose
$ PATH=$PATH:/usr/local/bin
Instalação rápida no Amazon Linux AMI
Comandos básicos
$ docker info
$ docker --help
$ docker COMMAND --help
$ docker run --rm -it busybox echo "Olá, esse é meu primeiro container“
$ docker ps
$ docker images
$ docker build –t repositorio/imagem:tag .
$ docker build -t teste/myimage .
Criar um arquivo Dockerfile
Construir umaa imagem
FROM busybox
CMD ["echo", "Olá, esse é meu primeiro container"]
Criar um container
$ docker run --rm teste/myimage
Pentaho + Docker – Criando arquivo Dockerfile
FROM java:7
MAINTAINER Wellington Marinho wpmarinho@globo.com
# Init ENV
ENV BISERVER_VERSION 5.4
ENV BISERVER_TAG 5.4.0.1-130
ENV PENTAHO_HOME /opt/pentaho
# Apply JAVA_HOME
RUN . /etc/environment
ENV PENTAHO_JAVA_HOME $JAVA_HOME
ENV PENTAHO_JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64
ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64
# Install Dependences
RUN apt-get update; apt-get install zip -y; 
apt-get install wget unzip git -y; 
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*;
RUN mkdir ${PENTAHO_HOME};
# Download Pentaho BI Server
RUN /usr/bin/wget --progress=dot:giga http://downloads.sourceforge.net/project/pentaho/Business%20Intelligence%20Server/${BISERVER_VERSION}/biserver-ce-${BISERVER_TAG}.zip
-O /tmp/biserver-ce-${BISERVER_TAG}.zip; 
/usr/bin/unzip -q /tmp/biserver-ce-${BISERVER_TAG}.zip -d $PENTAHO_HOME; 
rm -f /tmp/biserver-ce-${BISERVER_TAG}.zip $PENTAHO_HOME/biserver-ce/promptuser.sh; 
sed -i -e 's/(exec ".*") start/1 run/' $PENTAHO_HOME/biserver-ce/tomcat/bin/startup.sh; 
chmod +x $PENTAHO_HOME/biserver-ce/start-pentaho.sh
RUN useradd -s /bin/bash -d ${PENTAHO_HOME} pentaho; chown -R pentaho:pentaho ${PENTAHO_HOME};
#Always non-root user
USER pentaho
WORKDIR /opt/pentaho
EXPOSE 8080
CMD ["sh", "/opt/pentaho/biserver-ce/start-pentaho.sh"]
Pentaho BI Server
$ docker build -t pentaho/biserver:5.4 .
$ docker run --rm -p 8080:8080 -it pentaho/biserver:5.4
Construir a imagem e rodar um containter
Abrir o navegador e abrir o Pentaho BI Server
GitHub
docker-pentaho
( Dockerfile / scripts )
pentaho-biserver:5.4
( imagem)
edw-cenipa
( Dockerfile / scripts )
BI SERVER / PDI
PROJETO EDW
pentaho-kettle:5.4
( imagem)
BI SERVER
PDI
Docker Hub
Jenkins + Docker Compose
Amazon EC2
BI SERVER
Amazon EC2
PDI
Amazon RDS
Postgresql / Redshift
ETL
Fontes de Dados
Arquitetura
Projeto EDW CENIPA
Instalação do Projeto
$ wget -O - https://raw.githubusercontent.com/wmarinho/edw_cenipa/master/easy_install | sh
Verificar execução dos containers
$ docker ps
O projeto possui 3 containers:
• edwcenipa_db_1 - Container com Banco de Dados PostgreSQL
• edwcenipa_pdi_1 - Container com instlação do Pentaho Data Integrator (Kettle) para download e
carga dados para o DW
• edwcenipa_biserver_1 - Container com instalação do Pentaho Business Analytics (BI Server)
Verificar logs
$ docker logs -f edwcenipa_pdi_1
$ docker logs -f edwcenipa_biserver_1
A instalação pode levar mais de 30 minutos, dependo da configuração do servidor e da largura de banda da Internet. A instalação
completa é de aproximadamente 3GB.
Dashboards – Ocorrências aeronáuticas
http://localhost/pentaho/plugin/cenipa/api/ocorrencias
Docker Compose
docker-composse.yml - Orquestra a execução de múltiplos containers
pdi:
image: image_cenipa/pdi
links:
- biserver:edw_biserver
volumes:
- /data/stage:/tmp/stage
environment:
- PGHOST=172.17.42.1
- PGUSER=pgadmin
- PGPASSWORD=pgadmin.
- PENTAHO_DI_JAVA_OPTIONS=-Xmx2014m -XX:MaxPermSize=256m
stdin_open: true
tty: true
biserver:
image: image_cenipa/biserver
ports:
- "80:8080"
links:
- db:edw_db
environment:
- PGUSER=pgadmin
- PGPASSWORD=pgadmin.
- INSTALL_PLUGIN=saiku
- CUSTOM_LAYOUT=y
stdin_open: true
tty: true
db:
image: wmarinho/postgresql:9.3
ports:
- "5432:5432"
stdin_open: false
tty: true
Pentaho + Docker + Amazon
Com o comando abaixo e as devidas credenciais de acesso, é possível subir o ambiente na Amazon em menos de 10
minutos. LEMBRE-SE de substituir as variáveis antes de executar o comando (verificar os parâmetros no AWS
console).
Essa é uma configuração adequada para este projeto, a um custo aproximado de US$ 80,00/mês
(http://calculator.s3.amazonaws.com/index.html)
$ SUBNET_ID=
$ SGROUP_IDS=
$ KEY_NAME=
$ aws ec2 run-instances 
--image-id ami-e3106686 
--instance-type c4.large 
--subnet-id ${SUBNET_ID} 
--security-group-ids ${SGROUP_IDS} 
--key-name ${KEY_NAME} 
--associate-public-ip-address 
--user-data "https://raw.githubusercontent.com/wmarinho/edw_cenipa/master/aws/user-data.sh" 
--count 1
Obrigado!
Projetos:
https://github.com/wmarinho/edw_cenipa
https://github.com/wmarinho/docker-pentaho
https://hub.docker.com/r/wmarinho/pentaho/

More Related Content

What's hot

Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformTim Berry
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoLeinylson Fontinele
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Oracle GoldenGate DB2 to Oracle11gR2 Configuration
Oracle GoldenGate DB2 to Oracle11gR2 ConfigurationOracle GoldenGate DB2 to Oracle11gR2 Configuration
Oracle GoldenGate DB2 to Oracle11gR2 Configurationgrigorianvlad
 
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...Itai Yaffe
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
HPE Data Protector Best Practice Guide
HPE Data Protector Best Practice GuideHPE Data Protector Best Practice Guide
HPE Data Protector Best Practice GuideAndrey Karpov
 
Bi-temporal rdbms 2014
Bi-temporal rdbms 2014Bi-temporal rdbms 2014
Bi-temporal rdbms 2014Tomm Carr
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Julien Maitrehenry
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Edureka!
 
Koalas: Making an Easy Transition from Pandas to Apache Spark
Koalas: Making an Easy Transition from Pandas to Apache SparkKoalas: Making an Easy Transition from Pandas to Apache Spark
Koalas: Making an Easy Transition from Pandas to Apache SparkDatabricks
 
Introduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGIntroduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGAjeet Singh Raina
 

What's hot (20)

Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Oracle GoldenGate DB2 to Oracle11gR2 Configuration
Oracle GoldenGate DB2 to Oracle11gR2 ConfigurationOracle GoldenGate DB2 to Oracle11gR2 Configuration
Oracle GoldenGate DB2 to Oracle11gR2 Configuration
 
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...
From AWS Data Pipeline to Airflow - managing data pipelines in Nielsen Market...
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
HPE Data Protector Best Practice Guide
HPE Data Protector Best Practice GuideHPE Data Protector Best Practice Guide
HPE Data Protector Best Practice Guide
 
Bi-temporal rdbms 2014
Bi-temporal rdbms 2014Bi-temporal rdbms 2014
Bi-temporal rdbms 2014
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
HTML & CSS
HTML & CSSHTML & CSS
HTML & CSS
 
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
 
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training ...
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Koalas: Making an Easy Transition from Pandas to Apache Spark
Koalas: Making an Easy Transition from Pandas to Apache SparkKoalas: Making an Easy Transition from Pandas to Apache Spark
Koalas: Making an Easy Transition from Pandas to Apache Spark
 
Introduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUGIntroduction to Docker - IndiaOpsUG
Introduction to Docker - IndiaOpsUG
 

Viewers also liked

Building a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerBuilding a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerWellington Marinho
 
Criando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comCriando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comPentahoBrasil
 
ETL with WSO2 Enterprise Middleware Platform
ETL with WSO2 Enterprise Middleware Platform ETL with WSO2 Enterprise Middleware Platform
ETL with WSO2 Enterprise Middleware Platform WSO2
 
Webinar: Conhecendo a solução Pentaho, líder em Business Analytics
Webinar: Conhecendo a solução Pentaho, líder em Business AnalyticsWebinar: Conhecendo a solução Pentaho, líder em Business Analytics
Webinar: Conhecendo a solução Pentaho, líder em Business AnalyticsRicardo Gouvêa
 
Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Wesley Seidel
 
Deep learning with Tensorflow in R
Deep learning with Tensorflow in RDeep learning with Tensorflow in R
Deep learning with Tensorflow in Rmikaelhuss
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...Caio Moreno
 
Third Nature - Open Source Data Warehousing
Third Nature - Open Source Data WarehousingThird Nature - Open Source Data Warehousing
Third Nature - Open Source Data Warehousingmark madsen
 

Viewers also liked (10)

Building a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and DockerBuilding a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and Docker
 
Criando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comCriando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.com
 
Oficina Pentaho
Oficina PentahoOficina Pentaho
Oficina Pentaho
 
ETL with WSO2 Enterprise Middleware Platform
ETL with WSO2 Enterprise Middleware Platform ETL with WSO2 Enterprise Middleware Platform
ETL with WSO2 Enterprise Middleware Platform
 
Webinar: Conhecendo a solução Pentaho, líder em Business Analytics
Webinar: Conhecendo a solução Pentaho, líder em Business AnalyticsWebinar: Conhecendo a solução Pentaho, líder em Business Analytics
Webinar: Conhecendo a solução Pentaho, líder em Business Analytics
 
Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...Modelo de Dados: Entendendo e “re-”construindo...
Modelo de Dados: Entendendo e “re-”construindo...
 
Deep learning with Tensorflow in R
Deep learning with Tensorflow in RDeep learning with Tensorflow in R
Deep learning with Tensorflow in R
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...
Curso Gratuito Online Desmistificando BI (Business Intelligence) Open Source ...
 
Third Nature - Open Source Data Warehousing
Third Nature - Open Source Data WarehousingThird Nature - Open Source Data Warehousing
Third Nature - Open Source Data Warehousing
 

Similar to Construindo um data warehouse com Pentaho e Docker

Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Wellington Silva
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresasRafael Gomes
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechRafael Gomes
 
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...tdc-globalcode
 
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Renato Groff
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIRudá Almeida
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 

Similar to Construindo um data warehouse com Pentaho e Docker (20)

Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma Fintech
 
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...
TDC2018SP | Trilha Testes II - Descomplicando a montagem de ambientes de Test...
 
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLI
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 

Construindo um data warehouse com Pentaho e Docker

  • 1. Construindo um data warehouse com Pentaho e Docker Wellington Marinho wpmarinho@globo.com
  • 3. Estudo de Caso - EDW CENIPA EDW CENIPA é um projeto opensource, criado para prover análises dinâmicas de ocorrências aeronáuticas, ocorridas na aviação civil brasileira. O projeto utiliza técnicas e ferramentas de BI, explorando tecnologias inovadoras e de baixo custo. Historicamente, plataformas de Business Intelligence são caras e inviáveis para pequenos projetos. Esses projetos exigem qualificação especializada e custos altos de desenvolvimento. Este trabalho tem a pretensão de quebrar um pouco esta barreira. O que não significa pouca dedicação, empenho e esforço. Todas as análises têm como base os dados abertos fornecidos pelo CENIPA, com histórico de ocorrências dos últimos 10 anos: • http://dados.gov.br/dataset/ocorrencias-aeronauticas-da-aviacao-civil-brasileira Os gráficos foram inspirados no relatório disponibilizado no link: • http://www.cenipa.aer.mil.br/cenipa/index.php/estatisticas/estatisticas/panorama.
  • 4. Recursos Seguem alguns serviços, ferramentas e plataformas que foram utilizados para desenvolver e implantar o projeto: • Amazon Web Services - https://aws.amazon.com/ - Serviços de infraestrutura de nuvem • Sistema Operacional Linux - CentOS 6 / Ubuntu 14 • GitHub - https://github.com/ - Serviço de Web Hosting Compartilhado para projetos que usam o controle de versionamento • Docker - https://www.docker.com/ - Plataforma aberta para construir e rodar aplicações distribuídas. • Pentaho - http://www.pentaho.com/ e http://community.pentaho.com/ - Plataforma open source de Big Data, Data Integration e Business Analytics
  • 5. Requisitos • Sistema Operacional com 2GB de RAM e 5GB de espaço em disco • Docker v1.7.1 • CentOS: https://docs.docker.com/installation/centos/ • Ubuntu: https://docs.docker.com/installation/ubuntulinux/ • Mac : https://docs.docker.com/installation/mac/ • Docker Compose v1.4.2 - https://docs.docker.com/compose/install/ $ yum update -y $ yum install -y docker $ service docker start $ usermod -a -G docker ec2-user $ yum install -y git $ pip install -U docker-compose $ PATH=$PATH:/usr/local/bin Instalação rápida no Amazon Linux AMI
  • 6. Comandos básicos $ docker info $ docker --help $ docker COMMAND --help $ docker run --rm -it busybox echo "Olá, esse é meu primeiro container“ $ docker ps $ docker images $ docker build –t repositorio/imagem:tag . $ docker build -t teste/myimage . Criar um arquivo Dockerfile Construir umaa imagem FROM busybox CMD ["echo", "Olá, esse é meu primeiro container"] Criar um container $ docker run --rm teste/myimage
  • 7. Pentaho + Docker – Criando arquivo Dockerfile FROM java:7 MAINTAINER Wellington Marinho wpmarinho@globo.com # Init ENV ENV BISERVER_VERSION 5.4 ENV BISERVER_TAG 5.4.0.1-130 ENV PENTAHO_HOME /opt/pentaho # Apply JAVA_HOME RUN . /etc/environment ENV PENTAHO_JAVA_HOME $JAVA_HOME ENV PENTAHO_JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64 ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64 # Install Dependences RUN apt-get update; apt-get install zip -y; apt-get install wget unzip git -y; apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; RUN mkdir ${PENTAHO_HOME}; # Download Pentaho BI Server RUN /usr/bin/wget --progress=dot:giga http://downloads.sourceforge.net/project/pentaho/Business%20Intelligence%20Server/${BISERVER_VERSION}/biserver-ce-${BISERVER_TAG}.zip -O /tmp/biserver-ce-${BISERVER_TAG}.zip; /usr/bin/unzip -q /tmp/biserver-ce-${BISERVER_TAG}.zip -d $PENTAHO_HOME; rm -f /tmp/biserver-ce-${BISERVER_TAG}.zip $PENTAHO_HOME/biserver-ce/promptuser.sh; sed -i -e 's/(exec ".*") start/1 run/' $PENTAHO_HOME/biserver-ce/tomcat/bin/startup.sh; chmod +x $PENTAHO_HOME/biserver-ce/start-pentaho.sh RUN useradd -s /bin/bash -d ${PENTAHO_HOME} pentaho; chown -R pentaho:pentaho ${PENTAHO_HOME}; #Always non-root user USER pentaho WORKDIR /opt/pentaho EXPOSE 8080 CMD ["sh", "/opt/pentaho/biserver-ce/start-pentaho.sh"]
  • 8. Pentaho BI Server $ docker build -t pentaho/biserver:5.4 . $ docker run --rm -p 8080:8080 -it pentaho/biserver:5.4 Construir a imagem e rodar um containter Abrir o navegador e abrir o Pentaho BI Server
  • 9. GitHub docker-pentaho ( Dockerfile / scripts ) pentaho-biserver:5.4 ( imagem) edw-cenipa ( Dockerfile / scripts ) BI SERVER / PDI PROJETO EDW pentaho-kettle:5.4 ( imagem) BI SERVER PDI Docker Hub Jenkins + Docker Compose Amazon EC2 BI SERVER Amazon EC2 PDI Amazon RDS Postgresql / Redshift ETL Fontes de Dados Arquitetura
  • 10. Projeto EDW CENIPA Instalação do Projeto $ wget -O - https://raw.githubusercontent.com/wmarinho/edw_cenipa/master/easy_install | sh Verificar execução dos containers $ docker ps O projeto possui 3 containers: • edwcenipa_db_1 - Container com Banco de Dados PostgreSQL • edwcenipa_pdi_1 - Container com instlação do Pentaho Data Integrator (Kettle) para download e carga dados para o DW • edwcenipa_biserver_1 - Container com instalação do Pentaho Business Analytics (BI Server) Verificar logs $ docker logs -f edwcenipa_pdi_1 $ docker logs -f edwcenipa_biserver_1 A instalação pode levar mais de 30 minutos, dependo da configuração do servidor e da largura de banda da Internet. A instalação completa é de aproximadamente 3GB.
  • 11. Dashboards – Ocorrências aeronáuticas http://localhost/pentaho/plugin/cenipa/api/ocorrencias
  • 12. Docker Compose docker-composse.yml - Orquestra a execução de múltiplos containers pdi: image: image_cenipa/pdi links: - biserver:edw_biserver volumes: - /data/stage:/tmp/stage environment: - PGHOST=172.17.42.1 - PGUSER=pgadmin - PGPASSWORD=pgadmin. - PENTAHO_DI_JAVA_OPTIONS=-Xmx2014m -XX:MaxPermSize=256m stdin_open: true tty: true biserver: image: image_cenipa/biserver ports: - "80:8080" links: - db:edw_db environment: - PGUSER=pgadmin - PGPASSWORD=pgadmin. - INSTALL_PLUGIN=saiku - CUSTOM_LAYOUT=y stdin_open: true tty: true db: image: wmarinho/postgresql:9.3 ports: - "5432:5432" stdin_open: false tty: true
  • 13. Pentaho + Docker + Amazon Com o comando abaixo e as devidas credenciais de acesso, é possível subir o ambiente na Amazon em menos de 10 minutos. LEMBRE-SE de substituir as variáveis antes de executar o comando (verificar os parâmetros no AWS console). Essa é uma configuração adequada para este projeto, a um custo aproximado de US$ 80,00/mês (http://calculator.s3.amazonaws.com/index.html) $ SUBNET_ID= $ SGROUP_IDS= $ KEY_NAME= $ aws ec2 run-instances --image-id ami-e3106686 --instance-type c4.large --subnet-id ${SUBNET_ID} --security-group-ids ${SGROUP_IDS} --key-name ${KEY_NAME} --associate-public-ip-address --user-data "https://raw.githubusercontent.com/wmarinho/edw_cenipa/master/aws/user-data.sh" --count 1