Este artigo documenta o processo de configuração para executar transformações do Pentaho em um aparelho Raspberry Pi 3 (nossa estação pi) com a imagem do Raspbian Stretch Lite (sem ambiente gráfico, com foco no kitchen).

A estação pi utilizada foi a 3 Model B com 1Gb de RAM.

Iniciamos já com a imagem instalada no cartão e o aparelho ligado em rede local configurado para acessar a Internet (um servidor DHCP na sua rede local pode ajudar muita nessa hora).

Essa imagem possui apenas o essencial do sistema operacional. Dessa forma vamos instalar uma série de dependências antes de iniciar a configuração do Pentaho para rodar na arquitetura ARM7. Lembrando que o suporte à essa plataforma não é oficial e nem suportado por mim ou pelos detentores dos direitos do Pentaho.

Aconselho alterar a senha padrão do usuário pi (raspberry) para algo que lhe seja familiar e seguro.

Vamos aos comandos.

Atualização do sistema:

sudo apt update
sudo apt upgrade
reboot

Ferramentas que utilizo durante as configurações:

sudo apt install nmap mc screen p7zip-full zip

Ativação do servidor ssh para acesso remoto à estação pi:

sudo systemctl start ssh
sudo systemctl enable ssh.service

Instalação do JAVA:

sudo apt install oracle-java8-jdk

Download do Pentaho 8.2 na estação pi (este link pode expirar no futuro):

wget -c https://razaoinfo.dl.sourceforge.net/project/pentaho/Pentaho%208.2/client-tools/pdi-ce-8.2.0.0-342.zip

Extração do pacote (o nome do arquivo pode mudar no futuro):

unzip pdi-ce-8.2.0.0-342.zip

Instalação das dependências:

sudo apt install libwebkitgtk-1.0
sudo apt install libswt-gtk-4-java
sudo apt install libswt-gtk-3-java
sudo apt install libswt-cairo-gtk-3-jni
mkdir -p "/home/pi/.swt/lib/linux/arm/"
ln -s /usr/lib/jni/libswt* /home/pi/.swt/lib/linux/arm/
cp /usr/share/java/swt-gtk-3.8.jar /home/pi/data-integration/libswt/linux/armv7l

Modificação do arquivo spoon.sh para a plataforma ARM7:

adicionar esse código dentro de “Linux)”, após “case $ARCH in”:

armv7l)
           LIBPATH=$CURRENTDIR/../libswt/linux/armv7l/
           ;;

trocar os parâmetros dessa linha:

PENTAHO_DI_JAVA_OPTIONS="-Xms256m -Xmx512m -XX:MaxHeapSize=512m"

Com isso é possível executar jobs no Raspberry Pi, mesmo levando em consideração as limitações da plataforma.

Boa sorte!

Ao restaurar um banco de dados em um servidor diferente do original é comum não ter o mesmo usuário registrado nesse novo servidor ou mesmo fazer a escolha de outro para uso em ambiente de produção.

O PostgreSQL vai proibir o acesso depois de uma restauração nesses casos por parte do aplicativo que usa um novo usuário.

Para atribuir esses privilégios a um usuário no banco de dados, abra o aplicativo psql como usuário postgres:

su postgres
psql nome_do_bd

Dentro do psql execute os comandos (atenção se seu schema não for o public):

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO nome_do_usuario;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO nome_do_usuario;

O BIRT é um aplicativo para criação de relatórios na plataforma Eclipse que pode ser entregue na web através do Tomcat que faz a ponte entre o Java e o Web Server (Apache2, no caso).

Um ambiente java instalado e rodando no servidor é requerido para as próximas tarefas.

  1. instale o tomcat: apt install tomcat8 tomcat8-admin tomcat8-user tomcat8-examples tomcat8-common
  2. o Tomcat roda por padrão na porta 8080 do web server (verifique seu firewall)
  3. baixe o birt runtime em http://download.eclipse.org/birt/downloads/
  4. pare o serviço do Tomcat (service tomcat8 stop)
  5. descompacte o pacote e copie o arquivo birt.war para a pasta /var/lib/tomcat8/webapps
  6. copie o conteúdo da pasta WebViewerExample para a pasta /var/lib/tomcat8/webapps/birt
  7. inicie o tomcat8 (service tomcat8 start)

Particularmente eu acho as notificações de atualizações dos sistemas operacionais extremamente dispersivas. Não que elas não devem existir, mas, prefiro que a execução das mesmas seja feita em um momento neutro do meu trabalho.

No Gnome, eu utilizo os seguinte comandos para desligar a busca automática:

systemctl stop packagekit

systemctl disable packagekit

No momento adequado, utilizo o comando abaixo para instalar as atualizações:

dnf update

Existem algumas opções de editor de texto em modo texto no Debian/Ubuntu e, dependendo do perfil do usuário, eles podem aparecer em momentos diferentes forçando o uso de comandos diferentes para o mesmo resultado (salvar arquivo é diferente no nano, vim e mcedit).

O comando abaixo permite reconfigurar de forma global o editor de texto preferido:

sudo update-alternatives –config editor

Se você usa o mc (Midnight Commander), altere a opção use_internal_edit para 1 no arquivo .config/mc/ini (não use o mc ou o mcedit para fazer isso, ele reseta as opções na saída).

Tive melhores resultados trabalhando com projetos que gravam dados em banco de dados Microsoft Access como saída de fluxo no PDI seguindo essas orientações:

  • não utilizar ODBC, procurar usar o componente nativo de saída do Pentaho e distribuir o resultado no fluxo;
  • deixar o componente criar a tabela no banco de dados (pelo menos na primeira vez que for executado) – isso evita que o step fique em Halting sem gravar dados;
  • cuidado ao deixar o banco de dados aberto em outro aplicativo – isso cria um lock que pode impedir o fluxo de funcionar;
  • prefira o formato .mdb do que o atual .accdb.

Boa sorte!

Preparando o ambiente

O Pentaho PDI usa o ambiente Java para ser executado. Nesse momento o recomendável é ter a versão 8 do Java instalado.

Abra o terminal e digite o seguinte comando para saber se o Java está instalado e qual sua versão:

java -version

Caso ainda não tenha o Java instalado, execute os comandos abaixo para adicionar o repositório e instalar os aplicativos:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

Agora vamos validar a varável de ambiente JAVA_HOME. Digite o seguinte comando:

env | grep JAVA_HOME

Se não obtiver nenhum resultado, essa variável deverá ser definida no arquivo ~/.bashrc adicionado a seguinte linha:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

Salve e execute o comando abaixo para recarregar o valor das varáveis no ambiente sem necessitar dar reboot ou reiniciar a sessão do usuário:

source .bashrc

Instalando o PDI (Kettle)

O aplicativo possui todos os arquivos necessários para a execução e deve ser baixado do site oficial nesse link:

http://community.pentaho.com/projects/data-integration/

O pacote pode ser descompactado dentro que qualquer pasta. Se for do usuário, sugiro criar uma pasta Aplicativos e descompactar dentro dela. Se for do sistema, descompacte dentro da /opt.

Executando o aplicativo

É importante verificar se possui o pacote abaixo instalado antes de executar o aplicativo pela primeira vez:

sudo apt-get install libwebkitgtk-1.0-0

Dentro da pasta data-integration que foi descompactada, altere a permissão do arquivo spoon.sh para execução:

chmod +x spoon.sh

Depois disso é só executar esse arquivo que o PDI deverá abrir.

 

Uma forma de bloquear o envio de emails para servidores provedores de SPAM na Internet é utilizar os parâmetros abaixo no Postfix.

No Webmin, essa configuração fica em Servers -> Postfix Mail Server -> SMTP Server Options -> Restrictions on recipient addresses.

permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, reject_rbl_client dnsbl.sorbs.net, reject_rbl_client zen.spamhaus.org