Closed rafaelglater closed 3 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.
Obrigada, @rodrygosantos ! Vou dar uma estudada nisso e conversar com o @rennancordeiro .
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.
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
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).
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.