ПоискПочтаКартыМаркетНовостиСловариБлогиВидеоКартинки
Войти

Работа в Яндексе

Аналитик производительности поискового кластера

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

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

Требования:

  • хорошее знание Linux и FreeBSD, умение ориентироваться в Posix API;

  • хорошее знание сетевых протоколов;

  • хорошее понимание методик проектирования отказоустойчивых систем;

  • знание Perl или Python и готовность много писать на них;

  • хорошие аналитические способности и умение эффективно решать проблемы.

Желательно:

  • хорошее знание C или C++;

  • опыт разработки под Unix;

  • понимание сути OLAP-анализа;

  • опыт работы с базами данных.

Условия

    Работа в московском офисе Яндекса полный рабочий день.

    Подробнее об условиях работы в Яндексе

    Продемонстрируйте свои знания

     

    Выберите наилучшее решение для архитектуры поиска по вебу.

    Есть поисковый индекс рунета размером в несколько терабайт. На один сервер этот индекс не помещается, поэтому он разделён на несколько сотен серверов. На каждом таком сервере работает поисковая программа, занимающаяся поиском по своему кусочку индекса (в наших терминах — базовый поиск). Чтобы получить результаты поиска по всему индексу, нужно все эти результаты собрать в одном месте — этим занимается другая поисковая программа (в наших терминах — метапоиск). Таким образом, метапоиск должен задать несколько сотен запросов к базовым поискам, после чего собрать результаты и объединить их. Все это желательно сделать не больше чем за 200–400 мс.

    Как должна быть устроена схема взаимодействия между метапоиском и поиском?

    Хочется как минимум увидеть:

    • выбор базового протокола общения (TCP, UDP или чего-то еще), с аргументацией;

    • логический протокол взаимодействия (поверх TCP/UDP/чего-то ещё);

    • стадии взаимодействия между серверами;

    • что происходит при потере пакета в сети;

    • что происходит при недоступности одного из базовых поисков;

    • общий принцип механизма массовой рассылки запросов к базовым поискам.

    Можно в общих чертах, можно с примером кода. Целевая платформа — FreeBSD.


    Дайте развернутый ответ на вопросы:

    • Какое время ответа приемлемо для поиска Яндекса?

    • Почему именно такое?

    • В какое время должна укладываться каждая из стадий поиска, чтобы обеспечить необходимое время ответа?

    • Всегда ли это возможно, и от каких условий это зависит?


    Придумайте наилучшее решение для обработки логов.

    Есть терабайт логов, которые записаны на метапоисках. В логе зафиксировано время ответа каждого из сотен базовых поисков, к которым происходило обращение. Формат:

    	unixtime, запрос [, базовый поиск: время ответа]*
    

    Например:

    	1185307410, Яндекс, ws2-001:10ms, ws2-002:15ms, .... ws2-400:1000ms
    	1185309845, Рамблер, ws2-041:11ms, ws2-011:16ms, .... ws2-259:300ms
    

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

    Требуется: для каждого базового поиска получить время, в которое укладывается 95% его ответов, с разбиением по минутам. Нужно провести расчёт за минимальное время, максимально задействовав предоставленные для расчёта машины (вплоть до нескольких сотен).


    Есть веб-сервер, который для обработки пользовательского запроса использует sql-базу, расположенную на 1000 серверах. Причем на каждом из 1000 серверов требуется выполнить один и тот же запрос. Веб-сервер может не дожидаться ответов от всех серверов. Чаще всего выполняются запросы вида "select...". На каждом сервере в логе записывается информация о времени выполнения запроса с указанием идентификатора запроса. Есть возможность изменять информацию, которая записывается в лог. За сутки на каждом сервере может накапливаться более 1GB логов.

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

    Предложите способ улучшить схему обработки запросов.


    Расскажите нам о себе

     

    Пожалуйста, укажите код города

     
    ОтправитьОчистить

     

     

    Нас уже больше 3500 человек

    Но интересных задач гораздо больше, чем нас

    Коротко о Яндексе

    Все, что вы хотели бы знать о компании перед тем, как идти к нам работать

    Стажировка

    В результате вы сможете узнать Яндекс изнутри и, если вам понравится, устроиться на постоянную работу

    Памятка

    Кто такой менеджер проектов Яндекса и как им стать

     

    Если вы опытный специалист и хотели бы работать в Яндексе, но не нашли для себя подходящей вакансии, не отчаивайтесь, а напишите нам. Вдруг мы договоримся?

    ruRu