Datawarehouse e Business Intelligence: Strumenti open source per soluzioni enterprise – Capitolo 2

Riprendiamo la nostra serie di articoli sul datawarehoure e la business intelligence in ambiente open source, vista la crescente domanda di spiegazioni che quotidianamente riceviamo sul nostro sito.

Oggi ci occuperemo dell’installazione del server Pentaho e della sua configurazione per un uso più aziendale, su un ambiente server linux Ubuntu 9.04 (dovrebbe andare bene anche con l’ultima release, magari con qualche piccolo cambiamento).

Procuratevi l’ultima release del server da sourceforge.

Creiamo la directory /opt/pentaho  eseguento in un terminale il comando sudo mkdir /opt/pentaho

Fatto questo creiamo un utente per esguire il server pentaho:

sudo addgroup pentaho

sudo adduser –system –ingroup pentaho –disabled-login pentaho

scompattiamo il software sulla cartella desiderata:

sudo  cd /opt/pentaho

sudo tar -zxvf  /directory/di/downloads/biserver-ce-stable-3.5.2.stable.tar.gz (è la versione corrente al momento della scrittura)

Cambiamo permessi alla directory:

sudo chown -R pentaho:pentaho /opt/pentaho

A questo punto siamo pronti per fare partire il server con il seguente comando:

sudo -u pentaho JAVA_HOME=/usr/lib/jvm/java-6-sun ./start-pentaho.sh

Se tutto è andato bene, indirizzando il proprio browser su http://localhost:8080/pentaho dovreste vedere la pagina di benvenuto.

Nel caso voleste cambiare la porta su cui ascolta il server, dovrete modificare le configurazioni di tomcat. Cercate quindi sotto la directory /opt/pentaho/biserver-ce/tomcat/conf il file server.xml e cambiate la seguente parte:

<Connector port=”8080″ maxHttpHeaderSize=”8192″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />

Se cambiate la porta di ascolto, dovrete modificare anche un altro file, web.xml, situato in tomcat/webapps/pentaho/WEB-INF nella seguente parte:

<context-param>
<param-name>base-url</param-name>
<param-value>http://localhost:8080/pentaho/</param-value>
</context-param>

Riavviate il server e verificate la nuova configurazione.

Buona norma sarebbe a questo punto creare uno script per l’avvio automatico del sistema quando si accende il server. (ma lo vedremo un’altra volta)

Un altro punto per la configurazione del server in ambito aziendale, è la configurazione dei connettori agli svariati database che si possono trovare in ambito aziendale. Di default il sistema viene fornito con i driver per i seguenti tre database:

  1. HSQLDB
  2. MySQL
  3. PostgreSQL

Tali driver li troverete nella directory tomcat/commn/lib. In tale directory dovrebbero essere messi ulteriori driver per la connesisone ad altri database (ad esempio i driver per la connessione ai sistemi Oracle oppure SQL Server).

Di default il sistema viene fornito con tre databases di sistema:

  1. hibernate – usato per registrare gli utenti, le password, i repositary di soluzioni ed altro;
  2. quartz – lo scheduler;
  3. sampledata – un database di esempio per cominciare a lavorare con il sistema.

Tutti e tre sono gestiti tramite il sistema HSQLDB, ma è più utile migrarli su qualcosa di più conosciuto, come MySQL, ORACLE oppure PostgreSQL.

Qui vediamo come migrarli su MySQL (premesso che il server MySQL sia gia’ installato e configurato).

Spostatevi quindi nella directory /opt/pentaho/biserver-ce/data/mysql5 ed eseguite i seguenti comandi:

  1. mysql -h localhost –u root -p < /opt/pentaho/biserver-ce/data/mysql5/create_repositary_mysql.sql
  2. mysql -h localhost –u root -p < /opt/pentaho/biserver-ce/data/mysql5/create_sample_datasource_mysql.sql
  3. mysql -h localhost –u root -p < /opt/pentaho/biserver-ce/data/mysql5/create_quartz_mysql.sql

A questo punto, dobbiamo riconfigurare Quartz e Hibernate.

Niente di più semplice.

Quartz:

Aprite il file tomcat/webapps/pentaho/META-INF/context.xml e modificatelo così:

<?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.hsqldb.jdbcDriver” url=”jdbc:hsqldb:hsql://localhost/hibernate”
validationQuery=”select count(*) from INFORMATION_SCHEMA.SYSTEM_SEQUENCES” />

<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>

Hibernate:

aprite il file tomcat/webapps/pentaho/META-INF/context.xml e modificatelo nel seguente modo:

<?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>

Ora spostatevi in pentaho-solutions/system/hibernate e modificate il file hibernate-settings.xml:

<?xml version=’1.0′ encoding=’utf-8′?>
<settings>

<!–
* This setting allows the deployment to specify where to find the
* database-specific hibernate configuration. The samples supplied
* include the following:
*
* system/hibernate/hsql.hibernate.cfg.xml
* system/hibernate/mysql5.hibernate.cfg.xml
* system/hibernate/postgresql.hibernate.cfg.xml
* system/hibernate/oracle10g.hibernate.cfg.xml
*
–>
<config-file>system/hibernate/mysql5.hibernate.cfg.xml</config-file>

<!–
*
* managed should be set to true if running the BI Platform
* in a managed environment (like JBoss, Orion, etc). In this configuration,
* you should specify another location for the hibernate.cfg.xml (see below)
* instead of simply using the default one provided. This setting essentially
* tells the HibernateUtil class to use JNDI to locate the factory class for
* getting sessions. This allows the platform to use Hibernate across boundaries
* in message beans (for example).
*
<managed>false</managed>
–>

<managed>false</managed>
</settings>

Editate quindi il file mysql5.hibernate.cfg.xml:

<?xml version=’1.0′ encoding=’utf-8′?>
<!DOCTYPE hibernate-configuration
PUBLIC “-//Hibernate/Hibernate Configuration DTD//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
<session-factory>

<property name=”cache.provider_class”>org.hibernate.cache.EhCacheProvider</property>

<property name=”hibernate.generate_statistics”>true</property>
<property name=”hibernate.cache.use_query_cache”>true</property>

<!–  MySQL Configuration –>
<property name=”connection.driver_class”>com.mysql.jdbc.Driver</property>
<property name=”connection.url”>jdbc:mysql://localhost:3306/hibernate</property>
<property name=”dialect”>org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name=”connection.username”>hibuser</property>
<property name=”connection.password”>password</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/mysql5innodb.hbm.xml” />
<!–  This is only used by Pentaho Administration Console. Spring Security will not use these mapping files –>
<mapping resource=”PentahoUser.hbm.xml” />
<mapping resource=”PentahoRole.hbm.xml” />

</session-factory>
</hibernate-configuration>

Siamo quasi alla fine.

editate il file pentaho-solutions/system/applicationContext-sring-security-jdbc.xml:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springsource.org/dtd/spring-beans.dtd”>

<!–+
| Application context containing JDBC AuthenticationProvider
| implementation.
+–>

<beans>

<bean id=”daoAuthenticationProvider”
class=”org.springframework.security.providers.dao.DaoAuthenticationProvider”>
<property name=”userDetailsService”>
<ref bean=”userDetailsService” />
</property>
<property name=”passwordEncoder”>
<ref bean=”passwordEncoder” />
</property>
</bean>

<bean id=”userDetailsService”
class=”org.springframework.security.userdetails.jdbc.JdbcDaoImpl”>
<property name=”dataSource”>
<ref local=”dataSource” />
</property>
<property name=”authoritiesByUsernameQuery”>
<value>
<![CDATA[SELECT username, authority FROM GRANTED_AUTHORITIES WHERE username = ? ORDER BY authority]]>
</value>
</property>
<property name=”usersByUsernameQuery”>
<value>
<![CDATA[SELECT username, password, enabled FROM USERS WHERE username = ? ORDER BY username]]>
</value>
</property>
</bean>
<!–  This is only for Hypersonic. Please update this section for any other database you are using –>
<bean id=”dataSource”
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=”driverClassName” value=”com.mysql.jdbc.Driver” />
<property name=”url”
value=”jdbc:mysql://localhost:3306/hibernate” />
<property name=”username” value=”hibuser” />
<property name=”password” value=”password” />
</bean>

<bean id=”passwordEncoder”
/>

</beans>

editate il file pentaho-solutions/system/applicationContext-spring-security-hibernate.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.MySQLDialect

Fate ripartire tutto e… buon divertimento.

Alla prossima



Articoli Correlati

Datawarehouse e Business Intelligence: Strumenti open source per soluzioni enterprise

In un precedente articolo abbiamo dato la classica definizione di data warehouse (l’articolo può essere letto qui).

Ora vediamo quali sono gli strumenti che si possono usare seguendo ovviamente una logica open source come da nostra prassi:

  1. Una buona conoscenza di cosa è e cosa non è un datawarehouse;
  2. Un buon database server;
  3. Una buona suite di Business Intelligence (BI nel seguito) per poter estrapolare informazioni dai dati contenuti nel data warehouse costruito;

Per quanto riguarda il punto 1 non c’e’ che un percorso: documentarsi in rete, leggere e studiare qualche buon libro teorico, sperimentare alcuni piccoli progetti di prova. Un percorso lungo che pero’ ne vale la pena se si vuole lavorare nel settore.

Per quanto riguarda il punto due le alternative open source da tenere in considerazione, ovviamente a mio parere, sono soprattutto due: Mysql e Postgresql. Nei nostri progetti scegliamo spesso Mysql ma non in modo esclusivo.

Per quanto riguarda il punto 3 da tempo abbiamo scelto la piattaforma Open Source  di Pentaho (esiste anche la versione commerciale). E nel seguito vediamo anche il perchè.

La piattaforma pentaho integra tutta una serie di prodotti utili per la costruzione di un sistema completo di BI:

  1. Mondrian: il motore Olap;
  2. Kettle: lo strumento ETL;
  3. Report Designer:tool visuale per creare analisi e report;
  4. Weka: il tool per le analisi di data mining;
  5. Dashboards: per creare cruscotti aziendali si semplice e immediato uso;
  6. Il server vero e proprio.

Il server pentaho, cuore del motore, puo’ essere eseguito dentro un web server Java EE compliant quale Apache Tomcat oppure Jboss. Questo componente provvede a garantire i servizi di scheduling, sicurezza, integrazione, navigazione dei contenuti, invio di e-mail e molto altro.

Il sistema è abbastanza semplice da installare e da provare sugli ambineti più comuni quali Microsoft Windows, Linux, Mac OS X avendo la pazienda di scaricare  molte decine di megabyte dal sito di pentaho oppure dal classico Sourceforge.

In un prossimo articolo vedremo come installare il server e gli altri applicativi necessari al progetto. Per adesso se volete provare installate il server e visualizzate gli esempi che vengono installati con essi.

Articoli Correlati