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

    View full-size slide

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

    View full-size slide

  3. © 2016 Hazelcast Inc. Confidential & Proprietary 3
    Распределенные вычисления
    или
    многоядерные процессоры на стероидах

    View full-size slide

  4. © 2016 Hazelcast Inc. Confidential & Proprietary 4
    Распределенные вычисления в каждый дом

    View full-size slide

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

    View full-size slide

  6. © 2016 Hazelcast Inc. Confidential & Proprietary 6
    Многоядерные процессоры - не новинка

    View full-size slide

  7. © 2016 Hazelcast Inc. Confidential & Proprietary 7
    Кластерезуй это!

    View full-size slide

  8. © 2016 Hazelcast Inc. Confidential & Proprietary 8
    Суперкомпьютеры!

    View full-size slide

  9. © 2016 Hazelcast Inc. Confidential & Proprietary 9
    Вычисления в облаках

    View full-size slide

  10. © 2016 Hazelcast Inc. Confidential & Proprietary 10
    Память дешевеет

    View full-size slide

  11. © 2016 Hazelcast Inc. Confidential & Proprietary 11
    Вычисления в памяти?
    А почему бы и нет!

    View full-size slide

  12. © 2016 Hazelcast Inc. Confidential & Proprietary 12
    Сравним скорости

    View full-size slide

  13. © 2016 Hazelcast Inc. Confidential & Proprietary 13
    Распределенный ExecutorSerice:
    вся мощь кластера к вашим услугам

    View full-size slide

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

    View full-size slide

  15. © 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;
    }
    }

    View full-size slide

  16. © 2016 Hazelcast Inc. Confidential & Proprietary 16
    А чего сразу Hazelcast?
    Green
    Primary
    Green
    Backup
    Green
    Shard

    View full-size slide

  17. © 2016 Hazelcast Inc. Confidential & Proprietary 18
    MapReduce:
    Черная магия с планеты Google

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. © 2016 Hazelcast Inc. Confidential & Proprietary 23
    Диаграмма потока данных в MapReduce
    программе

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. © 2016 Hazelcast Inc. Confidential & Proprietary 27
    Матан

    View full-size slide

  27. © 2016 Hazelcast Inc. Confidential & Proprietary 28
    MapReduce в жизни Google
    https://research.google.com/archive/mapr educe-osdi04-slides/index-auto- 0005.html

    View full-size slide

  28. © 2016 Hazelcast Inc. Confidential & Proprietary 29
    Демо

    View full-size slide

  29. © 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

    View full-size slide