StormCrawler를 라이브 크롤링에 사용하고 있습니다. ElasticSearch에 도메인을 삽입하고 크롤러가 제대로 크롤링 중이므로 각 도메인에 대해 개의 URls를 정의했습니다 (SimpleFetcherBolt의 Redis 사용).ElasticSearch를 사용하여 StormCrawler에 삽입 된 새 도메인/URL의 병렬 처리
시나리오 : 도메인을 삽입하면 StormCrawler가 크롤링을 시작합니다. 이제 ElasticSeeds에 새 도메인을 입력하면 StormCrawler가 즉시 가져 오지 않습니다.
이전 도메인의 페이지를 가져 오는 중 사용량이 많습니다. 한도가 높으면 (예 : 1000 개의 URL) 새로 삽입 된 도메인에서 크롤링을 시작하는 데 적어도 최소한 20 분이 걸립니다.
결과가 즉시 나타나기를 원합니다. 새 도메인에서 우선 순위를 설정할 수 있습니까? 또는 StormCrawler가 새 도메인에서 크롤링을 시작합니다. 새 도메인이 삽입 될 때마다? 각 도메인에 대한 다른 대기열 (DB)?
제안 사항에 감사드립니다.
를 참조 기본적으로 Agg.Spout을 사용합니다. 한계가 100이라고하면 SC는 각 도메인의 100 개의 URL을 가져옵니다. 나는 ElasticSearchSpout을 사용하고 SImpleFetcherBolt의 단일 인스턴스를 실행하고 있습니다 (SC는 기본적으로 Agg.Spout을 사용합니다). 로그를 확인한 결과 SC에서 새 도메인을 가져 오는 것처럼 보였습니다 (SimpleFetcherBolt). 이미 대기열 URL에있는 HTML 콘텐츠를 가져 오는 것을 완료했습니다. – superB
주셔서 감사합니다. 나는 FetcherBolt와 AggregateSpout을 사용하고 있습니다. 이것은 매우 빠르며 동시에 병렬로 실행됩니다. 빠른 질문 SamplerAggregationSpout과 AggregationSpout의 차이점은 무엇입니까?URL 필터에서 각 도메인의 크롤링을 제한하려면 어떻게해야합니까? – superB
SamplerAggregationSpout은 대규모 크롤링에 유용하며 집계 전에 결과 샘플을 가져옵니다. 더 빠르지 만 nextFetchDate를 늘려서 우선 순위를 지정하지 않습니다. > URL 필터에서 각 도메인의 크롤링을 어떻게 제한합니까? 주어진 도메인에 대한 URL 수를 ES에 쿼리하거나 이미 수행 한 방식으로 Redis를 사용하는 맞춤 URL 필터를 작성할 수 있습니다. –