KNIME

KNIME: Como otimizar a performance de seus workflows

otimizando workflows knime

A plataforma KNIME Analytics é hoje a principal solução open source em inovação orientada a dados. Reconhecida por 6 anos consecutivos pelo Gartner como a principal plataforma de Ciência de Dados e Aprendizado de Máquina, KNIME tem se mostrado poderoso em todo o ciclo dos dados.

Neste artigo você vai aprender a otimizar as configurações da instalação KNIME em sua máquina. Reunimos aqui uma série das melhores práticas compartilhadas por muitos usuários ao redor do mundo e pela própria equipe de desenvolvimento. 

Ao fim deste artigo, você terá menos dor de cabeça com fluxos travando e saberá, para cada tipo de  cenário, qual o melhor ambiente para executar seus workflows. 

Trabalhando com grandes volumes de dados 

O KNIME possui integração com diferentes ambientes, a fim de obter  melhor desempenho frente a grandes volumes de dados.  

Os recursos de apenas uma máquina muitas vezes não são suficientes para lidar com um grande volume de dados e por isso KNIME possibilita a integração com ambiente Big Data, como Hive e Hadoop, através dos Big data connectors e com Apache Spark através do KNIME extension for Apache Spark.

Ainda buscando os melhores recursos para a execução de seus workflows, foi lançada a plataforma KNIME Cloud analytics para Azure, onde você pode executar seus fluxos em uma VM de até 448 GB de RAM e 32 núcleos de processamento.

Outra opção poderosa para ambientes corporativos é o KNIME Server

Além da possibilidade de alocação de maiores recursos computacionais, o KNIME Server possibilita o agendamento de tarefas e workflows, (Scheduling).

O KNIME Server também possibilita o controle de acessos de cada usuário aos workflows, isso traz uma camada importante de governança ao ambiente.

Nós da Hupdata somos um dos principais representantes do KNIME ao redor mundo. Será um prazer lhe demonstrar e explicar mais sobre o ambiente Server. 

Agende um horário com a nossa equipe por aqui. 

Estamos à disposição para compreender suas necessidades e ajudar sua empresa a criar soluções baseadas em dados.  

Entretanto, se você não tem à disposição um ambiente de server, cluster ou cloud, não se preocupe. Vamos te mostrar uma série de configurações e dicas para ajudá-lo a executar seus workflows localmente. 

Quanto mais recursos de hardware sua máquina tiver melhor. Entretanto, é possível realizar análises e trabalhos com seus dados, de forma eficaz, após algumas configurações simples em uma máquina normal.

1 – Otimizando o seu knime.ini

O arquivo knime.ini é um dos arquivos de configuração do KNIME. Você poderá encontrar este arquivo dentro da pasta de instalação, junto ao knime.exe. 

Ao abrir o arquivo knime.ini, com um bloco de notas, você poderá configurar, entre outras coisas, a quantidade de memória alocada para uso na sua instalação do KNIME.

Dentro do knime.ini procure pela linha -Xmx<memória>. 

O -Xmx especifica a quantidade máxima de memória alocada para a JVM, lembrando que KNIME é feito em linguagem java. 

Por exemplo, se a sua máquina tiver 12 giga de memória RAM e talvez somente 2Gb alocados será bom aumentar a quantidade de memória para 6 ou 8 gigas.

Há várias formas de especificar o tamanho de espaço em memória. Você poderá escrever 4Gb de RAM nas seguintes formas:

-Xmx4096m  (em megabytes)

-Xmx4g     (em gigabytes)

O processamento em RAM é mais performático do que em disco; logo quanto mais RAM disponível mais rápido o processamento. Porém, há outra configuração padrão que você pode querer editar.

2 – Tamanho das tabelas em memória

Por padrão o KNIME processa pequenas tabelas (com até cem mil elementos) em RAM. Esta é a opção padrão na maioria dos nodes.  Procure a opção “memory police” dentro de cada node.

knime node memory policy

Tabelas com mais do que 100 mil elementos, (ex: 10 colunas x 10 mil linhas) são processadas na memória rígida, o que não é muito performático.

Ou seja, mesmo que você tenha alocado bastante RAM no seu knime.ini o KNIME irá processar tabelas com mais de 100 mil elementos em disco rígido. 

É possível alterar esta configuração padrão, forçando os processamentos maiores que 100 mil elementos em RAM. Mas, pode ser melhor não alterar esta opção se você limitou a RAM disponível ou tem pouco alocada.

Saiba que nem sempre é bom manter todos os dados em memória, assim limitando a quantidade de RAM necessária para o KNIME executar outras operações.

Para aumentar o tamanho das tabelas de elementos processados em RAM, insira a linha abaixo no seu knime.ini:

-Dorg.knime.container.cellsinmemory = 10000000

Se você não tiver tanta memória RAM disponível em sua máquina, não se preocupe, existem nodes como o cache e o garbage collector, entre outros, que você pode incluir dentro do seu workflow para gerir o uso de memória.

3 – KNIME Streaming

A plataforma KNIME foi desenvolvida para ser de acesso rápido, fácil e intuitivo. Graças a execução node a node, você pode rastrear cada nova modificação nos seus dados, bem como a lógica do processo.

Contudo, a praticidade da execução node a node requer um tempo de execução maior. Cada node é quase que independente ao realizar sua função e trazer como saída como uma tabela, modelo, gráfico etc.

Isso faz com que cada node precise armazenar em cache seus resultados intermediários, o que requer um espaço temporário adicional de memória.

O processamento node a node é mais intuitivo, porém nem sempre é a solução mais performática. Para obter um melhor tempo de execução dentro do seu workflow existe a possibilidade da execução em streaming.

Diferentemente da execuçsão node a node, a execução em streaming executa todos os nodes simultaneamente.

Na execução em streaming, os resultados de um node são instantaneamente compartilhados com os outros no mesmo stream, isso reduz substancialmente o uso de memória e tempo de processamento.

Para entender na prática como o KNIME streaming funciona, veja o vídeo abaixo

Conclusão

Este foi o primeiro de uma série de posts em nosso blog sobre como OTIMIZAR seus workflows KNIME. 

Neste primeiro artigo você viu como gerenciar e configurar o uso de memória em seu ambiente KNIME e workflows. Nos próximos artigos, você vai ver algumas boas práticas que vão deixar a execução de seus fluxos mais compactos e rápidos.

Deixe seu comentário com sugestões de outros tópicos ou dúvidas. 

Referências:

https://www.gartner.com/en/documents/3899464/magic-quadrant-for-data-science-and-machine-learning-pla

https://www.knime.com/blog/optimizing-knime-workflows-for-performance

2 comentários sobre “KNIME: Como otimizar a performance de seus workflows

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *