Business Intelligence con Pentaho Suite

De Master Solutions Wiki
Saltar a: navegación, buscar

Contenido

Instalación y configuracion de Pentaho en Linux

Objetivo

Instalar y configurar Pentaho BI Suite, en un sistema operativo Linux, en este caso openSuSE, utilizando MySQL como base de datos.

Pentaho es el resultado de la fusión de varios proyectos de código abierto y algunas herramientas adicionales, para formar un producto BI de caracteristicas world class.

Audiencia

Este documento es para personas con alguna experiencia en linux, manejo de la linea de comandos, que necesite implementar una herramienta BI 100% gratuita

Alcance

La intención es poder instalar y configurar todos los componentes de Pentaho, no haciendo una descripcion detallada de los mismos, ya que esto es motivo de otros documentos, incluso mas extensos.

Requisitos

  • Una pc standard o notebook, con al menos 2Gb de RAM y un disco de 100Gb o mas y un procesador de de 2 cores o superior. Cuando mejor procesador, mejor resultado.
  • Una version de linux instalada
  • Un ambiente java SDK instalado (puede ser el del sistema operativo o puede ser una version de Oracle instalada a los efectos de utilizarla con Pentaho)
  • Base de datos MySQL
  • El proceso de instalación supodrá que trabajamos sobre la maquina que se está instalando (no en una maquina remota)

Proceso

Instalar Pentaho BI Server 3.10 (comunmente denominada 4.0)

Obtener el software de la pagina de pentaho.

Ingresar a la seccion Business Intelligence Server y descargar la ultima version

Ingresar a la seccion Business Intelligence Server y descargar la ultima version estable.

  • Crear un usuario llamado pentaho para administrar el software (no es conveniente que sea root). Salvo que se indique lo contrario, todos los comandos deben ser ejecutados con este usuario ($)
  • Crear un directorio o carpeta la contener todo el software. Personalmente utilizo openSuse y me gusta instalar nuevos paquetes de software en la carpeta /local
 # mkdir /local/pentaho
 # chown pentaho:users /local/pentaho
 $ tar xvzf biserver-ce-3.10.0-stable.tar.gz

Esto creara dos carpetas, una llamada biserver-ce y la otra administration-console

En ésta version 3.10 hay algunos errores que hay que solucionar

  • Una vez instalado el software, descargar ésta version de jpivot
  • Hacer un backup de la version instalada:
 $ cd /biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/
 $ mv jpivot-1.8.0-100420.jar jpivot-1.8.0-100420.bak
  • Copiar la version de jpivot descargada en la carpeta mencionada mas arriba
 $ cp jpivot-1.8.0-100420.jar /biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib/
  • Verificar los permisos para ejecutar pentaho
 $ chmod +x *.sh pentaho/

Particularmente prefiero bajar la ultima version de java SDK desde el site de oracle a utilizar la que viene con el sistema operativo, ya que por problemas de licencias, ésta puede no estar incluída.

  • Descargar la ultima version desde la pagina Java de Oracle
  • Instalar Java en /local/java (Seguir las instrucciones de Oracle)
  • Setear la variable de ambiente JAVA_HOME para el usuario pentaho
 $ vi /home/pentaho/.profile
  • Añadir al final del archivo
 export JAVA_HOME=”/local/java"
  • Cerrar la sesion de pentaho e ingresar nuevamente para que el ambiente tome la nueva variable definida
  • Verificar con
 $ echo $JAVA_HOME

Realizadas esta tareas, podemos arrancar por primera vez el servidor pentaho, de la siguiente forma:

 $ cd /local/pentaho/biserver-ce
 $ ./start-pentaho.sh

Abrimos un navegador, por ejemplo firefox y colocamos:

 http://localhost:8080/pentaho

Podemos ingresar con los usuarios definidos por defecto, como ser joe/password, y verificar el funcionamiento de pentaho revisando algunos de los ejemplo que trae implementados (algunos contienen errores, que seran corregidos mas adelante en éste documento)

Si algo no funciono correctamente, podemos verificar los logs del sistema situados en:

  • /local/pentaho/biserver-ce/tomcat/bin/pentaho.log
  • /local/pentaho/biserver-ce/tomcat/logs/

Configurar Pentaho para utilizar con MySQL

El servidor de Pentaho BI utiliza por defecto la base de datos HSQLDB. Esta base de datos se crea y se carga en memoria cada vez que se inicia el servidor pentaho.

La idea es cambiar al motor MySQL, para darle mas potencia y generar así un ambiente de producción, ya que el anterior (HSQLDB) es eficiente solo a los efectos de una demostración del producto.

Debemos realizar las siguientes tareas:

  • Crear dos bases de datos, hibernate and quartz. La primera utilizada para configuracion y la segunda para procesos internos (scheduling).
  • Crear otra base de datos, sampledata, para contener los datos de la demo de la empresa SteelWheels.
  • Crear una base de datos para un ejemplo mas complejo, que viene en mondrian: foodmart
  • Crear una base de datos vacía para desarrolladores: loading_area
  • y por último crear una base de datos llamada datamart para reportes

que serán descriptas mas adelante

Ahora vamos a modificar la configuracion de pentaho (7 archvivos), para poder indicarle que utilice MySQL en vez de HSQLDB. Estos pasos son por un lado simple, pero por el otro tediosos y nos va a llevar un par de horas ponerlo en funcionamiento.

Vamos a necesitar:

  • Una base de datos MySQL, con acceso de administrador
  • Comandos de SQL para crear las bases de datos y cargar su contenido, que los podemos obtener de SteelWheels & MySQL y de Foodmart
  • Driver JDBC de MySQL, que lo podemos obtener de MySQL

Los pasos a realizar son:

  1. Crear las bases de datos
  2. Cargar las bases de datos de ejemplos
  3. Configurar usuarios y permisos
  4. Modificar las conexiones pentaho hacia MySQL (hibernate y quartz)
  5. Redireccionar hibernate hacia MySQL
  6. Configurar spring-security para MySQL
  7. Modificar la lista de drivers a utilizar para cada conexion jndi
  8. Instalar el driver JDBC en tomcat
  9. Editar el script de inicio para deshabilitar HSQLDB
  10. Configurar los datasources con la Pentaho Administration Console (PAC)
  11. Probar el sistema


Crear las bases de datos

Conectarse a la base de datos y crear dos bases de datos

 $ mysql -u root -p
 Enter password: (Ingresar la contraseña del administrador de mysql)
 ...
 ...
 mysql> create database loading_area;
 Query OK, 1 row affected (0.07 sec)
 mysql> create database datamart;
 Query OK, 1 row affected (0.07 sec)

Cargar las bases de datos de ejemplos

Sin salir de la conexion anterior al servidor mysql, ejecute los comando obtenidos en la descarga realizada anteriormente de los archivos:

  • 1_create_repository_mysql.sql
  • 2_create_quartz_mysql.sql
  • 3_create_sample_datasource_mysql.sql
  • 4_load_sample_users_mysql.sql
  • 5_sampledata_mysql.sql

en el orden mostrado precedentemente

 mysql> source 1_create_repository_mysql.sql;
 mysql> source 2_create_quartz_mysql.sql;
 mysql> source 3_create_sample_datasource_mysql.sql;
 mysql> source 4_load_sample_users_mysql.sql;
 mysql> source 5_sampledata_mysql.sql;

Configurar usuarios mysql y permisos

Crear un usuario lamado pentaho_user y otro pentaho_admin en mysql.

 mysql> create user 'pentaho_user'@'%' identified by '************';
 mysql> create user 'pentaho_admin'@'%' identified by '************';
 

y asignar permisos en las bases de datos datamart, foodmart, hibernate, quartz y sampledata.

 mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON datamart.* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON foodmart.* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT SELECT, INSERT, UPDATE ON hibernate.* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT SELECT, INSERT, UPDATE ON quartz.* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sampledata* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON datamart.* TO 'pentaho_user'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> flush privileges;
 mysql> GRANT ALL PRIVILEGES ON datamart.* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON foodmart.* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON hibernate.* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON quartz.* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON sampledata* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> GRANT ALL PRIVILEGES ON datamart.* TO 'pentaho_admin'@'%' IDENTIFIED BY '*************' WITH GRANT OPTION;
 mysql> flush privileges;


Modificar las conexiones pentaho hacia MySQL

Lanzar un terminal y editar el archivo /local/pentaho/bi-server/tomcat/webapps/pentaho/META-INF/context.xml

 $ vi /local/pentaho/bi-server/tomcat/webapps/pentaho/META-INF/context.xml

y dejarlo de la siguiente forma:

 <?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="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/hibernate"
       validationQuery="select 1" /> 
   <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="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/quartz"
       validationQuery="select 1"/>
 </Context>

en negrita se colocan los parametros que se modifican.

Redireccionar hibernate hacia MySQL

Ahora, editar el archivo /local/pentaho/bi-server/pentaho-solutions/system/hibernate/hibernate-settings.xml con

 $ vi /local/pentaho/bi-server/pentaho-solutions/system/hibernate/hibernate-settings.xml

y cambie lo siguiente:

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

Agregar y mantener usuarios y permisos

Instalar el Plug-in Saiku

Customizar el server de produccion

Instalar Pentaho Data Integration

Instalar Pentaho Design Studio

Instalar Mondrian Schema Workbench

Instalar Pentaho Metadata Editor

Instalar Report Designer

Instalar el Dashboard Editor

Instalar Pentaho/Mondrian Aggregation Designer

Herramientas adicionales

Instalar Weka

Historial de Cambios

Revisión Autor Fecha Descripción
1 Alberto Julio Yualé 27 de diciembre de 2012 Creación de documento
Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas
Procedimientos
Procesos
Indicadores
Items de Configuración
Imprimir/exportar