#hadoop #solr #hdfs #nutch #nutch2
#hadoop #solr #hdfs #nutch #nutch2
Вопрос:
Я использую Nutch 1.17 для сканирования более миллиона веб-сайтов. Для этого я должен выполнить следующие действия.
- Один раз запустите искатель как глубокий искатель, чтобы он извлек максимальные URL-адреса из заданных (1 миллион) доменов. В первый раз вы можете запускать его максимум 48 часов.
- После этого запустите поисковый робот с тем же 1 миллионом доменов через 5-6 часов и выберите только те URL-адреса, которые являются новыми для этих доменов.
- После завершения задания индексируйте URL-адреса в Solr
- Позже нет необходимости хранить необработанный HTML, следовательно, для сохранения хранилища (HDFS), удаления только необработанных данных и сохранения метаданных каждой страницы, чтобы в следующем задании мы не должны повторно извлекать страницу снова (до запланированного времени).
Нет никакой другой обработки или последующего анализа. Теперь у меня есть выбор использовать кластер Hadoop среднего размера (максимум 30 машин). Каждая машина имеет 16 ГБ оперативной памяти, 12 ядер и 2 ТБ хранилища. Машины Solr также имеют одинаковые пробелы. Теперь, чтобы поддержать вышесказанное, мне интересно следующее:
a. How to achieve above document crawl rate i.e., how many machines are enough ?
b. Should I need to add more machines or is there any better solution ?
c. Is it possible to remove raw data from Nutch and keep metadata only ?
d. Is there any best strategy to achieve the above objectives.
Ответ №1:
a. Как достичь более высокой скорости сканирования документов, т.Е. Сколько машин достаточно?
Предполагая, что выбрана вежливая задержка между последовательными выборками в один и тот же домен: предположим, что 10 страниц могут быть извлечены на домен и минуту, максимум. скорость сканирования составляет 600 миллионов страниц в час ( 10^6*10*60
). Кластера с 360 ядрами должно быть достаточно, чтобы приблизиться к этой скорости. Возможно ли полное сканирование одного миллиона доменов в течение 48 часов, зависит от размера каждого из доменов. Имейте в виду, что при упомянутой скорости сканирования 10 страниц на домен и минуту, получение 10*60*48 = 28800
страниц на домен возможно только в течение 48 часов.
c. Возможно ли удалить необработанные данные из Nutch и сохранить только метаданные?
Как только сегмент был проиндексирован, вы можете удалить его. Для определения того, является ли ссылка, найденная на одной из 1 миллиона домашних страниц, новой, достаточно CrawlDb.
- После завершения задания индексируйте URL-адреса в Solr
Возможно, индексировать сегменты сразу после каждого цикла.
б. Нужно ли мне добавлять больше машин или есть какое-либо лучшее решение? d. Существует ли какая-либо наилучшая стратегия для достижения вышеуказанных целей.
Многое зависит от того, имеют ли домены одинаковый размер или нет. В случае, если они показывают степенное распределение (что вполне вероятно), у вас есть несколько доменов с несколькими миллионами страниц (вряд ли они сканируются исчерпывающе) и длинный хвост доменов с несколькими страницами (максимум несколько сотен страниц). В этой ситуации вам нужно меньше ресурсов, но больше времени для достижения желаемого результата.
Комментарии:
1. Спасибо, сэр, как вы рассчитали количество ядер для этой цели? Вы сказали, что 360 ядер достаточно, но как их найти?
2. По моему опыту, используя средство выборки синтаксического анализа (fetcher.parse=true) и учитывая отсутствие других узких мест (диск, оперативная память, сеть или индекс Solr), можно извлекать и обрабатывать 200-250 тыс. страниц за ядро и час. Используя 360 ядер, вы получите 70-90 миллионов страниц в час. Звучит как разумная пропускная способность для 1 миллиона доменов. Я бы даже начал с меньшего кластера — вполне вероятно, что размеры доменов не сбалансированы, что приведет к снижению пропускной способности после первых циклов обхода.