Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Ontico
Что нужно хранить для того, чтобы была возможность ответить на этот вопрос?
Для точного ответа нужно через равные интервалы времени сохранять множество посетителей сайта (пусть это для простоты будут IP-адреса), которых мы за прошедший интервал увидели. Понятное дело, что такой объём информации хранить нереально, а даже, если получится, придётся объединять большое количество множеств и считать элементы в том множестве, которое получилось в итоге. Это очень долго. Не спасает ситуацию даже переход от точных алгоритмов к приблизительным: гарантировать точность либо не получится, либо придётся использовать объём памяти и вычислительные ресурсы, сопоставимые с точным алгоритмом.
В 80-х годах появились первые вероятностные алгоритмы для приблизительной оценки количества элементов в множестве. При большом количестве уникальных элементов эти алгоритмы дают приблизительную оценку, которая отличается от истинного значения в (1±e), e<1>0.5. То есть они могут вернуть оценку, которая сильно отличается от истинного значения с некоторой вероятностью (1-p). Чем больше требуется точность, и чем меньше нужна вероятность ошибки, тем больше ресурсов требуют алгоритмы. Сохраняя внутреннее состояние одного из таких алгоритмов через равные промежутки времени в базе данных, мы можем оценить приблизительное количество уникальных посетителей не только за произвольный интервал времени, но и за произвольное объединение любых интервалов времени, например, мы можем посчитать общее количество уникальных IP, которых мы наблюдали в промежутке времени с 17:00 до 18:00 в течение последней недели.
В 2000-ные в научном сообществе велась активная работа по достижению теоретически оптимальных характеристик (т.е. потребление памяти, сложность добавления нового элемента, сложность запроса) вероятностных приблизительных алгоритмов для оценки кардинальности (количества элементов в множестве), разрабатывался необходимый инструментарий.
Первый такой алгоритм был предложен в 2010 году. О нём-то мы и поговорим.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Ontico
Что нужно хранить для того, чтобы была возможность ответить на этот вопрос?
Для точного ответа нужно через равные интервалы времени сохранять множество посетителей сайта (пусть это для простоты будут IP-адреса), которых мы за прошедший интервал увидели. Понятное дело, что такой объём информации хранить нереально, а даже, если получится, придётся объединять большое количество множеств и считать элементы в том множестве, которое получилось в итоге. Это очень долго. Не спасает ситуацию даже переход от точных алгоритмов к приблизительным: гарантировать точность либо не получится, либо придётся использовать объём памяти и вычислительные ресурсы, сопоставимые с точным алгоритмом.
В 80-х годах появились первые вероятностные алгоритмы для приблизительной оценки количества элементов в множестве. При большом количестве уникальных элементов эти алгоритмы дают приблизительную оценку, которая отличается от истинного значения в (1±e), e<1>0.5. То есть они могут вернуть оценку, которая сильно отличается от истинного значения с некоторой вероятностью (1-p). Чем больше требуется точность, и чем меньше нужна вероятность ошибки, тем больше ресурсов требуют алгоритмы. Сохраняя внутреннее состояние одного из таких алгоритмов через равные промежутки времени в базе данных, мы можем оценить приблизительное количество уникальных посетителей не только за произвольный интервал времени, но и за произвольное объединение любых интервалов времени, например, мы можем посчитать общее количество уникальных IP, которых мы наблюдали в промежутке времени с 17:00 до 18:00 в течение последней недели.
В 2000-ные в научном сообществе велась активная работа по достижению теоретически оптимальных характеристик (т.е. потребление памяти, сложность добавления нового элемента, сложность запроса) вероятностных приблизительных алгоритмов для оценки кардинальности (количества элементов в множестве), разрабатывался необходимый инструментарий.
Первый такой алгоритм был предложен в 2010 году. О нём-то мы и поговорим.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Ядерный век прошел, и становится все понятнее, что в фокусе науки 21-го века будут живые системы, медицина, и человек во всех его проявлениях. Здесь осуществляются самые масштабные финансовые вливания, и на эту отрасль человечество возлагает самые большие надежды. Все чаще слышатся предметные обсуждения тем, казавшихся еще недавно научной фантастикой: сможет ли человечество победить старение, рак, и другие смертельные заболевания? Сможет ли менять свой геном по собственному желанию? Будем ли мы хозяевами своим телам в той же мере, как мы хозяйничаем на Земле?
Многие десятилетия биология и медицина развивались как описательные науки. Однако по мере созревания и накопления информации, любая наука рано или поздно переходит на более точный язык - язык математики. Проект "Геном человека" обеспечил технологический прорыв, который будет питать науку о живом еще много лет - но который также поставил много новых глобальных вопросов перед современными учеными.
Гостевая лекция Института биоинформатики. Подробнее: http://bioinformaticsinstitute.ru/lectures/1218
Несмотря на несерьезное название, на лекции разговор пойдет о важной проблеме в работе биоинформатика, почти любая реальная задача которого связана с обработкой и анализом больших данных. И решить задачу нужно не только правильно, но и эффективно. Процесс решения можно условно разделить на две части: «придумать», как решать, и «обучить» этому компьютер. И на лекции речь пойдет именно об эффективном «обучении».
Наивно реализованные алгоритмы работают неприемлемо долго, когда дело доходит до гигабайтов реальных данных. От биоинформатика уже требуются не просто базовые навыки программирования, но и знание технических нюансов. И даже у профессионального программиста уйдет немало времени, например, чтобы выгодно использовать возможности Hadoop при работе с Big Data. Так можно ли современному ученому обойтись без тщательного изучения кучи языков, библиотек и фреймворков и сосредоточиться именно на решении?
Обратная разработка бинарных форматов с помощью Kaitai StructPositive Hack Days
Ведущий: Михаил Якшин
В докладе будут рассмотрены современные подходы к обратной разработке бинарных файлов: с чего начинают, что хотят получить на выходе, какими инструментами традиционно пользуются. Будет продемонстрирован новый проект— Kaitai Struct, представляющий собой инструментарий для декларативного описания бинарных структур данных с выводом результата в виде готовых библиотек на языках C++, Java, JavaScript, Python и Ruby. Несколько практических примеров использования обратной разработки помогут участникам лучше ознакомиться с проблематикой.
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
Demonizing PHP application to gain higher performance. Splitting an application into infrastructure (go) and business logic (PHP) layers to gain higher flexibility.
- Краткая вводная про Docker (namespaces, cgroups и как Docker все это использует)
- Как заходить в Docker из вашего софта?
- Примеры: pam_docker и php_fpm_docker
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
Презентация к вебинару об устройстве фреймворка symfony 2.
Видеозапись вебинара находится в моём блоге по адресу http://frontend-dev.ru/2012/12/12/symfony2-основы
Обработка голоса кодеком на Си под Андроид. Сделано / Константин Цховребов (M...Ontico
Opus, Ogg, NDK и другие подводные камни.
1) Зачем иногда необходимо использовать нативный код в Android разработке;
2) когда не нужно этого делать;
3) что для этого необходимо настроить в проекте;
4) кодек для сжатия аудио Opus (чем хорош, кто использует);
5) контейнер Ogg (преимущества перед другими);
6) практический пример записи голоса, сжатия кодеком opus и упаковка в Ogg контейнер.
http://bioinformaticsinstitute.ru/guests
В пятницу 10 октября в 19.00 Мария Шутова (ИоГЕН РАН) выступала в Институте биоинформатики с открытой лекцией, посвященной изучению рака.
Рак -- одна из наиболее распространенных причин смерти по всему миру. В лекции рассматривается, как знания об эволюции, работе генома, репрограммировании, а также использование биоинформатических методов помогли лучше понять, как развивается раковая опухоль и предложить новые методы лечения разнообразных типов рака. Рассмотрены мышиные модели развития рака и интересные результаты, которые были получены с их помощью.
http://bioinformaticsinstitute.ru/lectures
Гостевая лекция Института биоинформатики, 9 октября 2014. Лектор -- Мария Шутова (ИоГЕН РАН).
За последние десять лет плюрипонтентные клетки стали героями двух Нобелевских премий и многих тысяч научных и научно-популярных статей. Их уникальная возможность превращаться в любую клетку взрослого организма до сих пор дает пищу для ума как биологам развития, так и ученым, ищущим способы лечения генетических заболеваний. В лекции будет рассказано о двух типах плюрипотентных клеток: "естественных" (эмбриональные стволовые клетки) и "искусственных" (индуцированные плюрипотентные стволовые клетки). Отдельно мы остановимся на том, как знания о работе транскрипционных факторов помогли репрограммировать клетки, и как эти "искусственные" плюрипотентные клетки можно использовать в медицине.
В своей лекции Андрей Афанасьев рассказал о стартапах в биотехе и биоинформатике и своем биоинформатическом проекте iBinom, разобрал несколько биотехнологических проектов глазами инноваторов и инвесторов, а также коснулся вопроса поиска инвестиций и поделился личным опытом взаимодействия с венчурными фондами и институтами развития.
1. Обмен файлами с сервером
Под линуксом удобно копировать файлы, например, используя scp:
scp [-r] [-P port] <source> <destination>
-r -- копировать директории рекурсивно;
-P -- номер порта;
<sorce>, <destination> -- что и куда буем копировать файлы. Можно копировать как
на сервер, так и с него. Путь на сервере указывается как
user@194.85.238.21:/acestorage2/students/.../
Например, залить локальную папку на сервер можно командой
scp -r -P 23 ~/mylocaldir/ user@194.85.238.21:/acestorage2/students/user/
Можно использовать, например, программу FileZilla (http://filezilla-project.org/).
Она есть и для линукса, и для Windows. Пользоваться ей достаточно просто. В
качестве хоста вводим
sftp://194.85.238.21
Далее вводим логин, пароль, порт (23) и подключаемся. Копировать файлы
можно просто перетаскивая их, или правой кнопкой по нужным файлам и Upload/
Download.
FileZilla далеко не единственный клиент. Например, в Windows можно
пользоваться привычным Total Commander.
Напоминаю, домашние задания должны быть в директории /labnas/students/. Все
данные для заданий будут в /labnas/NGS/.
Bowtie
Сайт: http://bowtie-bio.sourceforge.net/index.shtml
Статья: http://genomebiology.com/content/pdf/gb-2009-10-3-r25.pdf
Программа находится в /labnas/NGS/2/bowtie-0.12.7/.
Для того, чтобы приложить риды необходимо сперва построить индекс генома
(или контигов), к которому будем прикладывать. Это делается командой:
bowtie-build <genome file> <index name>
Индекс строиться один раз для конкретного генома. Для больших геномов
(например человека) индекс можно скачать с сайта bowtie.
Риды можно прикладывать в непарном и парном режимах.
Общие опции:
-q/-f -- формат ридов (fastq/fasta)
-p <thread number> -- количество потоков (много не используйте)
--al <filename> -- вывести все приложившиеся риды в указанный файл
2. --un <filename> -- вывести все не приложившиеся риды в указанный файл
-m <int> -- игнорировать риды, приложившиеся больше, чем заданное число раз
-a -- выводить все приложения рида (по умолчанию выводится первое найденное)
--best -- выводить лучшее возможное приложение для рида
Последние три опции могут замедлить работу bowtie.
Запуск в одиночном режиме:
bowtie -q -p 4 --best <index name> <fastq file with reads> > 1.log 2> 1.err
В файле 1.log будет вся информация о приложившихся ридах -- стренд, позиция и
т.д. В файле 1.err будет краткая статистика.
Опции парного режима:
--minins <int> -- минимальное расстояние вставки (insert size)
--maxins <int> -- максимальное расстояние вставки
--fr/--rf/--ff -- ориентация ридов
Запуск в парном режиме:
bowtie -q -p 4 --fr --minins 0 --maxins 500 <index name> -1 <left fastq file> -2 <right
fastq file> > 1.log 2> 1.err
Полный список опций:
bowtie -h
Различные ориентации пар ридов:
FR (forward - reverse) —--> <-----
RF (reverse - forward) <----- —-->
FF (forward - forward) —--> —-->
Расстояние вставки во всех случаях определяется как расстояние между
дальними концами ридов.
Второе домашнее задание (до 23:59 18.03.12)
0. Посмотреть на статистику ридов, разобраться в выводе Bowtie.
1. По выводу Bowtie построить график покрытия генома, определить среднее
покрытие и долю покрытой области генома. Покрытие одного нуклеотида есть
количество ридов, приложившихся так, что их концы находятся по разные стороны
от нуклеотида. График можно строить усредняя, например, по 1000 нуклеотидов.
Доля покрытой области генома определяется как процент нуклеотидов с
ненулевым покрытием по отношению ко всей длине генома.
2. По выводу Bowtie построить график распределения расстояния вставки,
определить среднее расстояние вставки и его среднеквадратичное отклонение.
3. По оси Х -- расстояние вставки, по оси Y -- количество ридов в заданным
расстоянием вставки.
3*. Задание, которое можно сделать вместо 1 и 2.
Получить парную статистику по запускам Bowtie в одиночном режиме. У нас есть
данные о том как приложились левые и правые риды по одиночке. Хочется узнать
процент пар с каждой из ориентаций, процент пар с одним приложившимся ридом
и процент пар без приложений. Для приложившихся пар хочется узнать среднее
расстояние вставки и его СКО.
Данные для первых двух заданий.
Если ваша фамилия начинается на А-И:
Папка: /2/E.coli/
Датасет №1: 05.reads.left.corrected.fastq, 05.reads.right.corrected.fastq
Датасет №2: s_6_1.fastq, s_6_2.fastq
Геном: MG1655-K12.fasta
Если ваша фамилия начинается на К-Я:
Папка: /2/P.stipitis/
Датасет №1: HTC10499_s_8_1.fastq, HTC10499_s_8_2.fastq
Датасет №2: HTC10508_s_8_1.fastq, HTC10508_s_8_2.fastq
Геном: P.stipitis.fasta
Третье задание можно протестировать на любых датасетах.