Buscar en el Blog

domingo, 14 de enero de 2018

Configuración de Pentaho Server 7.x para PostgreSQL

En ésta publicación explico el procedimiento para configurar los repositorios de metadatos de Pentahohibernate, quartz jackrabbit en la base de datos PostgreSQL v9.6

Por defecto, el pentaho-server de Pentaho usa la base de datos HSQLDB, ésta base de datos no es recomendada para instalaciones en producción por lo que es conveniente instalarlo en un motor de base de datos más robusto. El servidor central pentaho-server viene con los scripts para MySQL, Oracle, SQL Server y PostgreSQL.

Pre-requisitos.-
  • Tener instalado y configurado el JDK v1.8, en la siguiente publicación se explica el procedimiento
  • Tener instalado la base de datos  PostgreSQL v9.6
  • Haber descargado la aplicación biserver-ce de Pentaho y haberla copiado y descomprimido en el directorio: \pentaho-server-ce-7.x
  • Haber descargado el controlador JDBC para  PostgreSQL
Configuración paso a paso.-

1. Ir al directorio \pentaho-server\data aquí se encuentran los scripts para MySQL, Oracle, SQL Server y PostgreSQL

2. Abrir el directorio postgresql y ejecutar los scripts: create_repository_postgresql.sqlcreate_quartz_postgresql.sql y create_jcr_postgresql.sql

NOTA: password es la contraseña por defecto para los usuarios hibuser del repositorio hibernate,  pentaho_user del repositorio quartz, y jcr_user del repositorio jackrabbit

Configuración de Tomcat

3. Copiar el driver JDBC Tipo 4 de PostgreSQL (postgresql-42.1.4.jar) al directorio \pentaho-server\tomcat\lib.

NOTA: Borrar el driver postgresql-9.3-x.jdbc4.jar existente de tal forma que solo quede el archivo postgresql-42.1.4.jar

4. Editar el archivo context.xml ubicado en el directorio: \pentaho-server\tomcat\webapps\pentaho\META-INF. Colocar la siguiente configuración para cambiar la conexión a PostgreSQL
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/pentaho" docbase="webapps/pentaho/">
 <Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxTotal="20" maxIdle="5"
  maxWaitMillis="10000" username="hibuser" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/hibernate"
  validationQuery="select version();" />
  
 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxTotal="20" maxIdle="5"
  maxWaitMillis="10000" username="pentaho_user" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/quartz"
  validationQuery="select version();"/>
</Context>

5. Eliminar el archivo pentaho.xml del directorio: \pentaho-server\tomcat\conf\Catalina\localhost

6. Editar el archivo web.xml en el directorio \pentaho-server\tomcat\webapps\pentaho\WEB-INF. Comentar las secciones: [BEGIN HSQLDB DATABASES] y [BEGIN HSQLDB STARTER]

Configuración en BI Server

Todos los archivos de configuración del servidor central de Pentaho Community Edition (pentaho-server) se encuentran en el directorio: \pentaho-server\pentaho-solutions\system

El resto de configuraciones se realizarán en éste directorio.

7. Ir al subdirectorio /hibernate y editar el archivo hibernate-settings.xml, cambiar la etiqueta <config-file> al valor: system/hibernate/system/hibernate/postgresql.hibernate.cfg.xml como se muestra a continuación:
...
<config-file>system/hibernate/postgresql.hibernate.cfg.xml</config-file>
...

NOTA: no olvidar de editar el archivo postgresql.hibernate.cfg.xml sí la base de datos está en otro servidor

8. Editar el archivo applicationContext-spring-security-hibernate.properties y cambiar la configuración de conexión a PostgreSQL como se muestra a continuación:
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

9. En la base de datos quartz crear la siguiente tabla:
CREATE TABLE "qrtz"
(
NAME VARCHAR(200) NOT NULL,
PRIMARY KEY (NAME)
);

ALTER TABLE "qrtz" OWNER TO pentaho_user;

10. Editar el archivo repository.xml de Jackrabbit en el directorio \pentaho-server\pentaho-solutions\system\jackrabbit. Realizar los siguientes pasos para apuntar Jackrabbit al repositorio de base de datos creado en PostgreSQL:
  • Configuración del FileSystem: descomentar de la línea 61 a la 68. Comentar de la línea 79 a la 83
  • Configuración del DataStore: descomentar de la línea 123 a la 134. Comentar de la línea 150 a la 152
  • Configuración del FileSystem: descomentar de la línea 236 a la 243. Comentar de la línea 255 a la 259
  • Configuración del PersistenceManager: descomentar de la línea 293 a la 300. Comentar de la línea 312 a la 317
  • Configuración del FileSystem: descomentar de la línea 368 a la 375. Comentar de la línea 386 a la 390
  • Configuración del PersistenceManager: descomentar de la línea 425 a la 432. Comentar de la línea 443 a la 448
11. Reiniciar el servidor de Pentaho

Consideraciones Importantes

En sistemas operativos Windows, sí se ejecutó pentaho-server antes de realizar ésta configuración usando la base de datos por defecto HSQLDB, es conveniente eliminar el contenido de los siguientes directorios para evitar comportamientos inesperados:
  • \pentaho-server\tomcat\work\Catalina\* 
  • \pentaho-server\tomcat\temp\* 
  • \pentaho-server\pentaho-solutions\system\karaf\caches\* 
  • \pentaho-server\pentaho-solutions\system\jackrabbit\repository
NOTA: de preferencia igual limpiar el cache del navegador web con el que se esté trabajando.

10 comentarios:

  1. Buenas tardes,
    he instalado pentaho 7.0 con postgresql en entorno linux (CentOS).
    He seguido sus pasos y cuando accedo a la url de pentaho me da el siguiente eror:

    [es_49] One or more system listeners failed. These are set in the systemListeners.xml.
    org.pentaho.platform.api.engine.PentahoSystemException: PentahoSystem.ERROR_0014 - Error mientras se intentaba ejecutar la secuencia de arranque por org.pentaho.platform.scheduler2.quartz.EmbeddedQuartzSystemListener

    ¿Tiene idea de qué puede ser?
    Gracias.

    ResponderBorrar
    Respuestas
    1. Hola verifica que se haya ejecutado la creción de la tabla QRTZ del paso (9)

      CREATE TABLE "qrtz"
      (
      NAME VARCHAR(200) NOT NULL,
      PRIMARY KEY (NAME)
      );

      ALTER TABLE "qrtz" OWNER TO pentaho_user;

      Sí no, ejecutalo y borra todos los caches que se generan.

      \pentaho-server\tomcat\work\Catalina\*
      \pentaho-server\tomcat\temp\*
      \pentaho-server\pentaho-solutions\system\karaf\caches\*
      \pentaho-server\pentaho-solutions\system\jackrabbit\repository

      Borrar
    2. Gracias Mauricio por su rápida respuesta.
      Sí, lo he comprobado, la tabla qrtz está creada. He borrado también las caches tal y como ha indicado y sigue dando el mismo error.
      Tengo dudas acerca la versión java y si debo asignarlas a las variables de sistema PENTAHO_JAVA y PENTAHOA_JAVA_HOME, no sé si podrían ser origen del problema.

      La versión java que tengo instalada es la siguiente:
      openjdk version "1.8.0_131"
      OpenJDK Runtime Environment (build 1.8.0_131-b12)
      OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

      Cuando lanzo el script start-pentaho me aparecen estas asignaciones en la consola:
      WARNING: Using java from path
      DEBUG: _PENTAHO_JAVA_HOME=
      DEBUG: _PENTAHO_JAVA=java
      Using CATALINA_BASE: /opt/pentaho/pentaho-server/tomcat
      Using CATALINA_HOME: /opt/pentaho/pentaho-server/tomcat
      Using CATALINA_TMPDIR: /opt/pentaho/pentaho-server/tomcat/temp
      Using JRE_HOME: /usr
      Using CLASSPATH: /opt/pentaho/pentaho-server/tomcat/bin/bootstrap.jar:/opt/pentaho/pentaho-server/tomcat/bin/tomcat-juli.jar

      Gracias por su tiempo.

      Borrar
    3. Pentaho no soporta OpenJDK, necesitas instalar Oracle Java 8 y configurar las variables de entorno JAVA_HOME y PATH como mencionas. En éste link está para Windows (https://ingmmurillo-dwh-bi.blogspot.com/2012/05/instalacion-y-configuracion-del-java.html). Este post está para la versión 6 pero puedes hacer algo similar para la versión 8 (http://ingmmurillo.blogspot.com/2010/10/como-instalar-el-jdk-en-la-distribucion.html)

      Saludos,

      Borrar
    4. Conseguido!
      Instalé la versión JAVA 1.8 y modifiqué la variable de sistema PENTAHO_JAVA_HOME.
      Aún así no me ha funcionado, pero he vuelto a lanzar el script creando la tabla qrtz en mayúsculas:
      CREATE TABLE "QRTZ"
      (
      NAME VARCHAR(200) NOT NULL,
      PRIMARY KEY (NAME)
      );

      ALTER TABLE "QRTZ" OWNER TO pentaho_user;

      De esta manera sí ha funcionado y la página de inicio de pentaho aparece para hacer el log in.
      Muchas gracias por su ayuda!

      Borrar
  2. maria como configuro la variable PENTAHO_JAVA_HOME

    ResponderBorrar
    Respuestas
    1. Hola:

      Mi nombre es Mauricio: en la siguiente publicación tienes instrucciones para configurar la variable JAVA_HOME en Windows:

      https://ingmmurillo-dwh-bi.blogspot.com/2012/05/instalacion-y-configuracion-del-java.html

      En el paso 3: creas

      PENTAHO_JAVA_HOME = C:\Program Files\Java\jdk1.8.0_xxx

      Saludos,

      Borrar
    2. hola mauricio muchas gracias por la respuesta, no me explique bien tengo intsalado pentaho server 7 en red hat pero no logro levantar el servicio se queda cargando la pagina y cuando termina dice que que no encuentra el directorio pentaho

      Borrar
  3. Buen día Mauricio,
    ¿Me podría explicar por qué para el repositorios de metadatos de Pentaho no es conveniente utilizar la base de datos HSQLDB para ambiente de producción?

    ResponderBorrar
  4. Buen día Mauricio,
    Por favor me podrías indicar ¿por qué no es conveniente utilizar la base de datos HSQLDB para el repositorio de metadatos de Pentaho cuando se implementa un ambiente de producción?

    ResponderBorrar