Buscar en el Blog

viernes, 17 de octubre de 2014

Configuración de Pentaho BI Server 5.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.3

Por defecto, el biserver 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 biserver viene con los scripts para MS SQL Server, MySQL, Oracle y PostgreSQL.

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

1. Ir al directorio \biserver-ce-5.x\data aquí se encuentran los scripts para MS SQL Server, MySQL, Oracle 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-9.3-x.jdbc4.jar) al directorio \biserver-ce-5.x\tomcat\lib.

4. Editar el archivo context.xml ubicado en el directorio: \biserver-ce-5.x\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" maxActive="20" maxIdle="5"
  maxWait="10000" username="hibuser" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/hibernate"
  validationQuery="select version();" />
  
 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
  maxWait="10000" username="pentaho_user" password="password"
  driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/quartz"
  validationQuery="select version();"/>
</Context>

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

6. Editar el archivo web.xml en el directorio \biserver-ce-5.x\tomcat\webapps\pentaho\WEB-INF. En la línea 76 colocar lo siguiente para que únicamente se inicie la base de datos de ejemplo de HSQLDB:
<!-- [BEGIN HSQLDB DATABASES] -->
  <context-param>
    <param-name>hsqldb-databases</param-name>
    <param-value>sampledata@../../data/hsqldb/sampledata</param-value>
  </context-param>
  <!-- [END HSQLDB DATABASES] -->

Configuración en BI Server

Todos los archivos de configuración del servidor central de BI de Pentaho Community Edition (biserver-ce) se encuentran en el directorio: \biserver-ce-5.x\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://127.0.0.1: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 \biserver-ce-5.x\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 71 a la 73
  • Configuración del DataStore: descomentar de la línea 114 a la 125. Comentar la línea 129
  • Configuración del Workspace: descomentar de la línea 214 a la 221. Comentar de la línea 225 a la 227. Descomentar de la línea 262 a la 269. Comentar de la línea 273 a la 276
  • Configuración del Versionamiento: descomentar de la línea 344 a la 351. Comentar de la línea 354 a la 356. Descomentar de la línea 392 a la 399. Comentar de la línea 402 a la 405

11. Reiniciar el servidor de BI de Pentaho

Consideraciones Importantes

En sistemas operativos Windows, sí se ejecutó biserver 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:

  • \biserver-ce-5.x\tomcat\work\Catalina\*
  • \biserver-ce-5.x\tomcat\temp\*
  • \biserver-ce-5.x\pentaho-solutions\system\osgi\cache\*
  • \biserver-ce-5.x\pentaho-solutions\system\jackrabbit\repository

NOTA: de preferencia igual limpiar el cache del navegador web con el que se esté trabajando.


30 comentarios:

  1. BUENISIMOOOOOOOOOOOOOOOO!!!! El único tutorial que explica correctamente la instalación de Pentaho y PostgreSQL como repositorio.

    Muchas gracias!

    ResponderBorrar
  2. El paso 10, lo ejecuamos solo en MYSQL o lo hacemos para POSTGRES

    ResponderBorrar
  3. El paso 10 al parecer hay un error, en lugar de MYSQL deberia ser POSTGRES.

    ResponderBorrar
    Respuestas
    1. Muchas gracias Marcelo por la observación, ya está corregido. Sí efectivamente esa configuración obligatoriamente se tiene que hacer para PostgreSQL. Saludos,

      Borrar
  4. Buen día Ing. Murillo

    Quisiera saber si tiene un modulo o si este proceso es el factible para hacerlo pero con SQL SERVER.

    Que tenga buen día

    ResponderBorrar
    Respuestas
    1. Pentaho BI Server únicamente opera con MySQL, Oracle y PostgreSQL

      Borrar
    2. Muchas gracias ingeniero, para hacerlo con Mysql es igual que con postgreSQL?

      Borrar
    3. Sí para MySQL es similar, necesitas el driver JDBC de MySQL, ésta publicación puedes usarla como referencia: http://ingmmurillo-dwh-bi.blogspot.com/2014/07/configuracion-de-pentaho-bi-server-501.html

      Borrar
  5. En mi instalación no se encuentra el sub-directorio jackrabbit indicado en el punto 10. como lo soluciono

    ResponderBorrar
    Respuestas
    1. Probablemente estás instalando una versión anterior a la 5.x, jackrabbit aparece desde la versión 5

      Borrar
  6. Hola! Segui todos los pasos que explicas para configurar Pentaho con Postgres y me arroja algunos errores. Estoy utilizando la version 5.3 de pentaho. Cambia en algo lo que vos configuras?
    GRAVE: Falló en arranque del Contexto [/pentaho] debido a errores previos
    mar 17, 2015 5:19:05 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
    GRAVE: The web application [/pentaho] appears to have started a thread named [HSQLDB Timer @23965883] but has failed to stop it. This is very likely to create a memory leak.
    mar 17, 2015 5:19:05 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads


    Podras guiarme de donde pude provenir ese error?
    Muchas gracias

    ResponderBorrar
    Respuestas
    1. Hola, éstos pasos sólo los he ejecutado hasta la versión de BI Server 5.2, no los he probado aún en BI Server 5.3. Intenta eliminando el contenido de los siguientes directorios:

      \biserver-ce-5.x\tomcat\work\Catalina\*
      \biserver-ce-5.x\tomcat\temp\*
      \biserver-ce-5.x\pentaho-solutions\system\osgi\cache\*
      \biserver-ce-5.x\pentaho-solutions\system\jackrabbit\repository

      Borrar
    2. Revisa el arhivo WEB.xml indicado en el paso 6 y comenta el código de las lineas 205 a la 209

      Borrar
  7. buenas noches colega... el tutorial esta muy claro salvo el paso 10... seria bueno que en ese paso colocaras el código que toca quitar como comentario y cual poner como comentario... esto debido a que no me coinciden el numero de las lineas

    ResponderBorrar
  8. Estuve siguiendo los pasos del tutorial, pero no se como insertar los datos de prueba y los usuarios de pentaho en postgres.
    Saludos.
    Victor.

    ResponderBorrar
  9. Estimados, en algunos tutorias me indican que las tablas de seguridad (usuarios, roles y permisos) se crean automaticamente en la version 5.X pero no visualizo la creacion de esas tablas, se desea tener esa seguridad en la base de datos. Saludos.

    ResponderBorrar
  10. se puede personalizar todo pentaho? menus, colores...... etc

    ResponderBorrar
    Respuestas
    1. Sí es posible, aquí tienes más información al respecto. https://help.pentaho.com/Documentation/5.2/0R0/080/010 Saludos,

      Borrar
  11. Sí al ejecutar runpsql.bat en Windows intentando ejecutar un script SQL da un error "No such file or directory" ejecutar el comando \i con la ruta completa del script como se muestra a continuación:

    \i 'C:/Program Files/PostgreSQL/9.3/scripts/create_repository_postgresql.sql'

    ResponderBorrar
    Respuestas
    1. Estimados, entonces como solucion con el error se presenta en Windows debemos ejecutar ese script de forma manual o se debe de realizar alguno otro paso adicional?

      Borrar
  12. Estimado soy nuevo en esto, tengo mi datos de ventas en un base de dato en sql server 2008, la pregunta es realizo la instalación del pentaho con cualquier base de dato y a mis reportes los conecto con la base de dato sql2008?

    ResponderBorrar
  13. Estimados, tengo mis ventas, la parte financiera en un servidor con sql server 2008, mi consulta es la siguiente, en otro equipo instalaria el pentaho la instalación de este la instalo con cualquier motor de base dato? y a mi reportes y análisis los conecto con el motor del sql2008?

    ResponderBorrar
    Respuestas
    1. Hola Juan: la idea de Data Warehousing es construir un conjunto de procesos llamados ETLs para poblar lo que se conoce como el Data Warehouse o Data Marts. En base a tu caso, considero que sería importante que evalúes la necesidad de consolidar o no los datos de ventas y financieros que tienes en SQL Server y ver si los llevas a un Data Warehouse que podría estar en SQL Server u otro DBMS.

      Echa un vistazo a estos tres vínculos donde hablo más a detalle sobre Data Warehousing y BI
      - http://ingmmurillo-dwh-bi.blogspot.com/2012/05/data-warehousing.html
      - http://ingmmurillo-dwh-bi.blogspot.com/2012/05/inteligencia-de-negocios-business.html
      - http://ingmmurillo-dwh-bi.blogspot.com/2015/05/arquitectura-de-flujo-de-datos-con.html

      Con respecto a la instalación de Pentaho BI Server la versión 5.4 soporta los siguientes DBMS: Oracle, MySQL, PostgreSQL y MS SQL Server.

      Saludos,

      Borrar
  14. Saludos,

    Estimado Mauricio, gracias por el curso impartido. Tengo una pregunta y disculpas pero quiero instalar la version 7, sube el servidor pero al crear un usuario no se puede, no indica tampoco un error, sera que usted me puede ayudar por favor?

    ResponderBorrar
    Respuestas
    1. Hola Nelson, claro sí estás instalando la versión 7.0 sigue las instrucciones del siguiente post: https://ingmmurillo-dwh-bi.blogspot.com/2017/04/configuracion-de-pentaho-bi-server-6x.html Además, para ayudarte con más detalle envíame un email por favor. Saludos!

      Borrar
  15. Hola buenas ing murillo
    Tengo una inquietud, de pronto me pueda ayudar, estoy usando Pentaho 8, todo funciona bien, pero tengo que todos los dias manualmente vaciar el cache del Bi Server ya que no se actualizan los datos en el Saiku, por favor de pronto usted tiene algun scritp , bat para poner como tarea programanda y borre todo el cache, estoy usando el pentaho bajo Windows, gracias

    ResponderBorrar
  16. Hola ingmurillo
    Estoy usando pentaho 8 bajo windows, todo funciona bien pero tengo que manualmente todos los dias vaciar el cache de Bi Server ya que no se actualiza los datos en Saiku, de pronto tienes el codigo para hacer un scritp .bat y este proceso se lo haga mediante una tarea programa.

    gracias por tu tiempo

    ResponderBorrar
    Respuestas
    1. Estimado:

      Para automatizar lo que buscas necesitas:

      1) Usar el API de REST para autenticarte https://help.pentaho.com/Documentation/8.0/Developer_Center/REST_API#Authenticate_with_the_Server_Before_Making_Service_Calls

      2) Hacer un GET Request a http://localhost:8080/pentaho/api/system/refresh/mondrianSchemaCache para limpiar el cache una vez autenticado

      Saludos!

      Borrar
  17. Hola ingmurillo

    Quiero instalar postGIS para postgres y asociarlo a pentaho 5.0. Si es posible podrias ayudarme u orientarme. Gracias de antemano.

    ResponderBorrar