pentaho開源商業智能平臺的搭建
摘要:pentaho是世界上最流行的開源商務只能軟件。它是一個基於java平臺的商業智能(Business Intelligence,BI)套件,之所以說是套件是因爲它包括一個web server平臺和幾個工具軟件:報表,分析,圖表,數據集成,數據挖掘等,可以說包括了商務智能的方方面面。
pentaho是世界上最流行的開源商務只能軟件。它是一個基於java平臺的商業智能(Business Intelligence,BI)套件,之所以說是套件是因爲它包括一個web server平臺和幾個工具軟件:報表,分析,圖表,數據集成,數據挖掘等,可以說包括了商務智能的方方面面。整個系統的架構如下圖:
pentaho是世界上最流行的開源商務只能軟件。它是一個基於java平臺的商業智能(Business Intelligence,BI)套件,之所以說是套件是因爲它包括一個web server平臺和幾個工具軟件:報表,分析,圖表,數據集成,數據挖掘等,可以說包括了商務智能的方方面面。整個系統的架構如下圖:
根據官網的介紹,其客戶包括有sun,msyql等這樣知名的企業,真可謂“很好很強大”。更難能可貴的是,它是開源的,社區版完全免費!!
官網: http://www.pentaho.com/products/
sourceforge項目: http://sourceforge.net/projects/pentaho/
下面是幾張使用界面的截圖(圖1,2,3)
圖1
圖2
圖3
細心的你可能已經發現了,裏面還有google maps的身影,是不是很讓人興奮呢?
Pentaho是跨平臺的,linux,windows上都可以安裝,而且安裝十分簡單,就兩個步驟:解壓,執行。
這樣說來這篇文章也沒啥好寫的,但是這是默認情況:數據庫是用的自帶的HSQL,備份維護都十分不方便。這顯然不是我們所希望的。如何利用mysql呢?很可惜官方文檔資料十分有限,而且有用的基本上只對企業用戶開放。社區的資料少還不說,而且還有錯誤。這真的是難壞了我們的社區用戶。
這裏我就以個人的經歷,給大家介紹。
(這裏說的平臺即bi-server,其他的工具軟件本文不涉及,因爲都是下載直接運行的。)
bi-server平臺是一個基於tomcat的JSP web 程序,包含兩個界面:user console和administration console,分別對應的是用戶控制檯和管理控制檯。其作用如下:
用戶控制檯:供用戶登錄進去對數據進行操作,如報表,分析等。
管理控制檯:供管理員進去對用戶,數據源(Data source),BI server等做全局設置。
一、安裝預備
bi-server本身自帶有tomcat server,所以不需要另外裝。
bi-server本身帶有測試用的sample數據,可以對它進行產生報表圖表等操作,但是初始安裝時這些操作僅限本機登錄。
pentaho需要JRE版本>=1.5.X,所以需要首先配置好JRE環境(配置過程見附錄1)。
mysql5 安裝好。(此文即是介紹如何使用mysql而不是自帶的hsql做數據庫)。
我這裏的安裝環境是:
操作系統: Centos 5
JAVA版本:jdk1.5.0_14
Mysql版本:Mysql-5.0.45
服務器IP:192.168.0.114
二、基本安裝
1.下載
從其sourceforge的頁面上下載,下載的包爲biserver-ce-2.0.0.stable.zip 這是穩定版,推薦生產環境用這個。
(注意:官方的tar.gz包解壓出來沒有jre子目錄,會導致tomcat無法正常啓動。不知道是不是發佈者的疏忽。所以請大家仔細檢查下載出來的包!!)
2.解壓
我這裏解壓到/usr/local/pentaho目錄下,解壓出來的目錄名是biserver-ce。
3.調整權限
解壓後給目錄加執行權限,否則腳本執行不了。
命令chmod +x -R biserver-ce
4.啓動
(注意:必須在啓動腳本所在的目錄下執行啓動腳本,在別的目錄不行!)
①執行目錄下的腳本start-pentaho.sh 來啓動user console
運行命令 ./start-pentaho.sh
第一次啓動的時候會提示是否啓動版本檢查,當有新版本可用的時候會提醒的。
需要這個功能就直接回車,不需要的就輸入cancel,如果想停止啓動則輸入CTRL+C
輸入回車後輸出如下:
閱讀這些啓動信息,可以詳細瞭解整個啓動過程都做了些什麼。
查看端口開放情況
輸入netstat –ant輸出如下:
其中 8080是web訪問端口,9001是hsql的服務端口。
②執行administration-console目錄下的腳本start.sh來啓動administration console。
運行命令./start.sh &輸出如下:
注: 命令./start.sh &裏面的”&”符號表示是後臺執行,如果不加會導致不能繼續命令行輸命令。
端口開放情況如下:
5.登錄到web界面
(建議從本機登錄web,因爲默認安裝時僅允許本機登錄的用戶才能對sample data進行報表操作;如果從外部的機器訪問,則把下面的localhost改爲機器IP,即192.168.0.114,此時雖然可以登錄進去,但是不能做sample data的報表)
①登錄user console
打開鏈接http://localhost:8080/pentaho,看到如下界面
選擇一個用戶登錄以後看到的界面如下
登錄進去後,你可以做生成報表圖表等操作了。
②登錄administration console
打開鏈接http://localhost:8099,會提示輸入用戶密碼,分別輸入admin : password
登錄進去以後顯示的界面如下
6.停止
①執行目錄下的腳本stop-pentaho.sh 來停止user console。
輸出如下:
端口8099已經關閉了。
這就是整個安裝,啓動,使用和停止的過程。確實很簡單吧。下面要做的就是修改一些配置來使用mysql,並允許外部的機器訪問。
1.數據庫初始化
初始化的工作就是建立相關的庫,導入相關的數據。爲了測試報表功能,我們還需要有數據源(data source)。
名詞解釋:
數據源(data source):也就是數據的來源。我們的報表都要由這些數據生成。在基本安裝的時候pentaho自帶的數據源是HSQL上的名爲sampledata的數據庫,現在我們需要mysql下的一個庫。
pentaho自帶了mysql數據庫的初始化腳本,首先切換到該目錄下:
cd data/mysql5/
然後下載sampledata數據庫作數據源用:
wget http://www.prashantraju.com/pentaho/downloads/sampledatamysql5.sql
導入數據腳本(注意次序不能亂)
mysql -uroot -p mysql -uroot -p mysql -uroot -p mysql -uroot -p |
各個腳本的功能如下:
表名 |
功能 |
create_repository_mysql.sql |
創建hibernate數據庫 建用戶hibuser,密碼爲password,對庫有完全權限 建DATASOURCE表 |
create_quartz_mysql.sql |
創建quartz數據庫 建用戶pentaho_user,密碼爲password,對庫有完全權限 建了很多QRTZ_開頭的表 |
create_sample_datasource_mysql.sql
|
向hibernate庫的DATASOURCE表裏面插入一個記錄 數據源即是在這裏定義,顯示在administration console裏面的Data Sources欄目裏面 |
sampledatamysql5.sql |
創建sampledata數據庫和它的表 用戶pentaho_user和pentaho_admin,密碼爲password,對庫有完全權限 這個庫就是我們生成報表所用的數據源 |
完成的上面的工作以後,mysql裏面就有了hibernate,quartz和sampledata三個數據庫和相應的用戶。
2.修改配置文件
對配置文件修改主要是修改裏面的數據庫連接部分和允許外部訪問的部分。
(1)配置目錄 pentaho-solutions/
文件路徑如下:
pentaho-solutions/ system/ applicationContext-acegi-security-jdbc.xml (要修改) applicationContext-acegi-security-hibernate.properties (要修改) hibernate/ hibernate-settings.xml (要修改) mysql5.hibernate.cfg.xml (做檢查,有必要的時候修改) |
共有4個文件,下面針對這4個文件的修改分別加以說明:
applicationContext-acegi-security-jdbc.xml
作用:給BI server所用的SpringSecurity system建立JDBC認證。
修改項目
名稱 |
舊值 |
新值 |
driverClassName (數據庫訪問的驅動) |
org.hsqldb.jdbcDriver |
com.mysql.jdbc.Driver |
url (hibernate這個庫的url) |
jdbc:hsqldb:hsql://localhost:9001/hibernate |
jdbc:mysql://localhost:3306/hibernate |
username (訪問hibernate庫的用戶) |
hibuser |
hibuser (或root,但不推薦) |
password (訪問hibernate庫的密碼) |
password |
password (或root的密碼,但不推薦) |
applicationContext-acegi-security-hibernate.properties
作用:設置屬性參數用於Spring Security來建立數據庫與hibernate的連接。
名稱 |
舊值 |
新值 |
jdbc.driver |
org.hsqldb.jdbcDriver |
com.mysql.jdbc.Driver |
jdbc.url (hibernate庫的url) |
jdbc:hsqldb:hsql://localhost:9001/hibernate |
jdbc:mysql://localhost:3306/hibernate |
jdbc.username (訪問hibernate庫的用戶) |
hibuser |
hibuser(或root,但不推薦) |
jdbc.password (訪問hibernate庫的密碼) |
password |
password(或root的密碼,但不推薦) |
hibernate.dialect (數據庫用的語言) |
org.hibernate.dialect.HSQLDialect |
org.hibernate.dialect.MySQLDialect |
修改項目
hibernate-settings.xml
作用:基本的hibernate設置,例如hibernate的數據庫後臺。
修改項目
名稱 |
舊值 |
新值 |
config-file |
system/hibernate/hsql.hibernate.cfg.xml |
system/hibernate/mysql5.hibernate.cfg.xml |
mysql5.hibernate.cfg.xml
作用:配置hibernate數據庫的mysql連接,這樣就允許BI server內部的管理連接。
因爲這個配置文件已經是針對mysql的了,,所以不需要修改,只是要檢查確認。
名稱 |
值 |
connection.driver_class |
com.mysql.jdbc.Driver |
connection.url |
jdbc:mysql://localhost:3306/hibernate |
connection.username |
hibuser(可以改爲root,但不推薦) |
connection.password |
password((可以改爲root的密碼,但不推薦) |
(2) 配置目錄tomcat/webapps/pentaho/
這是做修改網頁相關的配置。
要修改的文件路徑如下:
tomcat/ webapps/ pentaho/ WEB-INF/ web.xml META-INF/ context.xml |
下面對這2個文件分別說明:
web.xml
作用:tomcat的pentaho站點啓動的主配置文件,如建立所有的JSP和其他各種文件。
修改項目
名稱 |
舊值 |
新值 |
base-url |
http://localhost:8080/pentaho/ |
將localhost保留或改爲實際ip |
如果是localhost,那麼僅能從本機登錄才能打開sampledata報表,如果是實際ip。那樣就能從別的機器登錄了。
context.xml
作用:建立hibernate和quartz兩者的配置文件。
做如下修改:
對於Resourcename="jdbc/Hibernate"
username |
更新爲hibuser(或者root) |
password |
更新爲password(或者root的密碼 ) |
driverClassName |
更新爲com.mysql.jdbc.Driver |
url |
更新爲jdbc:mysql://localhost/hibernate (需要的時候localhost後加端口號) |
validationQuery |
刪掉這個值,或者填SELECT 1 (這個值是檢查庫是否可用的SQL查詢) |
對於Resourcename="jdbc/Quartz"
username |
更新爲pentaho_user (或者root) |
password |
更新爲password(或者root的密碼 ) |
driverClassName |
更新爲com.mysql.jdbc.Driver |
url |
更新爲jdbc:mysql://localhost/quartz (需要的時候localhost後加端口號) |
validationQuery |
刪掉這個值,或者填SELECT 1 (這個值是檢查庫是否可用的SQL查詢) |
配置文件的修改就完成了,啓動user console和administration console吧!
下面就需要配置數據源來使用mysql裏面的sampledata做數據源,過程如下:
登錄到administration console中,在administration 頁面的”data sources”標籤下,點左邊的“sampledata”,可以看到當前使用的數據源仍就是hsql裏面的 sampledata庫。(如下圖)
進行如下操作
在General頁下 Driver Class 選"com.mysql.jdbc.Driver" User Name: pentaho_user(默認是這個,所以不改) Password: password(默認是這個,所以不改) URL 修改爲 jdbc:mysql://localhost:3306/sampledata (根據實際的mysql端口更改) 在Advanced頁下 將"Validation Query" 設爲空或者SELECT 1 |
完成後如下圖
左圖爲”General”頁,右圖爲”Advanced”頁。
點test按鈕進行測試,成功的時候會顯示如下窗口
點update按鈕就保存了。這個時候就是更新了hibernate數據庫的DATASOURCE表。
重新啓動user console生效。
所有的任務到此完成,你可以看到已經沒有到9001端口的鏈接了。所有的數據操作都是連接到mysql的端口3306的。
鑑於pentaho的相關文章相當少,而且文檔裏面涉及的版本也很低,所以才寫了這篇文章,希望能對感興趣的人有所幫助。
使用過程中的常見問題及可以參考的資料見附錄。
附錄1:JRE環境的配置
因爲jdk本身帶有jre,所以就直接下jdk,方便以後安裝相關軟件,避免出現莫名其妙的問題。步驟如下:
1、從java.sun.com下載jdk包
我下載的包是jdk-1_5_0_14-linux-i586.bin
2、將包移到/usr/local下,並給執行權限
chmod a+x jdk-1_5_0_14-linux-i586.bin
4、執行自解壓文件jdk-1_5_0_14-linux-i586.bin
./jdk-1_5_0_14-linux-i586.bin
閱讀完license後,輸入yes
5、創建必要的鏈接
ln -s jdk1.5.0_14 jdk
ln -s /usr/local/jdk/jre jre
6 修改環境變量
vi /etc/profile加入以下內容
PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin:/usr/local/jdk JAVA_HOME=/usr/local/jdk JAVA_OPTS=-server export JAVA_HOME JAVA_OPTS
CLASSPATH=.:/usr/local/jdk/lib:/usr/local/jdk/jre/lib export CLASSPATH |
7 使環境變量生效
source /etc/profile
附錄2:windows平臺的配置
因爲pentaho是垮平臺的,所以按照本文的方法也適用於windows。
附錄3:google maps無法顯示的問題
從客戶端登錄user console以後,點擊”打開”按鈕或者從菜單選擇”打開”,依次選擇”車輪的生產銷售分析”——”儀表盤”——”Google Maps”,若無法顯示google地圖,只得到如下的提示信息:
只需要按照提示的說明到google申請key。(需要說明的是,必須要有google的賬號才能申請)。申請完成後將得到的key填入到文件/usr/local/pentaho/biserver-ce/pentaho-solutions/system/google/googlesettings.xml中(如下圖)
重啓pentaho,就可以正常顯示了(如下圖)。
附錄4:生成report時彈出”business models”無法顯示的問題
登錄到user console時點擊”New Report”,顯示如下對話框
這是由於登錄的用戶的權限不夠所導致的,不能打開”business model”裏面的欄目。
你用其他的用戶(例如joe)登錄進去就可以看到裏面的欄目了(如下圖)。而且用不同的用戶登錄會發現,不同的權限的用戶,可以看到不同的內容。
附錄:5 有用的資源
http://forums.pentaho.org/
官方論壇,註冊起來有點麻煩,裏面有一些有用的文檔和提問解答。
http://wiki.pentaho.com/
wiki社區,提供一些文檔,但是有些僅對企業用戶開放,而且文檔的更新速度一般。
http://wiki.pentaho.com/download/attachments/1838/community_user_guide.pdf
介紹手冊