MPMG-DCC-UFMG / C01

Coleta de Dados Públicos
GNU General Public License v3.0
18 stars 9 forks source link

Seleção: Desenvolver mecanismos controladores para o escalonamento de múltiplas coletas por fonte #4

Closed rafaelglater closed 3 years ago

rafaelglater commented 4 years ago

Um mesmo formulário pode conter múltiplos campos com diferentes valores, cuja combinação retorna diferentes informações. Devem-se desenvolver mecanismos que escalonem a combinação de valores de campos para a coleta de uma mesma fonte.

rodrygosantos commented 4 years ago

@LorenaMendes, uma possível alternativa para esse issue é utilizarmos Spark para execução distribuída de múltiplos coletores. Parece que há um projeto nessa linha: https://github.com/USCDataScience/sparkler. @rennancordeiro tem experiência recente com o Spark, pode opinar tb.

LorenaMendes commented 4 years ago

Obrigada, @rodrygosantos ! Vou dar uma estudada nisso e conversar com o @rennancordeiro .

LorenaMendes commented 4 years ago

SPARKLER

Instalei o Sparkler na minha máquina, rodei alguns jobs de teste, consegui visualizar com o Banana Dashboard e fiz uma documentação de instalação.

Descobertas:

Vantagens do Sparkler: velocidade de crawling, visualização com o Banana Dashboard; Desvantagens do Sparkler: Código em Java, dificuldade de integração com python, divisão de jobs no cluster não é feita diretamente nele.

LorenaMendes commented 4 years ago

SCRAPYD & SCRAPYDWEB

Instalei nas máquinas do Latin, consegui integrar o cluster e rodar spiders de forma distribuída. O problema é que parece que essa solução não nos atende, pois os crawlers são rodados em paralelo e coletam as mesmas páginas nas diferentes máquinas do cluster.

Vantagens: interface intuitiva e funcional (scapydweb), facilidade de configuração do cluster; Desvantagens: a "distribuição" que ele faz não reduz o tempo de execução

LorenaMendes commented 4 years ago

SCRAPY CLUSTER

Arquitetura baseada no Apache Kafka e no Redis. A entrada é um tópico do Kafka e a saída é outro tópico do Kafka. A ideia é desenvolver uma aplicação para consumir o tópico de saída e enviar os resultados para os conversores CSV.

Vantagens: projeto em python, permite distribuição e redução do tempo de crawling, RESTful, não gasta muita memória (Kafka apaga os dados periodicamente).