Try   HackMD

Instalación de Pentaho Community Server

Contenido

Introducción

Pre-requisitos para la instalación

Software

  • JDK 1.8 para todo software de Pentaho. Soportado AdopOpenJdk
  • Sistema Operativo de 64 bits. Centos 7 y 8. Windows 2016 Server. Ubuntu 16.04 y 18.04.
  • Repositorio: Uno de los siguientes
  • PostgreSQL 9.6* & 10.0
  • MySQL 5.7 & 8.0 (SQL 92)
  • Oracle 19c
  • MS SQL Server 2016, 2017

Hardware

  • Hardware de 64 bits
  • Procesador: Intel EM64T or AMD64 Dual-Core
  • Memoria RAM: 8 GB with 4 GB dedicados a 1 servidor Pentaho.
  • Espacio de disco: 20 GB libres luego de la instalación

Instalación archivada

Para instalación de Pentaho Community Edition Server Hitachi provee una instalación archivada:

Ud. Provee Pentaho provee
Computador con hardware y sistema operativo requeridos/soportados. El paquete de instalación (archivo .zip)
JRE o JDK 1.8. Servidor de aplicaciones: Tomcat.
Base de datos para el repositorio de Pentaho. Puede ser PostgreSQL, MySQL, MS SQL Server or Oracle. Aclaración: Tomcat 9
Drivers JDBC para la bd del repositorio (PostgreSQL, MySQL, MS SQL Server or Oracle).

Instalación del JDK

https://developer.ibm.com/languages/java/semeru-runtimes/downloads

openJdk

sudo dnf install –y https://github.com/ibmruntimes/semeru8-binaries/releases/download/jdk8u302-b08_openj9-0.27.1/ibm-semeru-open-8-jdk-1.8.0.302.b08-2.ppc64le.rpm

Editar el archivo /etc/profile y agregar:

JAVA_HOME= /usr/lib/jvm/ibm-semeru-open-8-jdk export $JAVA_HOME

Instalacion de PostgreSQL

Instalación del paquete rpm

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf -qy module disable postgresql sudo dnf install -y postgresql10-server

Si bien la documentación de Postgres indica ejecutar initdb, esto no fue necesario porque la instalación con el archivo .rpm ya creó la bd postgres.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

El archivo .rpm también crea el usuario postgres con home dir

/var/lib/pgsql

e instala postgreSql 10 en el directorio

/var/lib/pgsql/10/data

pgctl Control de PostrgreSQL

pg_ctl pg_ctl — initialize, start, stop, or control a PostgreSQL server Synopsis pg_ctl init[db] [-D datadir] [-s] [-o initdb-options] pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c] pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] [-o options] [-c] pg_ctl reload [-D datadir] [-s] pg_ctl status [-D datadir] pg_ctl promote [-D datadir] [-W] [-t seconds] [-s] pg_ctl kill signal_name process_id

pgAdmin

CentOS 7 u 8
Ejecutar los siguientes comandos en el shell

sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm sudo rpm -e pgdg-redhat-repo-42.0-19.noarch sudo yum install pgadmin4-web

Para que funcione pgAdmin fue necesario permitir el acceso al puerto 8080 (cambiar configuración de firewall) y modificar el archivo postgresql.conf para permitir que cualquier dirección IP pueda conectarse

# - Connection Settings - listen_addresses = '*'

Incompatibilidad con paquete pgdg-common

yum install pgadmin4
Last metadata expiration check: 14:57:18 ago on Sun 25 Jul 2021 07:10:01 PM PDT. Dependencies resolved. ================================================================================================================================ Package Architecture Version Repository Size ================================================================================================================================ Downgrading: pgadmin4-redhat-repo noarch 0.9-2 pgdg-common 11 k Transaction Summary ================================================================================================================================ Downgrade 1 Package Total download size: 11 k Is this ok [y/N]: y Downloading Packages: pgadmin4-redhat-repo-0.9-2.noarch.rpm 5.4 kB/s | 11 kB 00:02 -------------------------------------------------------------------------------------------------------------------------------- Total 5.4 kB/s | 11 kB 00:02 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Downgrading : pgadmin4-redhat-repo-0.9 2.noarch 1/2 Running scriptlet: pgadmin4-redhat-repo-0.9-2.noarch 1/2
[root@dwh etc]# man yum
/etc/dnf/dnf.conf

Repository

/etc/yum.repos.d/

Excluir pgadmin4 de pgdg-common
Agregar exclude en el repositorio para pgadmin


Creación de Bds utilizadas por pentaho

Para que los scripts de creación de bases de datos utilizados por Pentaho fueran ejecutados con éxito tuvimos que
crear los los mismos usuarios en la bd y en el sistema operativo. Además modificar el archivo pghba.conf para que el usuario postgres pueda ejecutar \connect a las nuevas bd como su usuario Owner sin error.

#TYPE DATABASE USER ADDRESS METHOD local all all trust

Indicar el password para la bd de cada usuario en la sentencia CREATE USER del script correspondiente. Ej. En el archivo createrepositorypostgresql.sql

CREATE USER jcr_usr PASSWORD 'Cambiar';

Crear los usuarios hib_usr, jcr_usr, pentaho

$adduser hib_usr $adduser jcr_usr $adduser pentaho

Instalación de pentaho

Creación del usuario dueño de Pentaho

Si aún no existe el usuario pentaho, crearlo.

$adduser pentaho

Directorio para Pentaho

Descomprimir el archivo pentaho-server-ce-9.2.0.0-290.zip en la carpeta

<HOME_usuario_pentaho>/pentaho/server/pentaho-solutions

Aclaración: Descomprimir fue lo factible porque no hay un installer.jar ni un install.sh como dice la ayuda para la instalación archivada.

Configuración de Pentaho

Variable de ambiente para el jdk que Pentaho utiliza

PENTAHO_JAVA_HOME=/usr/lib/jvm/ibm-semeru-open-8-jdk

Scripts de inicio

Modificar los scripts de inicio para que incluyan headless (cuando el servidor no tiene Xwindows instalado)

-Djava.awt.headless=true

Ejemplo

export CATALINA_OPTS="-Djava.awt.headless=true -Xms4096m -Xmx6144m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

Operaciones de Xwindows en memoria

Para que las operaciones de X11 funcionen en memoria en lugar de la pantalla

sudo yum install Xvfb

Indicar el directorio CATALINA_HOME

En la instalación realizada en el servidor de desarrollo, modificamos el archivo /etc/profile

CATALINA_HOME= /home/pentaho/pentaho/server/pentaho-server/tomcat export CATALINA_HOME

Bd en postgreSql para repositorio de Pentaho

Setear la bd Quartz del servidor PostgreSQL para que sea el Repositorio de Pentaho. La información de eventos como reportes programados, son almacenado en el JobStore de Quartz. Indicar la localización del JobStore modificando el archivo quartz.properties:

Editar el archivo <PENTAHO_USER_HOME>/pentaho/server/pentaho-server/pentaho-solutions/system/quartz/quartz.properties file in any text editor.
Localizar la sección #_replace_jobstore_properties e indicar org.quartz.jobStore.driverDelegateClass como sigue:

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

Localizar la sección #Configure Datasources e indicar org.quartz.dataSource.myDS.jndiURL igual a Quartz. En Tomcat, esto sería:

org.quartz.dataSource.myDS.jndiURL = Quartz

Bd en postgreSql para el repositorio de Hibernate

Modificar el archivo <PENTAHO_USER_HOME>/pentaho/server/pentaho-server/pentaho-solutions/system/hibernate/hibernate-settings.xml file in a text editor. Ubicar el tag <config-file> e indicar PostgreSQL:

<config-file>system/hibernate/postgresql.hibernate.cfg.xml </config-file>

Indicar el usuario y contraseñas correctas para la bd que usará hibernate en el archivo <PENTAHO_USER_HOME>/pentaho/server/pentaho-server/pentaho-solutions/system/hibernate/postgresql.hibernate.cfg.xml

En la instalación realizada:

<session-factory> <property name="cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</property> <property name="hibernate.generate_statistics">true</property> <property name="hibernate.cache.use_query_cache">true</property> <!-- Postgres 8 Configuration --> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://localhost:5432/hibernate</property> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.username">hib_usr</property> <property name="connection.password">Cambiar</property> <property name="hibernate.connection.datasource">java:comp/env/jdbc/Hibernate</property> <property name="connection.pool_size">10</property> <property name="show_sql">false</property> <property name="hibernate.jdbc.use_streams_for_binary">true</property> <!-- replaces DefinitionVersionManager --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- load resource from classpath --> <mapping resource="hibernate/postgresql.hbm.xml" /> </session-factory>

Configuraciones de Tomcat

Driver Jdbc

Descargar el driver Jdbc para la versión instalada de PostgreSQL y copiarlo al directorio
<PENTAHO_USER_HOME>/pentaho/server/pentaho-server/tomcat/lib

Bd en postgreSql para el repositorio de jackrabbit

Editar el archivo <PENTAHO_USER_HOME>/pentaho/server/pentaho-server/pentaho-solutions/jackrabbit/repository.xml

Indicar el uso de postgreSQL en las siguientes ubicaciones del archivo repository.xml. Notar que para Pentaho 9.2 el url tiene que usar JNDI.

a. FileSystem

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="fs_repos_"/> </FileSystem>

Comentar el uso del sistema de archivos

<!-- <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> <param name="path" value="${rep.home}/repository"/> </FileSystem> -->

b. DataStore

<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="databaseType" value="postgresql"/> <param name="minRecordLength" value="1024"/> <param name="maxConnections" value="3"/> <param name="copyWhenReading" value="true"/> <param name="tablePrefix" value=""/> <param name="schemaObjectPrefix" value="ds_repos_"/> </DataStore>

c. FileSystem (no es repetido)

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="fs_ws_"/> </FileSystem>

d. Persistence Manager

<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="${wsp.name}_pm_ws_"/> </PersistenceManager>

e. FileSystem (no es repetido)

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="fs_ver_"/> </FileSystem>

f. PersistenceManager (no es repetido)

<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="pm_ver_"/> </PersistenceManager>

g. Journal (dentro del tag Cluster)

<Cluster id="node1"> <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal"> <param name="revision" value="${rep.home}/revision.log" /> <param name="driver" value="javax.naming.InitialContext"/> <param name="url" value="java:comp/env/jdbc/jackrabbit"/> <param name="schema" value="postgresql"/> <param name="schemaObjectPrefix" value="cl_j_"/> <param name="janitorEnabled" value="true"/> <param name="janitorSleep" value="86400"/> <param name="janitorFirstRunHourOfDay" value="3"/> </Journal>

Datasource para Tomcat

Modificar la información de conexión usada por Tomcat. Editar el archivo <PENTAHO_USER_HOME>/>/pentaho/server/pentaho-server/tomcat/webapps/pentaho/META-INF/context.xml

<Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="hib_usr" password="Cambiar.123" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/hibernate" validationQuery="select 1" /> <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="pentaho" password="Cambiar.123" testOnBorrow="true" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/quartz" validationQuery="select 1" /> <Resource name="jdbc/jackrabbit" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="jcr_usr" password="Cambiar.123" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/jackrabbit" validationQuery="select 1" /> <Resource name="jdbc/SampleData" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="pentaho" password="Cambiar.123" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/sampledata" validationQuery="select 1" /> <Resource name="jdbc/SampleDataAdmin" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="pentaho_admin" password="Cambiar.123" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/sampledata" validationQuery="select 1" />

Notar que en nuestra instalación sampleData con hSQLServer no funcionó. Intentamos que funcione con PostgreSQL pero de todas formas dio error al intentar consultar un reporte de muestra identificado como Invoice (los reportes también daban error cuando la bd SampleData era hSQL

Creación de bd sampleData y sus usuarios en postgreSql

Los scripts para la creación e inserts necesarios para la bd sampleData fueron adaptados de una documentación de una imagen Docker para Pentaho 5 (https://github.com/wmarinho/docker-pentaho/blob/master/config/postgresql/biserver-ce/pentaho-solutions/system/jackrabbit/repository.xml)
Adaptamos esos scripts usando nombres todos en minúsculas para que no de error de nombres de tablas y campos. PostgreSQL convierte los nombres de campos y tablas a minúsculas cuando procesa una sentencia SQL .
Los scripts a ejecutar están en el directorio datosMuestra_paraLowercaseFoldingDePostgres

Iniciar Pentaho

Ejecutar el script

start-pentaho.sh

Para parar pentaho ejecutar

stop-pentaho.sh

Observaciones sobre Datasources BasicDataSourceFactory y DecryptingDataSourceFactory

Observación: Si bien con uso de BasicDataSourceFactory (https://tomcat.apache.org/tomcat-9.0-doc/jndi-resources-howto.html), pentaho pudo iniciar, el log aún tenía error de hibernate/repositorio

Ej.

<Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" maxActive="20" minIdle="0" maxIdle="5" initialSize="0" maxWait="10000" username="pentaho" password="Cambiar " testOnBorrow="true" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/quartz" validationQuery="select 1" />

Para que funcione con el datasource indicado por Pentaho, tuvimos que copiar en <TOMCAT>/WEB-INF/lib/ el jar de kettle y sus dependencias:
Ej.

<Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource" factory="org.pentaho.di.core.database.util.DecryptingDataSourceFactory" maxActive="30" minIdle="0" maxIdle="10" initialSize="0" maxWait="10000" username="pentaho" password="Cambiar.123" testOnBorrow="true" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/quartz" validationQuery="select 1" />

Kettle y sus dependencias están en el directorio kettleDependency\

batik-anim-1.9.1.jar batik-awt-util-1.9.1.jar batik-bridge-1.9.1.jar batik-codec-1.9.1.jar batik-constants-1.9.1.jar batik-css-1.9.1.jar batik-dom-1.9.1.jar batik-ext-1.9.1.jar batik-gui-util-1.9.1.jar batik-gvt-1.9.1.jar batik-i18n-1.9.1.jar batik-parser-1.9.1.jar batik-script-1.9.1.jar batik-svg-dom-1.9.1.jar batik-svggen-1.9.1.jar batik-transcoder-1.9.1.jar batik-util-1.9.1.jar batik-xml-1.9.1.jar com.wcohen.secondstring-0.1.jar commons-collections4-4.4.jar commons-dbcp-1.4.jar commons-io-2.2.jar commons-lang-2.6.jar commons-pool-1.5.7.jar javassist-3.20.0-GA.jar jcifs-1.3.3.jar joda-time-2.10.2.jar jsch-0.1.54.jar jug-lgpl-2.0.0.jar jzlib-1.0.7.jar kettle-core-9.2.0.0-290.jar ognl-2.6.9.jar pentaho-encryption-support-9.2.0.0-290.jar scannotation-1.0.2.jar simple-jndi-1.0.3.jar xml-apis-ext-1.3.04.jar