Как перемещать, выгружать и интегрировать очень большие данные дёшево и быстро? Что такое pushdown-оптимизация?

    Любая операция с большими данными требует больших вычислительных мощностей. Обычное перемещение данных из базы на Hadoop может длиться неделями или стоить, как крыло самолёта. Не хотите ждать и тратиться? Сбалансируйте нагрузку на разные платформы. Один из способов – pushdown-оптимизация.


    Я попросил ведущего в России тренера по разработке и администрированию продуктов Informatica Алексея Ананьева рассказать о функции pushdown-оптимизации в Informatica Big Data Management (BDM). Когда-то учились работать с продуктами Informatica? Скорее всего именно Алексей рассказывал вам азы PowerCenter и объяснял, как строить маппинги.


    Алексей Ананьев, руководитель направления по обучению DIS Group


    Что такое pushdown?


    Многие из вас уже знакомы с Informatica Big Data Management (BDM). Продукт умеет интегрировать большие данные из разных источников, перемещать их между разными системами, обеспечивает к ним лёгкий доступ, позволяет профилировать их и многое другое.
    В умелых руках BDM способен творить чудеса: задачи будут выполняться быстро и с минимальными вычислительными ресурсами.


    Тоже так хотите? Научитесь использовать функцию pushdown в BDM для распределения вычислительной нагрузки между разными платформами. Технология pushdown позволяет превратить маппинг в скрипт и выбрать среду, в которой этот скрипт запустится. Возможность такого выбора позволяет комбинировать сильные стороны разных платформ и достигать их максимальной производительности.


    Для настройки среды исполнения скрипта нужно выбрать тип pushdown. Скрипт может быть полностью запущен на Hadoop или частично распределен между источником и приемником. Есть 4 возможных типа pushdown. Маппинг можно не превращать в скрипт (native). Маппинг можно исполнить максимально на источнике (source) или полностью на источнике (full). Также маппинг можно превратить в скрипт Hadoop (none).


    Pushdown-оптимизация


    Перечисленные 4 типа можно по-разному комбинировать – оптимизировать pushdown под конкретные нужды системы. Например, часто целесообразнее извлечь данные из базы данных, применяя её собственные возможности. А преобразовать данные – силами Hadoop, чтобы саму базу не перегружать.


    Давайте рассмотрим случай, когда и источник, и приемник находятся в БД, а платформу исполнения преобразований можно выбрать: в зависимости от настроек это будет Informatica, сервер БД или Hadoop. Такой пример позволит наиболее точно понять техническую сторону работы этого механизма. Естественно, в реальной жизни, такая ситуация не возникает, но для демонстрации функционала она подходит наилучшим образом.


    Возьмём маппинг для чтения двух таблиц в единой базе данных Oracle. А результаты чтения пусть записываются в таблицу в этой же базе. Схема маппинга будет такая:


    image


    В виде маппинга на Informatica BDM 10.2.1 это выглядит таким образом:


    image


    Тип pushdown – native


    Если мы выберем тип pushdown native, то маппинг будет выполнен на сервере Informatica. Данные будут прочтены с сервера Oracle, перенесены на сервер Informatica, трансформированы там и переданы в Hadoop. Другими словами, мы получим обычный ETL-процесс.


    Тип pushdown – source


    При выборе типа source мы получаем возможность распределить наш процесс между сервером базы данных (БД) и Hadoop. При исполнении процесса с этой настройкой в базу полетят запросы на выборку данных из таблиц. А остальное будет выполняться в виде шагов на Hadoop.
    Схема исполнения будет выглядеть так:


    image


    Ниже – пример настройки среды исполнения.


    image


    В этом случае маппинг будет выполняться в два шага. В его настройках мы увидим, что он превратился в скрипт, который будет отправлен на источник. Причем объединение таблиц и преобразование данных выполнится в виде переопределенного запроса на источнике.
    На картинке ниже, мы видим оптимизированный маппинг на BDM, а на источнике – переопределенный запрос.


    image


    Роль Hadoop в данной конфигурации сведется к управлению потоком данных – дирижированию ими. Результат запроса будет направлен в Hadoop. После завершения чтения файл из Hadoop будет записан в приемник.


    Тип pushdown – full


    При выборе типа full маппинг полностью превратится в запрос на БД. А результат запроса будет направлен на Hadoop. Схема такого процесса представлена ниже.


    image


    Пример настройки представлен ниже.


    image


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


    image


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


    Тип pushdown – null


    Ну и последний вариант – тип pushdown, в рамках которого наш маппинг превратится в скрипт на Hadoop.


    Оптимизированный маппинг теперь будет выглядеть так:


    image


    Здесь данные из файлов-источников сначала будут прочтены на Hadoop. Затем его же средствами эти два файла будут объединены. После этого данные будут преобразованы и выгружены в БД.


    Понимая принципы pushdown-оптимизации, можно очень эффективно организовать многие процессы работы с большими данными. Так, совсем недавно одна крупная компания всего за несколько недель выгрузила из хранилища в Hadoop большие данные, которые до этого собирала несколько лет.

    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое