Как стать автором
Обновить
1.2

Hadoop *

Фреймворк для распределённых приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Тестирование систем и движков массивно-параллельных вычислений. Часть II. TPC-DS

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.4K

Привет! Сегодня я продолжаю тему сравнения систем и движков массивных параллельных вычислений. В прошлой публикации я раскрыл основные принципы проведения тестирования, которыми руководствуется наша команда, и привел результаты как реальных промышленных сценариев, так и синтетических тестов. Материал вызвал интерес и дискуссию: значит, он актуальный и полезный. Для кого-то факты стали убедительными, а кто-то усомнился в объективности результатов, поэтому, как и было обещано, я делюсь материалами сравнительного тестирования, выполненного по общепринятому стандарту TPC-DS. Сегодня вы узнаете, повлияла ли смена методики на результаты.

Читать далее

Новости

Пишем движок SQL на Spark. Часть 8: CREATE FUNCTION

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.1K
В предыдущих сериях ( 1 2 3 4 5 6 7 Ы ) рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL, заточенный на задачи подготовки и трансформации наборов данных, и работающий как тонкая прослойка поверх Spark RDD API.

Штука получилась довольно продвинутая, с поддержкой императивщины типа циклов/ветвлений/переменных, и даже с поддержкой пользовательских процедур. И в плане этой самой императивщины расширяемая: может импортировать функции из Java classpath, равно как и операторы выражений. То есть, если необходимо, можно написать функцию на Java, или определить новый оператор, и использовать потом в любом выражении на SQL.


Круто? Ещё как круто. Но как-то однобоко. Если в языке у нас поддерживаются функции, то почему бы не дать нашим пользователям определять их самостоятельно? Вот прямо через CREATE FUNCTION? Тем более, что вся необходимая для этого инфраструктура уже вовсю присутствует. Да и процедуры на уровне интерпретатора у нас уже поддерживаются ведь…



Функция для затравки.

Читать дальше →

Соединение SortMergeJoin в Apache Spark

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров432

Рассмотрим, как реализован SortMergeJoin в Apache Spark, и заодно заглянем в исходный код на GitHub. Spark написан на языке Scala, и вся логика работы оператора доступна в открытом репозитории проекта.

Читать далее

Иногда приходится¹ копаться² в кишках³ Apache Spark

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2K

¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует.
² и да, довольно-таки глубоко.
³ нет, серьёзно!



Давайте рассмотрим следующий бизнесовый кейс.


Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю.


Требуется: при подготовке каждого из датасетов разделить его согласно значениям одного или нескольких полей, составляющих его записи, на несколько. И это одна из особенно часто встречающихся в нашем процессе операций.


Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.

Читать дальше →

Как я удалил clickstream, но его восстановили из небытия

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.3K

Всем привет! Я Дмитрий Немчин из Т-Банка. Расскажу не очень успешную историю о том как я удалил данные и что из этого вышло.

В ИТ я больше 12 лет, начинал DBA и разработчиком в кровавом энтепрайзе с Oracle. В 2015 году познакомился с Greenplum в Т, да так тут и остался. С 2017 года стал лидить команду, потом все чуть усложнилось и команда стала не одна.  Возможно, вы меня могли видеть как организатора Greenplum-митапов в России. 

Но команда командой, менеджмент менеджментом, а руки чешутся..

Читать далее

Пакетная репликация данных в аналитическом ландшафте ХД

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров687

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

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

Читать далее

Три необсуждаемых вопроса о микросервисах и параллельной распределённой обработке данных — чтобы жить стало легче

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.5K

Воркшоп для тех, кто впервые сталкивается с распределёнными системами.

В этой статье на примере решения несложного архитектурного кейса я покажу, что ответов только на 3 вопроса при проектировании систем распределённой параллельной обработки данных будет достаточно для обеспечения жёстких нефункциональных требований.

Читать далее

Hadoop на микросервисах или история одного пет-проекта

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров1.2K

Столкнувшись с концепцией Big Data некоторое время назад, у меня возник очевидный вопрос: как это можно «потрогать» своими собственными руками, где и как можно посмотреть программное обеспечение, составляющее данный концепт, разобраться с его конфигурацией, а в силу того, что я являюсь специалистом информационной безопасности, «потыкать в него палочками», провести проверку на предмет защищенности, возможности несанкционированных доступов. Ввиду специфики систем данного рода, их достаточно тяжело развернуть в качестве учебного проекта на собственном персональном компьютере. Используемые в организации программы такого рода, мягко говоря, также не очень предназначены для того, чтобы их «ковыряли», «подламывали» и всячески пытались вывести из штатного режима работы.

Представляемый в данной статье проект предназначен для того, чтобы развернуть внутри Docker-контейнеров, распределенных на несколько компьютеров, максимально защищенную среду Hadoop (включающую в себя ПО Ranger и Knox), предоставить доступ к ее интерфейсам для тестирования и настройки. Если кратко, то это все. «Git clone», «docker compose up -d» с некоторыми предварительными настройками и «будет вам счастье». Написанный код (преимущественно shell-скрипты и конфигурация docker) максимально документирован ссылками на ресурсы сети Интернет, откуда это взято и где это все подробно описано. Технологии все общеизвестные, новые паттерны я здесь не изобретал. Если же что-то становится не понятным или docker-контейнеры «не взлетают» с первого раза – придется читать дальше, тут я как раз постараюсь описать все подробнее. Итак, поехали…

Читать далее

Мой опыт эксплуатации кластера Trino

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.6K

Trino — высокопроизводительный распределённый SQL-движок, с возможностью объединения данных из разнородных источников, таких как: реляционные БД, файловые хранилища, шины данных, inmemory-хранилища, облачные сервисы и тд. Архитектура ориентирована на выполнение аналитических запросов с минимальной задержкой. Т.е. с его помощью можно отправлять SQL-запросы в MongoDB и Kafka, например. Благодаря скорости, развитию, и удобству захватывает популярность у инженеров и аналитиков, работающих с bigdata.

Я познакомился с Trino 1 год назад, за это время настроил с нуля кластер на baremetal и помог с проблемами в нескольких других. В этой статье делюсь краткой выжимкой опыта эксплуатации, накопленным за это время. Большая часть информации будет актуальна и для российского форка Trino: CedrusData.

Читать далее

Тестирование систем и движков массивно-параллельных вычислений. Сравнение Impala, Trino и GreenPlum

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров3.1K

Успешные тестирование производительности и нагрузочные испытания – важнейшие условия для выбора аналитической системы массивной обработки больших данных. В этой публикации я хочу поделиться подходами к тестированию, которые используются нашей командой как в проектной работе, так и при разработке Lakehouse-платформы данных Data Ocean Nova, и познакомить вас с результатами сравнения различных движков и систем. Вы узнаете, как правильно ставить цели, выбирать методику и из каких сценариев ее нужно составлять, как протоколировать результаты и делать выводы. И самое главное – получите ответ на вопросы: кто быстрее: заяц Trino или антилопа Impala?

Читать далее

Современная Lakehouse-платформа данных Data Ocean Nova

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров5.6K

Привет. Меня зовут Евгений Вилков. Я занимаюсь системами управления и интеграции данных с 2002 г., а конкретно системами анализа и обработки данных — с 2007 г. Технологии, с которыми я имел дело на протяжении моего профессионального пути, стремительно развивались. Начиная с решений, основанных на стеке традиционных СУБД, таких как Oracle, MS SQL Server, Postgres, постепенно эволюционируя в ставшие уже классическими (а некоторые даже и закрытыми) MPP-системы, такие как Teradata, GreenPlum, Netezza, Vertica, IQ, HANA, Exadata, ClickHouse, в различные решения на базе экосистемы Hadoop, облачные сервисы и платформы. Меняется мир, меняются технологии, меняются подходы к проектированию, меняются и требования к задачам аналитического ландшафта данных.

Уверен, что многие, кто уже знаком с терминами Data Mesh и Data Lakehouse, задаются вопросом: что может предложить рынок аналитических систем в этих методологиях проектирования и архитектурных подходах. Я хочу рассказать об аналитической платформе данных Data Ocean Nova, владельцем и технологическим идеологом которой я являюсь.

Читать далее

Как мы перенесли архив данных из Teradata в GreenPlum с помощью Hadoop и PXF

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.2K

Привет, Хабр! Мы продолжаем серию статей о проведённой миграции аналитического хранилища данных с платформы Teradata на GreenPlum. В предыдущей статье мы рассказали о нашем опыте и результатах автоматизированного переписывания SQL-скриптов из диалекта Teradata в диалект GreenPlum с помощью реализованного сервиса миграции кода. В этой статье мы расскажем вам о полученном нами опыте и результатах переноса архива данных объёмом более 400 Тб из Teradata в GreenPlum, а также о трудностях и решениях, связанных с этим процессом.

Читать далее

Руководство по Apache Spark не для начинающих: оптимизация

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров9.5K

Руководство по Apache Spark не для начинающих.

В прошлой статье я писал о возможностях и функциях Apache Spark для обработки данных. Мы сосредоточились на ключевых функциях чтения, обработки и сохранения данных, не забывая о примерах кода, которые помогут новичкам быстро включиться в работу.

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

Читать далее

Ближайшие события

Как упаковать бэкенд-код на Go для аналитики на базе Spark

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K

Всем привет! Я Ваня Ахлестин, занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop в Авито. Сегодня расскажу, как начать использовать ваш код из Python или PySpark и не тратить много времени дорогих разработчиков.

Читать далее

[Туториал] Пишем собственные Spark Native Functions (Часть 2)

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров879

В предыдущей своей статье Почему стоит начать писать собственные Spark Native Functions? (Часть 1), которая является переводом и которая вдохновила меня на собственные изыскания, был разобран пример, как написать свою Spark Native Function по генерации UID. Это, конечно, здорово, но вот только данная функция не принимает аргументы на вход, в то время как в реальной практике нам требуются обычно функции, которым надо передать на вход 1, 2 или 3 аргумента. Такие случаи не рассматриваются в упомянутой выше переводной статье - ну что ж, попробуем восполнить этот пробел!

Ниже я предлагаю вашему вниманию результаты своих изысканий по созданию собственных Spark Native Functions, которые бы принимали на вход несколько аргументов.

Читать далее

Интеграция PostgreSQL и Hadoop

Время на прочтение5 мин
Количество просмотров3.4K

Представим некое перепутье, где с одной стороны — мощные возможности PostgreSQL, а с другой — необъятные просторы Hadoop. Выбор кажется сложным, но зачем выбирать одно, если можно соединить их и получить лучшее из обоих?

Объединяя их можно создать мощную систему, способную обрабатывать и анализировать огромные объемы данных.

Читать далее

Рулим запуском Spark-приложений в Airflow с помощью самописного оператора

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров8K

Airflow в Lamoda Tech играет роль оркестратора процессов обработки данных. Ежедневно с его помощью мы запускаем 1 800+ тасок на проде, примерно половина из которых являются Spark-приложениями.

Все Spark-приложения сабмитятся из Docker-контейнеров. И здесь сталкиваемся с проблемой: в нашем случае не существует готовых решений для запуска Spark-приложений, позволяющих легко править конфигурацию и следить за количеством потребляемых ресурсов.

Меня зовут Андрей Булгаков, я лид команды разработчиков Big Data в Lamoda Tech. Вместе с разработчиком Иваном Васенковым в этой статье мы поделимся историей создания Airflow-оператора для запуска Spark-приложений.

Читать далее

[Перевод] Почему стоит начать писать собственные Spark Native Functions?

Время на прочтение5 мин
Количество просмотров1.6K

Это мой вольный перевод статьи "Why You Should Start Writing Spark Custom Native Functions", которая вдохновила меня на некоторые собстенные изыскания по данной теме. Их результат я планирую опубликовать позже, а пока выношу на ваш суд этот перевод.

Статья на примере реализации функции по генератации UUID рассматривает, как писать Spark native функции, которые были бы "прозрачны" для Catalyst (в отличии от UDF, которые являются "черными ящиками" для него). Сравнение производительности ожидаемо показывает, что Catalyst Expressions значительно превосходят UDF при увеличении размера данных.

Кому интересно узнать, как писать Spark native функции - прошу под кат.

Читать далее

SPARK для «малышей»

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров19K

Примеры кода на Python для работы с Apache Spark для «самых маленьких» (и немного «картинок»).

Данная статья представляет собой обзор основных функций Apache Spark и рассматривает способы их применения в реальных задачах обработки данных. Apache Spark — это мощная и гибкая система для обработки больших объёмов данных, предлагающая широкий спектр возможностей для аналитики и машинного обучения. В нашем обзоре мы сфокусируемся на ключевых функциях чтения, обработки и сохранения данных, демонстрируя примеры кода, которые помогут новичкам быстро включиться в работу и начать использовать эти возможности в своих проектах.

Читать далее

Путь от монолита к разделению Compute и Storage: пример поиска «хранилища мечты» для большой аналитической платформы

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4K

Для запуска и эксплуатации высоконагруженных ИТ-решений с петабайтами данных в активе, нужно проработанное решение, позволяющее гибко управлять ресурсами. Одним из критичных аспектов этого решения, является разделение Compute & Storage — разделение ресурсов инфраструктуры под вычисление и хранение соответственно. Если не реализовать такое разделение в крупном проекте, инфраструктура рискует превратиться в «чемодан без ручки» — эффективность использования ресурсов будет низкой, а сложность управления ресурсами и средами будет высока. На примере команды SberData и их корпоративной аналитической платформы я расскажу, когда требуется разделение Compute & Storage и как это реализовать максимально нативно.

Статья подготовлена по мотивам доклада на VK Data Meetup «Как разделить Compute & Storage в Hadoop и не утонуть в лавине миграций».

Читать далее
1
23 ...