Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Распределяй и Властвуй: Введение в Распределенн...

Распределяй и Властвуй: Введение в Распределенные Технологии

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

Что же делать? Реплицировать данные? Как распределять вычисления? У каждого подхода есть свои преимущества и недостатки, как и очевидные, так и те, что не всегда лежат на поверхности.

Hazelcast (in-memory data grid с открытым исходным кодом) предоставляет множество инструментов для организации распределенных вычислений.

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

Viktor Gamov

April 24, 2016
Tweet

More Decks by Viktor Gamov

Other Decks in Programming

Transcript

  1. © 2016 Hazelcast Inc. Confidential & Proprietary 1 Распределяй и

    властвуй Введение в распределенные системы Виктор Гамов Senior Solutions Architect, Hazelcast
  2. © 2016 Hazelcast Inc. Confidential & Proprietary 2 Сегодня в

    программе • Введение в распределенные вычисления • Распределенный ExecutorService • MapReduce • Вопросы и ответы
  3. © 2016 Hazelcast Inc. Confidential & Proprietary 3 Распределенные вычисления

    или многоядерные процессоры на стероидах
  4. © 2016 Hazelcast Inc. Confidential & Proprietary 5 А ты

    помнишь как все начиналось? https://en.wikipedia.org/wiki/Advanced_Micro_Devices#/medi a/File:KL_Advanced_Micro_Devices_AM9080.jpg
  5. © 2016 Hazelcast Inc. Confidential & Proprietary 14 Что такое

    распределенный ExecutorService • Расширение j.u.c.ExecutorService • Runnable / Callable (только Serializable) • Один таск – много нод
  6. © 2016 Hazelcast Inc. Confidential & Proprietary 15 Пример: распечатать

    адреса всех нод public class MemberRunnable implements Runnable, HazelcastInstanceAware { transient HazelcastInstance hazelcastInstance; @Override public void run() { final Member localMember = hazelcastInstance.getCluster().getLocalMember(); System.out.println(localMember.getAddress()); } @Override public void setHazelcastInstance(HazelcastInstance hazelcastInstance) { this.hazelcastInstance = hazelcastInstance; } }
  7. © 2016 Hazelcast Inc. Confidential & Proprietary 16 А чего

    сразу Hazelcast? Green Primary Green Backup Green Shard
  8. © 2016 Hazelcast Inc. Confidential & Proprietary 19 Области применения

    • Анализ логов • Запросы к данным • Агрегация и сложение • Распределенная сортировка • ETL (Extract Transform Load) • И еще много чего
  9. © 2016 Hazelcast Inc. Confidential & Proprietary 20 Постановка задачи

    Показать Top10 слов Из романа в стихах «Евгений Онегин»
  10. © 2016 Hazelcast Inc. Confidential & Proprietary 21 Основные шаги

    • Считываем данные • Map / transform • Reduce
  11. © 2016 Hazelcast Inc. Confidential & Proprietary 22 Основные шаги:

    расширенная версия • Считываем данные • Map / transform • Combine • Группировка • Reduce • Объединять
  12. © 2016 Hazelcast Inc. Confidential & Proprietary 24 Map: Данные

    трансформируются в набор пар «ключ-значение» public void map(String key, String value, Context<String, Integer> context) { StringTokenizer tokenizer = new StringTokenizer(value); while (tokenizer.hasMoreTokens()) { String word = WordCountExample.cleanWord(tokenizer.nextToken()); if (word.length() >= 4) { context.emit(word.toLowerCase(), ONE); } } }
  13. © 2016 Hazelcast Inc. Confidential & Proprietary 25 Combine: значения

    объединяются в промежуточный результат чтобы уменьшить объем передаваемых данных public void combine(Integer value) { count += value; }
  14. © 2016 Hazelcast Inc. Confidential & Proprietary 26 Reduce: агрегация

    данных для получения конечного результата @Override public void reduce(Integer value) { count += value; }
  15. © 2016 Hazelcast Inc. Confidential & Proprietary 28 MapReduce в

    жизни Google https://research.google.com/archive/mapr educe-osdi04-slides/index-auto- 0005.html
  16. © 2016 Hazelcast Inc. Confidential & Proprietary 30 В качестве

    заключения • Распределенное программирование – это не сложно! • И не дорого • Обычное железо • Open Source Software FTW! • Учите матчасть • https://research.google.com/archive/mapreduce-osdi04-slides/index.html • http://www.hazelcast.org/learn • Код https://github.com/gAmUssA/jpoint-2016-computing-talk