Pentaho Lösungen mit CBF

Einleitung

Das Coummunity Build Framework ist Grundlage für eine solide Entwicklungsumgebung von Pentaho Solutions. Leider ist die Anwendung des CBF für Personen, die sonst mit Java Entwicklung nicht viel zu tun haben, recht komplex. Nach einer längeren Probier- und Fragephase ist die folgende Schritt- für Schritt Anleitung entstanden, die die Installation und Konfiguration des CBF auf einem Linux-Ubuntu System beschreibt.

Installation

UNIX Benutzer anlegen

Damit man mit möglichst wenig Einflüssen aus anderen Programminstallationen und deren Konfigurationsdateien zu tun hat, installiere ich das CBF unter einem eigenen, neuen UNIX Benutzer, der nur das CBF beherbergen soll.
Um gleich mit der richtigen Übersicht zu starten, werden ein paar Verzeichnisse angelegt.

# Create a new user as root
su -
adduser cbfadmin
su - cbfadmin
mkdir -p ~/work/Downloads
mkdir -p ~/work/cbf

Da ich keine Parameter angegeben habe legt Linux einen ganz normalen User mit dem Home Laufwerk unter home/cbfadmin an. Dort werden die Verzeichnisse unter ~/work angelegt.

Repository Clients etc.

Um die Sourcen von Pentaho aus dem SVN Repository zu holen, brauche ich einen Subversion Client. Da dieser nicht allzu versionskritisch ist, installiere ich der Einfachheit halber aus den Ubuntu Paketquellen. Für die CTools von Webdetails benötige ich weiterhin einen git client. Bei späteren Downloads werde ich auch wget und rsync verwenden, also installiere ich das gleich mit :

# Install some packages using apt
su -
apt-get install subversion git-core wget rsync

Java

Die richtige Java Umgebung kann für die Lauffähigkeit der Pentaho Lösung entscheidend sein. Damit diese unabhängig vom Linux System variiert werden kann, entscheide ich mich für eine lokale Java Installation nur für das CBF. Dazu lade ich die Java JDK Binaries als *tar.gz direkt von der SUN/Oracle Website ( http://www.oracle.com/technetwork/java/javase/downloads/index.html ) herunter und speichere die Datei unter ¨/work/Downloads. Dort werden alle Downloads gesammelt, damit man nachvollziehen kann, aus welchen Dateien das CBF zusammengesetzt ist.

# Install a fresh JDK
su - cbfadmin
cd ~/work
tar xvfz Downloads/jdk-6u29-linux-i586.tar.gz
ln -s jdk-1.6.0_29 jdk

Damit alle Konfigurationen sein können werden, erstelle ich einen symbolischen Link „jdk“, der auf das „jdk1.6.0_29“ verweist. Alle Java Aufrufe des Benutzers cbfadmin sollen auf diese Java Installation umgelenkt werden, die evtl. vorhandenen Installationen im System sollen nicht mehr verwendet werden. Dafür legen wir eine
.profile Datei an, die alle Benutzerspezifischen Einstellungen enthalten wird :

# Configure JDK 
su - cbfadmin
cd ~
echo '# JAVA settings'  > .profile.cbf
echo 'JAVA_HOME=$HOME/work/jdk' >> .profile.cbf
echo 'PATH=${JAVA_HOME}/bin:$PATH' >> .profile.cbf
echo 'export JAVA_HOME PATH'  >> .profile.cbf
echo >> .profile.cbf
echo '. $HOME/.profile.cbf' >> .profile

Nach dem Erstellen bzw. Erweitern der .profile Dateien muss man den Benutzer einmal ab- und wieder anmelden, damit die Einstellungen in der Shell verfügbar sind. Alternativ kann natürlich auch die .profile manuell ausgefuehrt werden.

cd ~
. ./.profile

Zum Abschluss der Java Installation machen wir noch einen Test :

# Test JDK configuration
type java
java -version

Herauskommen sollte der Pfad zum ~/work/jdk/bin/java sowie eine Meldung, die die 1.7x Version von Java ausgibt.

ANT

Ant ist der make Mechanismus für Java. Obwohl ant über die Ubuntu Sourcen installiert werden kann, entscheide ich mich für eine manuelle Installation. Damit habe ich einfacher Einfluss auf die verwendeten Versionen.

Die Pakete habe ich hierher geholt http://ant.apache.org/bindownload.cgi, im Zweifel sollte man dort auch nach den aktuellen Versionen forschen.

# Download and install ANT as cbfadmin
cd ~/work/Downloads
wget http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist//ant/binaries/apache-ant-1.8.2-bin.tar.gz
cd ..
tar xvfz Downloads/apache-ant-1.8.2-bin.tar.gz
ln -s apache-ant-1.8.2 ant

Auch hier legen wir wieder einen symbolischen Link an, der die Konfiguration in der .profile.cbf versionsunabhängig macht.

# configure ANT as cbfadmin
cd ~
echo '# ANT Settings' >> .profile.cbf
echo 'ANT_HOME=${HOME}/work/ant' >> .profile.cbf
echo 'PATH=${ANT_HOME}/bin:$PATH' >> .profile.cbf
echo 'export ANT_HOME PATH' >> .profile.cbf
echo >> .profile.cbf

Nun muss Ant noch um eine Bibliothek erweitert werden : JUnit. JUnit kann über http://www.junit.org bezogen werden. Auch diese Bibliothek ist OpenSource. Wir benötigen die junit-x.yy.jar Datei und laden sie nach ~/work/Downloads. Anschliessend wird diese Datei nach ${ANT_HOME}/lib kopiert.

# copy JUnit to ant/lib 
cd ~
cp ~/work/Downloads/junit*jar $ANT_HOME/lib

Wie bei der Java Installation bietet es sich auch hier an einen kurzen Check auszuführen :

# test ANT configuration
cd ~
. ./.profile
type ant
ant -version

Wenn die Ausgaben auf die richtige Ant Version verweisen ist alles ok, und wir können uns dem nächsten Paket widmen.

Tomcat

Der Applicationserver Tomcat wird ebenfalls lokal beim Benutzer cbfadm installiert. Da der Tomcat auch ein Apache Projekt ist, kann er auch von dort bezogen werden. Die aktuelleren Versionen des Pentaho Servers lassen sich scheinbar mit allen Tomcat Versionen >= 5.5 und < 7 kopilieren. Der BI-Server 3.6 verwendet angeblich ausschliesslich den Tomcat 5.5 , getestet habe ich das aber nicht.

Die Download URL muss man anhand der zu verwendenden Version selber ermitteln – Ausgangspunkt ist http://tomcat.apache.org. Zunächst werden wir eine 6.0.x Version verwenden.

# Install TOMCAT as cbfadmin
cd ~/work/Downloads
wget http://apache.mirror.digionline.de/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
cd ..
tar xvfz Downloads/apache-tomcat-6.0.35.tar.gz
ln -s apache-tomcat-6.0.35 tomcat

Damit ist die Software installiert, fehlt noch die Konfiguration. Diese erfolgt analog zu denen in den letzten Abschnitten :

# configure Tomcat as cbfadmin
cd ~
echo '# TOMCAT settings'  >> .profile.cbf
echo 'TOMCAT_HOME=$HOME/work/tomcat' >> .profile.cbf
echo 'PATH=${TOMCAT_HOME}/bin:$PATH' >> .profile.cbf
echo 'export TOMCAT_HOME PATH'  >> .profile.cbf
echo >> .profile.cbf

Und abschliessend wieder ein Test :

# test TOMCAT Installation
cd $TOMCAT_HOME/bin
./version.sh

Neben der Meldung des Tomcats sollte auch ein Verweis auf die verwendete JVM erscheinen, die unserer lokalen Installation entsprechen muss.

CBF Quickstart Package

Pedro Alves ist der Urheber des CBF. Auf der Seite seiner Firma Webdetails lässt sich ein Quickstart Package des CBF downloaden, welches ich als Basis meiner Installation verwenden möchte :

# Install CBF Quickstart package
su - cbfadmin
cd ~/work/Downloads
wget http://cbf.webdetails.org/sites/cbf.webdetails.org/files/resources/cbf-quickstart-3.7.tgz
cd ..
tar xvfz Downloads/cbf-quickstart-3.7.tgz
mv cbf-quickstart/ cbf

Ein erstes CBF Projekt

Was passiert nun

CBF baut aus den Sourcen von Pentaho eine lauffähige Umgebung, fügt die selbstentwickelten Solutions hinzu und ersetzt Teile vom Pentaho System durch Patches, die der Entwickler hinzufügt. Zudem kann CBF Variablen in allen Scripten durch Vorgaben in Konfigurationsdateien ersetzen. Dafür müssen wir noch einige, teilweise optionale Dinge vorbereiten :

  • Anlegen der Verzeichnisse, die die Builds und Solutions aufnehmen sollen
  • Erstellen geeigneter Konfigurationen
  • Erstellen eigener Solutions
  • Erstellung von Patches

In diesem Abschnitt soll mit einem einfachen Testprojekt das generelle Vorgehen beschrieben werden.

Pentaho Sourcen holen

Die relevanten Pentaho Sourcen können unter http://source.pentaho.org/svnroot/bi-platform-v2/tags eingesehen und heruntergeladen werden. Da ich mit der Coummunity Edition arbeite, sind für mich ausschliesslich die „stable“ Versionen von Interesse. Alle anderen Versionen, z.B. „GA“ und „RC*“ scheinen nicht von Interesse zu sein oder nur für die Enterprise Edition.

Also bleiben ( Stand 10.1.2012 ) die Versionen 3.5-stable – 3.10-stable über. Da ich mit verschiedenen Versionsständen kompilieren möchte, lade ich die für mich relevanten Versionen herunter :

# get Pentaho Sources 
su - cbfadmin
cd ~/work/cbf
svn co svn://source.pentaho.org/svnroot/bi-platform-v2/tags/3.10.0-stable pentaho-3.10

Repository vorbereiten

Der Pentaho BI Server speichert einige Informationen in zwei Repository Datenbanken, Quartz und Hibernate ab. Desweiteren gibt es noch eine Datenbank „sampledata“, die alle Informationen beinhaltet, die für die BI-Server Demo Solutions verwendet werden. Im Grundzustand wird dafür eine HSQL Datenbank verwendet, was aber Problemlos auf MySQL, Postgres, Oracle etc. umkonfiguriert werden kann.

Für diesen Build möchten wir die HSQLDB verwenden. Die Grunddaten für die DBs liegen im Sourcenverzeichnis und müssen noch eine geeignete Stelle verschoben werden :

# move HSQL data to a proper location
su - cbfadmin
cd ~/work/cbf
mkdir hsqldb
cp pentaho-3.10/bi-platform-sample-data/hsqldb/* hsqldb

Die Konfiguration, die dem Build Prozess sagt, wo die DB Daten liegen, ändern wir in den nächsten Abschnitten.

Projekt anlegen

Im CBF Quickstart Package ist bereits ein vorkonfiguriertes Projekt enthalten. Dieses wollen wir als Grundlage für ein neues, eigenes Projekt nutzen. Zunächst wird einfach das Projektverzeichnis kopiert. Der neue Ordnername
soll der Konvention „project-“ folgen. Für ein Testprojekt wählen wir folgendes :

# copy default client project to new test project
cd ~/work/cbf
cp -pr project-client project-test

Nun kommt der zunächst wichtigste Teil, die build Properties müssen gesetzt werden. Das sind die Umgebungsvariablen, die den Buildprozess steuern.
In den Properties möchten wir dem Build z.B. mitteilen, dass die Pentaho 3.10 Sourcen genutzt werden.
Zu diesem Zweck legen wir unter ~/work/cbf/project-test/config die Datei build-testenv.properties an. Die Datei build.properties im gleichen Verzeichnis kann dazu als Vorlage dienen.
Zunächst gehen wir mal vom einfachsten Fall aus. Es soll lediglich ein build durchgeführt werden. Es stehen keine Ersetzungen von Variablen in Scripten an und es soll auch kein Deployment erfolgen.

Desweiteren legen wir hier eine benutzerdefinierte Variable HSQLDATAPATH an, die auf das zuvor angelegte Repository-Verzeichnis verweist.

Damit reduziert sich das Properties File auf ein Minimum :

# Content of ~/work/cbf/project-test/config/build-testenv.properties
#
# Paths
javac.path = /home/work/cbf/jdk/bin/javac

# Build Directories, relative to project home
target-dist = target-dist/
solution.path = solution/
pentaho.build.dir = target-build/

# Tomcat and Java Props
server.name = tomcat
java.opts = -Dfile.encoding=utf-8 -Xmx512m -XX:MaxPermSize=512m -Djava.awt.headless=true

# Project props
project.revision=3.10.0-stable
pentaho.dir = pentaho-3.10/

#  HSQLDATAPATH
HSQLDATAPATH = /home/cbfadmin2/work/cbf/hsqldb

Das CBF Quickstart Package ist auf einen Pentaho 3.8 Build vorbereitet. Da wir nun einen Build einer 3.10 Version durchführen wollen, muss noch ein Patch geändert werden. Dazu wechseln wir in das Verzeichnis ~/work/cbf/project-test/patches/target-dist/server/webapps/pentaho/WEB-INF. In diesem Verzeichnis residiert die Datei web.xml. Sie muss gegen ihr Pendant aus der 3.10er Version ausgetauscht werden.

# configure web.xml
su - cbfadmin
cd ~/work/cbf/project-test/patches/target-dist/server/webapps/pentaho/WEB-INF
mv web.xml web.xml.orig
cp ~/work/cbf/pentaho-3.10/bi-platform-appserver/webapps/pentaho/WEB-INF

In dieser Datei müssen wir auch noch eine Änderung bzgl. des HSQLDB Datenverzeichnisses machen. Mit einem geeigneten Editor suchen wir die Zeile :

 sampledata@../../data/hsqldb/sampledata,hibernate@../../data/hsqldb/hibernate,quartz@../../data/hsqldb/quartz

und ersetzen sie durch die folgende :

sampledata@@HSQLDATAPATH@/sampledata,hibernate@@HSQLDATAPATH@/hibernate,quartz@@HSQLDATAPATH@/quartz

Build durchführen

Ok, fast am Ziel. Jetzt wird sich zeigen, ob die Installation und Konfiguration korrekt ist. Der im ersten Lauf recht langwierige Buildprozess kann nun mit folgenden Statements gestartet werden :

su - cbfadmin
cd ~/work/cbf
ant -Dproject=test -Denv=testenv dist-clean all

Ant werden einige Parameter übergeben

  • -Dproject referenziert das Projektverzeichnis. Dieses haben wir project-test genannt, davon abgeleitet ist Dproject=test
  • -Denv referenziert die zu verwendende Konfigurationsdatei innerhalb des Projektverzeichnis. Da wir die Datei build-testenv.properties genannt haben, übergeben wir nun testenv als Parameter.

„dist-clean“ und „all“ bezeichnen nun die Vorgänge, die ant ausführen soll. Im Klartext heisst das nun aufräumen und alle Dateien bauen.

Alle möglichen Ant Direktiven kann man mit

ant -Dproject=test -Denv=testenv -p

auf den Bildschirm drucken.

Den Build testen

An dieser Stelle sei angenommen, dass der Build erfolgreich gelaufen ist. D.h., dass im ~/target-dist Verzeichnis nun ein ausführbarer Pentaho Server vorliegt, der mit der Solution im project-test/solutions Verzeichnis ausgeführt werden kann.

Gestartet wird der Server in der Entwicklungsumgebung mit folgendem Kommando :

ant -Dproject=test -Denv=testenv run

Unter der URL http://localhost:8080 kann man nun auf den selber generierten Server zugreifen.

Links

http://diethardsteiner.blogspot.com/2010/11/how-to-set-up-pentaho-community-build.html#CBF_Build_XML_3504060094710439
http://pedroalves-bi.blogspot.com/2009_11_01_archive.html
http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework#CBF-CommunityBuildFramework-Download
http://cbf.webdetails.org

Über pfabricius

Peter Fabricius ist ein freiberuflicher BI-Consultant. Sein Schwerpunkt liegt bei der Konzeption und Implementierung von ETL Funktionalitäten mit Pentaho/kettle, SSIS oder auch per Skriptsprache
Dieser Beitrag wurde unter Pentaho abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse einen Kommentar