Коля. Заметки

коля._заметки.1494513724.txt.gz | Хозяин: nikolay_carbonsoft1 | Изменен: 20.05.2019 15:18 nikolay_carbonsoft1 Черновик Новейший утвержденный

Это старая версия документа.


Почитать/посмотреть.

Курс лекций "Алгоритмы во внешней памяти". Максим Бабенко.

http://www.youtube.com/embed/KsPv6X9ysqI http://www.lektorium.tv/lecture/13929

На курсе рассказывают про алгоритмы, которые работают с данными, которые, по тем или иным причинам, не могут поместиться в оперативную память (когда файлы лежат на HDD/SSD или, например, в хадупе на HDFS). Объясняется сложность таких алгоритмов, относительно количества дисковых операций, теория подана довольно просто и интуитивно, мозг хорошо настраивается на мысль, что не так важна производительность кода, когда доступ к данным такой дорогой.

На 3-4й лекции завтыкал, примеры про алгоритмы на графах мне не очень близки. Может, почитаю про эти алгоритмы в памяти и пересмотрю как все меняется, когда граф окажется очень большим. Но первые лекции очень хороши.

В последней лекции акцент смещают с внешней памяти и оперативной на CPU-кеш и оперативную память. Скорости тут, конечно, будут другие, но порядок, на который отличается скорость доступа к кешу и ОЗУ, и порядок ОЗУ и HDD примерно одинаков, на мой взгляд. 5 лекция будет сама по себе полезна, если тебе нужен быстрый алгоритм, который работает с данными в ОЗУ. Минимизация доступа к ОЗУ сможет дать большой прирост производительности, да и круто это, знать как работает кеш в CPU :)

Вместо пятой лекции, конечно, советую прочитать «What Every Programmer Should Know About Memory» https://www.akkadia.org/drepper/cpumemory.pdf , но там много, и мне плохо зашли части про бечмаркинг скорости, т.к. нет под рукой проекта, на который я могу примерять цифры, чтобы их осознавать.

Курс лекций "Методы и системы обработки больших данных". Иван Пузыревский.


http://www.youtube.com/embed/IHVIFVZeXcA http://www.lektorium.tv/lecture/30079

http://compsciclub.ru/courses/bigdatasystems/2017-spring/

Очень качественный и свежий курс про распределенные системы, про их работу под капотом. Речь идет про системы хранения, очереди и БД: HDFS, HBase, Cassandra, Kafka; про MapReduce и системы потоковой обработки: Hadoop MapReduce, Spark, Storm, Spark Streaming, плюс две лекции про Zookeeper и одна про Hive. Внешнее API систем и примеры использования приведены в основном для общего понимания, основная часть сосредоточена на внутренней архитектуре систем. Очень полезно для определения применимости этих систем в ваших проектах, поможет самостоятельно прикидывать производительность при применении той или иной технологии. На лекциях разбирается архитектура, строение и алгоритмы, на которых основываются системы. Начинается все с HDFS из хадуповского стека, который является базовым строительным блоком распределенной системы на базе hadoop, на его примере также разбирается работа и деплой кода в hadoop YARN. Довольно забавно было, когда после первой лекции про HDFS была полная уверенность в том, что оно точно не подходит для БД, а в 3й лекции рассказывают про быстрый и производительный HBase, который хранит свои данные в HDFS и делает это консистентно. В лекциях было очень мало информации про свежие фичи данных систем, про интересное API, примеры производительных интеграций. Сложилось такое ощущение, что какой-нибудь MapReduce с помощью твиков можно разогнать на пару порядков (Spark как раз один из известных твиков, хе-хе). Но тогда можно было бы ожидать по 11 лекций на каждую систему, вместо одной, да и цель курса немного не про это. В общем, если вы вечно путаете все эти модные словечки из темы MapReduce, не можете запомнить чем отличается Spark и Storm, Spark/HBase/Riak - после просмотра лекций у вас надолго в голове останутся «крючки», за которые в будущем можно будет легко сориентироваться в этом зоопарке.