본문 바로가기

ETL/Pentaho

Pentaho carte server

정의

pentaho 는 모든 작업은 기본적으로 spoon.sh 이라는 client tool 에서 시작된다. 사용자가 execution 서버를 추가하는 경우

해당 작업을 넘길 수 있다.

이러한 서버를 carte 서버라고 한다. 서버의 구분은 다음과 같이 된다.

  • master server
  • slave server
  • carte cluster

작업이 많지 않다면 master 만 사용하여 구축을 진행 한다.

spoon 에서 구분할때는 모든 서버를 '슬레이브 서버' 로 통칭한다.

설치

jdk 8

pdi 9.1 기준 jdk 11 에서 정상동작하지 않음

설정

모든 메뉴얼에는 pentsho server repository 에 대한 기준으로 설명되어 있어 현재 설정인 database repository 와 조금 다르게 느껴지고 

확인해할 사항이 많이 있다.

slave-config.xml

모든 설정은 아래의 <slave_config> 태그 안에 정의 해야 한다. 

<slave_config>
    ... ...
</slave_config>

master 설정

<slaveserver>
    <name>Master</name>
    <hostname>10.1.5.19</hostname>
    <port>8080</port>
    <username>admin</username>
    <password>password</password>
    <master>Y</master>
</slaveserver>

slave 설정

slave 설정시에는 master의 설정을 같이 기술해 준다.

<slaveserver>
  <name>Slave01</name>
  <hostname>localhost</hostname>
  <port>9081</port>
</slaveserver>
 
 
<masters>
  <slaveserver>
    <name>master1</name>
    <hostname>localhost</hostname>
    <port>9080</port>
    <!--<webAppName>pentaho-di</webAppName>-->
    <username>admin</username>
    <password>password</password>
    <master>Y</master>
  </slaveserver>
</masters>

 

repository 설정

<!-- 아래 내용을 $HOME/.kettle/repository.xml 에 기술해도 된다.  -->
<repositories>
  <connection>
    <name>postgres19</name>
    <server>10.1.5.19</server>
    <type>POSTGRESQL</type>
    <access>Native</access>
    <database>postgres</database>
    <port>5432</port>
    <username>bos</username>
    <password>Encrypted 2be98afc86aa7f2e4cb79ce10be90a0c9</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
      <attribute><code>PORT_NUMBER</code><attribute>5432</attribute></attribute>
      <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
      <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
      <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
    </attributes>
  </connection>
  <repository>
    <id>KettleDatabaseRepository</id>
    <name>postgres</name>
    <description>Database repository</description>
    <is_default>true</is_default>
    <connection>postgres19</connection>
  </repository>
</repositories>

options

<max_log_lines>10000</max_log_lines>
<max_log_timeout_minutes>1440</max_log_timeout_minutes>
<object_timeout_minutes>1440</object_timeout_minutes>

master 전체 설정

<slave_config>
 
<repositories>
  <connection>
    <name>postgres19</name>
    <server>10.1.5.19</server>
    <type>POSTGRESQL</type>
    <access>Native</access>
    <database>postgres</database>
    <port>5432</port>
    <username>bos</username>
    <password>Encrypted 2be98afc86aa7f2e4cb79ce10be90a0c9</password>
    <servername/>
    <data_tablespace/>
    <index_tablespace/>
    <attributes>
      <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
      <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
      <attribute><code>PORT_NUMBER</code><attribute>5432</attribute></attribute>
      <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>Y</attribute></attribute>
      <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
      <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
      <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
    </attributes>
  </connection>
  <repository>   
    <id>KettleDatabaseRepository</id>
    <name>postgres</name>
    <description>Database repository</description>
    <is_default>true</is_default>
    <connection>postgres19</connection>
  </repository>
</repositories>
  
    <slaveserver>
        <name>Master</name>
        <hostname>10.1.5.19</hostname>
        <port>8080</port>
        <username>admin</username>
        <password>password</password>
        <master>Y</master>
    </slaveserver>
  <max_log_lines>10000</max_log_lines>
  <max_log_timeout_minutes>1440</max_log_timeout_minutes>
  <object_timeout_minutes>1440</object_timeout_minutes>
</slave_config>

 

실행하기

# default
# $HOME/.kettle/repository.xml 에 설정을 잘하더라도
# 사용자 및 암호 설정등이 있어서 어떤 경우에 쓰이는지 잘모르겠음
carte.sh 192.168.0.1 8080
# config 파일 사용
carte.sh master-config.xml

webgtk

# 실행을 하면 webkitgtk-1.0 warning 이 나오지만
# 설치할 수 없으며, 없어도 문제가 없다고 판단됨
# spoon.sh 에 export SKIP_WEBKITGTK_CHECK=1 설정시 skip 가능
#######################################################################
WARNING:  no libwebkitgtk-1.0 detected, some features will be unavailable
    Consider installing the package with apt-get or yum.
    e.g. 'sudo apt-get install libwebkitgtk-1.0-0'
#######################################################################

 

reference

todo

error 

실행시 carte 서버에서 다음과 같이 postgres repository를 찾지 못하는 오류가 발생한다. postgres 는 database repository 의 이름이다.

그 이후 repository에서 데이터를 가져와 실행을 했고 spoon 에서도 그렇게 반응을 보인다.

2020/11/23 05:25:05 - Carte - Installing timer to purge stale objects after 1440 minutes.
2020/11/23 05:25:05 - Carte - Created listener for webserver @ address : 10.1.5.19:8080
2020/11/23 05:25:11 - I couldn't find the repository with name 'postgres'
2020/11/23 05:25:11 - Transformation 1 - Dispatching started for transformation [Transformation 1]

날짜

시작 시간이 client, server 도 아닌 ... 제3의 시간?

server 의 timezone 을 변경해서 해결

이전에는 왜 server 시간과도 달랐는지는 잘 모르겠음

'ETL > Pentaho' 카테고리의 다른 글

Pentaho 구조 및 특징  (0) 2021.10.01
Pentaho server  (0) 2021.10.01
Pentaho pan  (0) 2021.10.01
Pentaho kitchen  (0) 2021.10.01