소개
pentaho di 툴의 repository 와 서버 역할을 한다. pentaho 에는 pentaho di 라는 웹 기반의 서버가 있는데 pentaho 에서는 이 서버를 slave 라 한다.
master, slave, cluster 라는 개념이 있기 때문에 구분해서 정의를 내려야 한다.( 아직 파악하지 못함 )
client 툴에서 etl 을 작성하여 로컬에서 테스트 후에 repository 에 저장 후 paster, slave 에 실행을 하면
각 서버에 실행 정보가 절달이 되고 실행은 각 서버에서 수행 한다.
홈페이지에서 제공되는 메뉴얼로는 설치를 할 수 없었고, 인터넷어서 자료를 찾았지만 생각보다 많지 않았다.
현재도 repository 에 접속만 되었지 어느 기능까지 될지는 아직 모르고
따라서 메뉴얼보다는 다른 자료를 중심으로 database repository 설치를 진행하였다.
설치
jdk 8 이상 설치
# yum install java-11-openjdk*
download
https://sourceforge.net/projects/pentaho/files/ 에서 pentaho 9.1 에서 다운받고 적당한 위치에서 unzip 으로 압축해제 한다.
설정
$ sh set-pentaho-env.sh
실행
[bos@tlog-etl pentaho-server]$ sh start-pentaho-debug.sh
WARNING: Using java from path
DEBUG: _PENTAHO_JAVA_HOME=
DEBUG: _PENTAHO_JAVA=java
--------------------------------------------------------------------------------------------
The Pentaho BI Platform now contains a version checker that will notify you
when newer versions of the software are available. The version checker is enabled by default.
For information on what the version checker does, why it is beneficial, and how it works see:
http://wiki.pentaho.com/display/ServerDoc2x/Version+Checker
Press Enter to continue, or type cancel or Ctrl-C to prevent the server from starting.
You will only be prompted once with this question.
--------------------------------------------------------------------------------------------
[OK]:
Using CATALINA_BASE: /home/bos/pentaho-server/tomcat
Using CATALINA_HOME: /home/bos/pentaho-server/tomcat
Using CATALINA_TMPDIR: /home/bos/pentaho-server/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /home/bos/pentaho-server/tomcat/bin/bootstrap.jar:/home/bos/pentaho-server/tomcat/bin/tomcat-juli.jar
Tomcat started.
[bos@tlog-etl pentaho-server]$
Port
typevalueetc
pentaho server web port | 8080 | admin / password |
pentaho server repository | 8080 | http://ip:8080/pentaho admin / password |
carte | 8080 | |
Database Repository
기본 repository 는 file base 이다. pentaho server 를 통해서 database repository 를 설정할 수 있다.
database repository 를 통한 이점은 ?
database 준비
repository database 는 mysql, postgresql, oracle 등이 권장 된다. 다른 데이터베이스는 어지간하면 쓰지 말라는 멘트가 있다.
postgresql 을 대상 데이터베이스로 선정하고, postgresql 설치 는 다음을 참고 한다.
database 에 hibernate, quartz, jackrabit 설치
pentaho 에서는 repository 로써의 다양한 기능을 third party 등을 통해 구현하였고
각 기능별로 database 및 사용자를 별도로 관리한다. 물론 original 테이블들도 별도로 있다.
$PENTAHO_HOME/data/postgresql 디렉터리에 생성을 위한 sql 파일이 있다. superuser 를 통해서 생성한다.
$ psql -U bos -a -f $PENTAHO_HOME/data/postgresql/create_jcr_postgresql.sql
$ psql -U bos -a -f $PENTAHO_HOME/data/postgresql/create_quartz_postgresql.sql
$ psql -U bos -a -f $PENTAHO_HOME/data/postgresql/create_repository_postgresql.sql
pentaho server 준비
quartz 설정
quartz 설정은 기본값이 postgresql 이다. 다음 설정 정도만 확인한다.
$ vi $PENTAHO_HOME/pentaho-solutions/system/quartz/quartz.properties
#_replace_jobstore_properties
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.dataSource.myDS.jndiURL = Quartz
hibernate 설정
postgresql.hibernate.cfg.xml 값에 localhost:5432 로 설정된 값들이 있다. 데이터베이스의 위치가 별도의
인스턴스에 있다면 변경해준다. 이것 뿐 아니라 다른 설정등도 마찮가지다.
$ vi $PENTAHO_HOME/pentaho-solutions/system/hibernate/hibernate-settings.xml
# 아래 값으로 변경
<config-file>system/hibernate/postgresql.hibernate.cfg.xml</config-file>
jackrabbit 설정
$ vi $PENTAHO_HOME/pentaho-solutions/system/jackrabbit/repository.xml
# 작성시 유의점은
# 카테고리를 따라서 작성하기 보다는 파일의 순서가 아래와같다.
# 순서에 맞게 작성을 한다.
# 자료들을 보면 param 이 조금씩 다른다.
# 각 항목하다 데이터베이스별 예제들이 주석으로 기록되어 있다 이것을 사용한다.
# repository
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="schema" value="postgresql"/>
<param name="schemaObjectPrefix" value="fs_repos_"/>
</FileSystem>
# datastore
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="databaseType" value="postgresql"/>
<param name="minRecordLength" value="1024"/>
<param name="maxConnections" value="3"/>
<param name="copyWhenReading" value="true"/>
<param name="tablePrefix" value=""/>
<param name="schemaObjectPrefix" value="ds_repos_"/>
</DataStore>
# workspace
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="schema" value="postgresql"/>
<param name="schemaObjectPrefix" value="fs_ws_"/>
</FileSystem>
# persistenceManager 첫번째
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="schema" value="postgresql"/>
<param name="schemaObjectPrefix" value="${wsp.name}_pm_ws_"/>
</PersistenceManager>
# versioning
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="schema" value="postgresql"/>
<param name="schemaObjectPrefix" value="fs_ver_"/>
</FileSystem>
# persistenceManager 두번째
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/jackrabbit"/>
<param name="schema" value="postgresql"/>
<param name="schemaObjectPrefix" value="pm_ver_"/>
</PersistenceManager>
# journal 메뉴얼에는 있지만 일단 기록하지 않음
# 이유는 기타 자료등에서는 취급하지 않았다.
# 필요하면 나중에..
tomcat context.xml 설정
메뉴얼과 항목이 조금 다르다. 아에 없는 부분도 있고 확인되지 않은 부분도 있는데 이부분은 일단 넣지 않고 진행한다.
$ vi $PENTAHO_HOME/tomcat/webapps/pentaho/META-INF/context.xml
<?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" maxTotal="20" maxIdle="5" maxWaitMillis="10000" username="hibuser" password="password" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/hibernate" validationQuery="select 1"/>
<Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxTotal="20" maxIdle="5" maxWaitMillis="10000" username="pentaho_user" password="password" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/quartz" validationQuery="select 1"/>
<Resource name="jdbc/jackrabbit" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" minIdle="0" maxIdle="5" initialSize="0" maxWait="10000" username="jcr_user" password="password" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/jackrabbit" validationQuery="select 1"/>
</Context>
spring-security-hibernate.properties 설정
$ vi $PENTAHO_HOME/pentaho-solutions/system/applicationContext-spring-security-hibernate.properties
jdbc.driver=org.postgresql.jdbcDriver
jdbc.url=jdbc:postgresql://localhost:5432/hibernate
jdbc.username=hibuser
jdbc.password=password
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
jdbc.properties 설정
$ vi $PENTAHO_HOME/pentaho-solutions/system/simple-jndi/jdbc.properties
SampleData/type=javax.sql.DataSource
SampleData/driver=org.postgresql.jdbcDriver
SampleData/url=jdbc:postgresql://localhost:5432/sampledata
SampleData/user=pentaho_user
SampleData/password=password
Hibernate/type=javax.sql.DataSource
Hibernate/driver=org.postgresql.jdbcDriver
Hibernate/url=jdbc:postgresql://localhost:5432/hibernate
Hibernate/user=hibuser
Hibernate/password=password
Quartz/type=javax.sql.DataSource
Quartz/driver=org.postgresql.jdbcDriver
Quartz/url=jdbc:postgresql://localhost:5432/quartz
Quartz/user=pentaho_user
Quartz/password=password
tomcat web.xml 설정
$ vi $PENTAHO_HOME/tomcat/webapps/pentaho/WEB-INF/web.xml
<context-param>
<param-name>solution-path</param-name>
<param-value>/home/bos/packages/pentaho-server/pentaho-solutions</param-value>
</context-param>
spoon 준비
spoon 을 다운받고 압축을 푼다음 실행하면 바로 진행을 할 수 있다.
repository 구성에서 spoon 의 역할은 위에서 준비한 postgresql 을 데이터베이스 repository 로 등록하고
사용하는 것이다. 여기서 등록을 하는 시점에 repository 에 필요한 각종 테이블을 생성하고 기본 record 값도 입력을 해준다.
한번 생성을 하거나 잘못설정 된경우 삭제를 한 후에 다시 수행하는 것이 좋다.
주의할 점은 database 를 동록하는 관정에서
Advanced → the preferred schema name. is used when no other schema is specified.
부분에 "public" 이라고 설정한다. 다른 시키마를 사용하는 방법을 찾아야 한다.
reference
- https://gist.github.com/dexalex84/334bdd189dd923a63e80c45300fb30be
- https://help.pentaho.com/Documentation/9.1/Setup/Use_MySQL_as_your_repository_database_(Archive_installation)
'ETL > Pentaho' 카테고리의 다른 글
Pentaho 구조 및 특징 (0) | 2021.10.01 |
---|---|
Pentaho pan (0) | 2021.10.01 |
Pentaho kitchen (0) | 2021.10.01 |
Pentaho carte server (0) | 2021.10.01 |