Как ускорить ползание в Nutch - PullRequest
3 голосов
/ 02 февраля 2011

Я пытаюсь разработать приложение, в котором я дам ограниченный набор URL-адресов в файл URL-адресов в Nutch. Я могу сканировать эти URL и получать их содержимое, читая данные из сегментов.

Я просканировал, указав глубину 1, так как меня никоим образом не волнуют ссылки или ссылки на веб-странице. Мне нужно только содержимое этих веб-страниц в файле URL.

Но выполнение этого сканирования требует времени. Итак, предложите мне способ уменьшить время сканирования и увеличить скорость сканирования. Я также не нуждаюсь в индексации, потому что меня не интересует поисковая часть.

У кого-нибудь есть предложения по ускорению сканирования?

Ответы [ 6 ]

7 голосов
/ 14 января 2013

Главное для получения скорости это настройка nutch-site.xml

<property>
<name>fetcher.threads.per.queue</name>
   <value>50</value>
   <description></description>
</property>
6 голосов
/ 04 февраля 2011

Вы можете масштабировать потоки в nutch-site.xml. Увеличение fetcher.threads.per.host и fetcher.threads.fetch увеличит скорость сканирования. Я заметил радикальные улучшения. Будьте осторожны при увеличении их, хотя. Если у вас нет оборудования или подключения для поддержки этого увеличенного трафика, количество ошибок при сканировании может значительно возрасти.

4 голосов
/ 16 февраля 2016

Для меня это свойство мне очень помогло, потому что медленный домен может замедлить всю фазу выборки:

 <property>
  <name>generate.max.count</name>
  <value>50</value>
  <description>The maximum number of urls in a single
  fetchlist.  -1 if unlimited. The urls are counted according
  to the value of the parameter generator.count.mode.
  </description>
 </property>

Например, если вы уважаете robots.txt (поведение по умолчанию) идомен слишком длинный для сканирования, задержка будет: fetcher.max.crawl.delay.И большая часть этого домена в очереди будет замедлять всю фазу выборки, поэтому лучше ограничить generate.max.count.

Вы можете добавить это свойство для ограничения времени фазы выборки втаким же образом:

<property>
  <name>fetcher.throughput.threshold.pages</name>
  <value>1</value>
  <description>The threshold of minimum pages per second. If the fetcher downloads less
  pages per second than the configured threshold, the fetcher stops, preventing slow queue's
  from stalling the throughput. This threshold must be an integer. This can be useful when
  fetcher.timelimit.mins is hard to determine. The default value of -1 disables this check.
  </description>
</property>

Но, пожалуйста, не трогайте свойство fetcher.threads.per.queue, вы попадете в черный список ... Это не очень хорошее решение для улучшения скорости сканирования..

1 голос
/ 22 сентября 2015

Здравствуйте. Я также новичок в этом сканировании, но я использовал некоторые методы. Я получил некоторые хорошие результаты. Может быть, вы изменили свой nutch-site.xml с этими свойствами

<property>
  <name>fetcher.server.delay</name>
  <value>0.5</value>
 <description>The number of seconds the fetcher will delay between 
   successive requests to the same server. Note that this might get
   overriden by a Crawl-Delay from a robots.txt and is used ONLY if 
   fetcher.threads.per.queue is set to 1.
 </description>

</property>
<property>
  <name>fetcher.threads.fetch</name>
  <value>400</value>
  <description>The number of FetcherThreads the fetcher should use.
    This is also determines the maximum number of requests that are
    made at once (each FetcherThread handles one connection).</description>
</property>


<property>
  <name>fetcher.threads.per.host</name>
  <value>25</value>
  <description>This number is the maximum number of threads that
    should be allowed to access a host at one time.</description>
</property>

больше вариантов Спасибо

0 голосов
/ 15 февраля 2016

У меня похожие проблемы и я могу улучшить скорость с помощью https://wiki.apache.org/nutch/OptimizingCrawls

Он содержит полезную информацию о том, что может замедлить ваше сканирование и что вы можете сделать, чтобы улучшить каждую из этих проблем.

К сожалению, в моем случае у меня совершенно несбалансированные очереди, и я не могу запросить слишком быстрый запрос к большему, в противном случае я блокируюсь, поэтому мне, вероятно, нужно перейти к кластерному решению или TOR, прежде чем я ускорю потоки.

0 голосов
/ 11 февраля 2011

Если вам не нужно переходить по ссылкам, я не вижу причин использовать Nutch.Вы можете просто взять свой список URL-адресов и получить их с помощью клиентской библиотеки http или простого скрипта, используя curl.

...