Frontera (сканирование сети) - Frontera (web crawling)

Frontera
Оригинальный автор (ы)Александр Сибиряков, Хавьер Касас
Разработчики)Scrapinghub Ltd., сообщество GitHub
изначальный выпуск1 ноября 2014 г.; 6 лет назад (2014-11-01)
Стабильный выпуск
v0.8.1 / 6 апреля 2019 г.; 20 месяцев назад (2019-04-06)
Написано вPython
Операционная системаOS X, Linux
Типсканирование сети
ЛицензияЛицензия BSD с тремя пунктами
Интернет сайтgithub.com/ scrapinghub/ frontera

Frontera является Открытый исходный код, сканирование сети рамки реализации ползать граница компонент и предоставляет примитивы масштабируемости для приложений веб-краулеров.

Обзор

Содержание и структура Всемирная паутина быстро меняется. Frontera предназначена для быстрой адаптации к этим изменениям. Большинство крупномасштабных поисковых роботов работают в пакетном режиме с последовательными фазами внедрения, выборки, анализа, дедупликации и планирования. Это приводит к задержке обновления сканирования при изменении Интернета. Дизайн в основном мотивирован относительно низкой производительностью произвольного доступа жесткие диски по сравнению с последовательным доступом. Frontera вместо этого полагается на современные хранилище ключевых значений системы, использующие эффективные структуры данных и мощное оборудование для одновременного сканирования, анализа и планирования индексации новых ссылок. Это проект с открытым исходным кодом, разработанный для различных сценариев использования, с высокой гибкостью и настраиваемостью.

Единственная цель Frontera - это крупномасштабное сканирование веб-сайтов. Его гибкость позволяет выполнять обходы умеренного размера на одной машине с несколькими ядрами, используя режимы работы одного процесса и распределенных пауков.

Функции

Frontera написана в основном на Python. Транспорт и форматы данных хорошо абстрагированы, а готовые реализации включают поддержку Пакет сообщений, JSON, Кафка и ZeroMQ.

  • Операция в сети: небольшие пакеты запросов, парсинг выполняется сразу после получения.
  • Подключаемая внутренняя архитектура: логика низкоуровневого хранилища отделена от политики сканирования.
  • Три режима запуска: одиночный процесс, распределенные пауки, распределенные бэкэнд и пауки.
  • Прозрачный поток данных, позволяющий легко интегрировать пользовательские компоненты.
  • Абстракция шины сообщений, позволяющая реализовать собственный транспорт (ZeroMQ и Kafka доступны из коробки).
  • SQLAlchemy и HBase бэкэнды хранения.
  • Пересмотр логики (только с бэкэндом СУБД).
  • Дополнительное использование Scrapy для извлечения и анализа.
  • Лицензия BSD с тремя пунктами, позволяющий использовать в любом коммерческом продукте.
  • Поддержка Python 3.

Сравнение с другими поисковыми роботами

Хотя Frontera сам по себе не является поисковым роботом, для него требуется архитектура потокового сканирования, а не пакетный подход.[нужна цитата ]

StormCrawler еще один ориентированный на поток поисковый робот, созданный на основе Apache Storm при использовании некоторых компонентов из экосистемы Apache Nutch. Кластер Scrapy был разработан ISTResearch с учетом точного мониторинга и управления очередью. Эти системы обеспечивают механизмы выборки и / или постановки в очередь, но не предоставляют базу данных ссылок или обработку контента.

Боевые испытания

В Scrapinghub Ltd. есть сканер, обрабатывающий 1600 запросов в секунду на пике, построенный с использованием в основном Frontera, использующего Kafka в качестве шины сообщений и HBase в качестве хранилища для состояний ссылок и базы данных ссылок. Такой краулер работает циклично, каждый цикл занимает 1,5 месяца и в результате загружается 1,7 млрд страниц.[1]

Сканирование испанского Интернета привело к появлению 46,5 млн страниц за 1,5 месяца в кластере AWS с двумя компьютерами-пауками.[2]

История

Первая версия Frontera работала в едином процессе как часть настраиваемого планировщика для Scrapy, используя на диске SQLite база данных для хранения состояний ссылок и очереди. Он мог ползать несколько дней. Достигнув некоторого заметного количества ссылок, он стал тратить все больше и больше времени на запросы SELECT, что сделало сканирование неэффективным. На этот раз Frontera разрабатывается под Мемекс из DARPA программа и включена в ее каталог открытых проектов.[3]

В 2015 году последующие версии Frontera использовали HBase для хранения базы данных ссылок и очереди. Приложение было распределено на две части: бэкэнд и сборщик. Backend отвечал за связь с HBase с помощью Кафка а сборщик только читал тему Kafka с URL-адресами для сканирования и выдавал результаты сканирования для другой темы, используемой серверной частью, таким образом создавая замкнутый цикл. В это время был реализован прототип очереди первого приоритета, пригодный для сканирования в веб-масштабе. Очередь создавала пакеты с ограничениями на количество хостов и запросов на хост.

Следующей важной вехой в развитии Frontera стало внедрение стратегии сканирования и работника стратегии наряду с абстракцией шины сообщений. Стало возможным программировать настраиваемую стратегию сканирования без обработки низкоуровневого внутреннего кода, работающего с очередью. Простой способ сказать, какие ссылки должны быть запланированы, когда и с каким приоритетом, сделал Frontera действительно пограничной структурой для сканирования. Kafka был довольно тяжелым требованием для небольших поисковых роботов, а абстракция шины сообщений позволяла интегрировать практически любые система обмена сообщениями с Frontera.

Смотрите также

Рекомендации

  1. ^ Сибиряков, Александр (29 марта 2017 г.). "Frontera: архитектура фреймворка для обхода веба и текущие проблемы". Хабрахабр.
  2. ^ Сибиряков, Александр (15 октября 2015 г.). "frontera-open-source-large-scale-web-crawling-framework". Speakerdeck.
  3. ^ «Открытый каталог, Memex (поиск по домену)».