Pull to refresh
42
0
Send message

Могут ли IT-команды существовать без лидера: концепция Liquid Super Teams

Reading time9 min
Views5.5K
Устраиваясь на работу в корпорацию или стартап, разработчики часто вливаются в одну и ту же иерархию команды: во главе стоит тимлид, за ним — синьоры, потом — мидлы и так далее. И кажется, к формату top-down все привыкли. Но значит ли, что он не требует изменений? В этой статье рассмотрим альтернативу такому подходу.


Приятного чтения!
Total votes 13: ↑11 and ↓2+14
Comments10

Когда помогает партиционирование, пример в PostgreSQL

Reading time10 min
Views15K
Разберем внедрение партиционирования на практическом примере, обсудим выбор реализации, альтернативы. Учтем ограничения, проистекающие из самих обрабатываемых данных.

Подробнее
Total votes 14: ↑13 and ↓1+14
Comments19

Шард всемогущий: как масштабировать СУБД для highload системы

Reading time8 min
Views7.5K

Весной 2021 года во французском Страсбурге случилось яркое событие: полностью сгорел дата-центр одного из крупнейших европейских хостинг-провайдеров (OVH). Всего за несколько часов пожар отрубил доступ к миллиону популярных сайтов и онлайн-сервисов во всём мире. Одна из вероятных причин — человеческий фактор. В результате под угрозой существования оказался не только сам ЦОД, но и весь бизнес провайдера. К слову, и в России ЦОДы тоже горят. К сожалению, пожар — не единственная проблема больших данных. Не менее опасно — highload системы. Это когда, например, приложение перестаёт справляться с моментальной нагрузкой, а вся инфраструктура работает на пределе возможностей, и запаса для роста у неё нет. Забегая вперед, скажу, что решение есть у каждой из перечисленных проблем. Но, обо всём по порядку.


Читать дальше →
Total votes 12: ↑10 and ↓2+9
Comments2

Tarantool: ускорение разработки с Rust

Reading time17 min
Views12K

Tarantool, как известно, поддерживает любой язык, который совместим с C и компилируется в машинный код. В том числе есть возможность реализации хранимых функций и модулей на Lua и C. Тем не менее, уже в двух своих проектах мы использовали Rust (в одном полностью перенесли Lua-код на Rust) и получили 5-кратное увеличение производительности по сравнению с Lua и сопоставимый результат, который дает по производительности C.

Читать далее
Total votes 41: ↑39 and ↓2+47
Comments27

Кто такие Data-специалисты, чем они занимаются и как строится работа

Reading time10 min
Views19K

Привет, Хабр! Меня зовут Азат Якупов, я работаю Data Architect в Quadcode. Сегодня хочу рассказать о Data-специалистах и познакомить вас с нашей командой Data Platform.

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments14

System Design. Общие принцип прохождения интервью по проектированию ИТ-систем

Reading time9 min
Views40K
image Привет, Хаброжители! Мы весьма рады, что вы решили изучить особенности интервью по проектированию ИТ-систем вместе с нами. Из всех технических интервью именно на этом задают самые сложные вопросы. Претенденту предлагается спроектировать архитектуру программной системы: новостной ленты, поиска Google, системы мгновенных сообщений и т. д. Задачи такого рода наводят ужас, ведь у них нет единственно верных решений. Они обычно отличаются масштабностью и расплывчатостью. Допускаются свободные и неясные формулировки без стандартного или правильного ответа.

Интервью по проектированию ИТ-систем широко практикуются в компаниях, так как навыки общения и решения задач, которые можно проверить на этом этапе, необходимы в повседневной работе программиста. Ответы претендента оцениваются с учетом того, как он анализирует расплывчатую задачу и какие шаги он предпринимает для ее решения. При этом во внимание принимается то, как он объясняет свои идеи, обсуждает их с другими, оценивает и оптимизирует систему.
Читать дальше →
Total votes 12: ↑11 and ↓1+12
Comments16

Эволюция хранилища данных в Авито

Reading time15 min
Views14K

Сейчас Data Warehouse в Авито — это инсталляция на 32 серверах. Мы используем девятую версию Vertica и ClickHouse. В команде, которая отвечает за хранилище, работает 21 человек. Поток событий, который мы загружаем, достигает 20 миллионов событий в минуту. Я расскажу, как менялось наше хранилище аналитических данных с 2013 года.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments9

Области применения инструмента Apache Sqoop

Reading time8 min
Views5.1K


Введение


Часто перед дата-инженерами ставится задача по миграции данных из какого-либо источника или системы в целевое хранилище. Для этого существует множество различных инструментов. Если говорить про платформу Big Data, то чаще всего у разработчиков на слуху Apache NiFi или ETL-задачи, написанные на Spark, ввиду универсальности этих инструментов. Но давайте предположим, что нам необходимо провести миграцию данных из РСУБД в Hadoop. Для подобного рода задач существует очень недооцененный пакетный ETL-инструмент – Apache Sqoop. Его особенность в следующем:

  • Облегчает работу разработчиков, предоставляя интерфейс командной строки. Для работы с этим инструментом достаточно заполнить основную информацию: источник, место назначения и детали аутентификации базы данных;
  • Автоматизирует большую часть процесса;
  • Использует инфраструктуру MapReduce для импорта и экспорта данных, что обеспечивает параллельный механизм и отказоустойчивость;
  • Для работы с этим инструментом требуется иметь базовые знания компьютерной технологии и терминологии, опыт работы с СУБД, с интерфейсами командной строки (например bash), а также знать, что такое Hadoop и обладать знаниями по его эксплуатации;
  • Относительно простая установка и настройка инструмента на кластере.

Выглядит любопытно? Но что на счёт вышеупомянутой задачи по миграции данных? Давайте разбираться.
Читать дальше →
Total votes 1: ↑0 and ↓1-1
Comments5

Новые одноплатники, на которые стоит обратить внимание в 2022 году

Reading time4 min
Views36K

Привет, Хабр! Наступил 2022 год, а значит, самое время рассказать о новинках в мире одноплатников. Большинство из новых моделей пригодны как для использования в DIY-проектах, так и для решения корпоративных задач. Подавляющее большинство устройств, которые попали в эту подборку, были представлены производителями в конце 2021 года и лишь в этом году поступят в продажу.

Вероятно, вскоре станет известно о новых моделях, еще более производительных, функциональных и интересных. Но и те устройства, что есть, достаточно примечательны. Если же вы можете рассказать о девайсах, которые не попали в эту подборку и которые не уступают описанным устройствам, то пишите в комментариях — обсудим.
Читать дальше →
Total votes 41: ↑40 and ↓1+57
Comments43

Как работает крупнейший маркетплейс: что у него под капотом

Reading time7 min
Views46K

Всем привет, я — Сергей Бобрецов, CTO в Wildberries. 

Сегодня Wildberries — самый большой маркетплейс в России и мы так часто заняты повседневным хайлоадом, что не всегда успеваем рассказать что за всем этим стоит: какие технологии и решения под капотом, как мы справляемся с адом черной пятницы и ужасами киберпонедельника.

Стоит начать с того, что основным генератором прогресса в WB с самого начала и по сей день является фактор роста. По бизнес-метрикам мы растем примерно х2 каждый год уже много лет, а по техническим (количестуву запросов / транзакций / трафику / объему данных и т. д.) — рост может быть даже быстрее, и это создает множество вызовов: технических, архитектурных и организационных. 

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

Сегодня я хочу рассказать немного про нашу инфраструктуру.

Читать далее
Total votes 63: ↑48 and ↓15+39
Comments55

Кастомные агрегаторы в Spark SQL

Reading time11 min
Views1.7K

Данная статья является гайдом по использованию кастомных агрегаторов в Spark SQL API. Она “выросла” из моих заметок, которые я делал себе с начала работы со Spark. Сейчас, по мере накопления опыта, мне все это кажется уж слишком наивным и простым, но в свое время мне это показалось чертовски удобным/изящным/заслуживающим внимания, поэтому и решил опубликовать, тем более на Хабре про это еще вроде не писали. Статья ориентирована в первую очередь на тех, кто только начинает работать со Spark, поэтому и помечена как “tutorial”. Если у вас есть какие-либо интересные кейсы по использованию кастомных агрегаторов - делитесь в комментариях!

Ниже мы будем говорить о user-defined aggregations functions (UDAF) org.apache.spark.sql.expressions.Aggregator, которые могут быть использованы для DataSet’ов с целью агрегации группы элементов в одно значение каким-угодно-пользователю образом.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments3

От идеи до релиза: как в агротехе делают любимые фичи пользователей за совсем недорого

Reading time5 min
Views1.7K

OneSoil — это agtech-компания с беларусскими корнями. У нас 400 000 пользователей со всего мира, для которых мы регулярно обновляем продукт.

Как и у всех продуктовых компаний, у нас есть проблема: непрерывный поток обновлений — это дорого. Поэтому мы ищем способы оптимизировать разработку, и вот недавно мы сделали контрастный NDVI — новую фичу, которая стала у пользователей одной из любимых, а нам почти ничего не стоила. 

Для начала: в чём суть нашего продукта?

OneSoil делает приложение для точного земледелия. В 2021 году сельское хозяйство — это такая же высокотехнологичная сфера, как авиапромышленность. Роль OneSoil — предоставлять фермерам данные о состоянии их полей, чтобы их работа стала эффективнее. Когда у тебя несколько сотен гектаров с разными культурами, за ними очень сложно следить не используя технологии: рискуешь пропустить сорняки, болезни растений, проблемы почвы, а обойти все поля пешком невозможно. OneSoil берёт спутниковые снимки и обрабатывает их с помощью собственных алгоритмов, а потом даёт фермерам результаты в удобном виде в приложении.

Один из главных функционалов продукта — индекс NDVI. По нему фермеры понимают, сколько на поле растительности и здорова ли она. Индекс рассчитывается по тому, как растения отражают солнечный свет (здоровое растение активно поглощает красный свет и отражает ближний инфракрасный). 

Так что за фича?
Total votes 2: ↑2 and ↓0+2
Comments0

RCA для дата-инженеров

Reading time8 min
Views1.4K

Существует миллион разных причин, по которым могут возникать сбои в работе конвейеров данных, и нет ни одного универсального подхода, помогающего сразу понять, как и почему они случаются. В этой статье я расскажу вам о пяти шагах, которые нужно совершить дата-инженеру, чтобы провести анализ первопричин (Root Cause Analysis - RCA) проблем с качеством и пригодностью данных (Data Quality).

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments0

Apache Hive: от модели распределённых вычислений MapReduce компании Google до Big Data – хранилища больших данных

Reading time42 min
Views14K

Обзор

Apache Hive – система управления (СУБД) реляционными базами данных (РБД) с открытым исходным кодом для запросов, агрегирования и анализа параметров и режимов рабочих нагрузок с большими данными. В этой статье описываются ключевые инновационные инструменты для полноценной пакетной обработки в корпоративной системе хранения данных. Мы представляем гибридную архитектуру, которая сочетает в себе традиционные методы массивно-параллельных архитектур (MPP) с физически разделенной памятью с более современными концепциями больших данных, облаков для достижения масштабируемости и производительности, требуемых современными аналитическими приложениями. Мы исследуем систему, подробно описывая улучшения по четырем основным направлениям: транзакция, оптимизатор, среда выполнения и федерация (интеграционный процесс). Затем мы приводим экспериментальные результаты, чтобы продемонстрировать производительность системы для типовых рабочих нагрузок, и в заключение рассмотрим дорожную карту сообщества.

Читать далее
Total votes 2: ↑1 and ↓10
Comments0

Как Netflix упаковывает терабайтный контент с помощью облачных технологий

Reading time8 min
Views5.9K

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

Необходимость поддерживать рабочие процессы ставит перед упаковочной службой новые задачи. Но это коротко. А теперь давайте поговорим об этом подробнее.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments1

Изменить сохранения Spark! Часть первая: разделяй и… сортируй

Reading time23 min
Views6.7K

В этой статье вы узнаете о том, какими способами мы пытались обновлять таблицы в Hadoop, содержащие сотни терабайт данных.

И если в начале нашего пути процесс обновления длился несколько часов (до десяти-двенадцати часов), то теперь ему требуется всего тридцать-сорок минут, а использование вычислительных ресурсов уменьшено вдвое!

При этом была создана библиотека расширения Spark, которая предоставляет DataSource для преобразования данных в файлах в формат этого DataSource, изменения данных командой MERGE через DataFrame API или SQL, а в будущем ещё и UPDATE, DELETE и некоторые операции DDL.

Файлы при этом можно будет читать любым привычным способом, ведь они не модифицированы, а метаданные не обязательны для их чтения.

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

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

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments0

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Reading time11 min
Views23K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

Читать дальше →
Total votes 74: ↑68 and ↓6+89
Comments100

Как в Datalake объединить слишком большое количество небольших файлов в несколько больших с помощью Apache Spark

Reading time7 min
Views1.9K

Один из современных способов хранения большущего объема данных для платформ обработки и анализа данных - это распределение каждого датасета между несколькими узлами в кластере. Если мы используем облако, то весь датасет разделяется на множество объектов. Это может привести к появлению “слишком большого количества небольших файлов” что является хорошо известной проблемой в области Big Data. Формирование небольших файлов происходит по нескольким причинам, например, при сохранении входящих потоковых данных, сообщение за сообщением, при партиционировании по ключу с перекосом данных и т.д. Драйвер должен следить за изменениями метаданных всех файлов, чтобы планировать распределенную обработку данных при сохранении или чтении данных датасета используя Namenode, MapReduce или задачи Spark. Когда файлов слишком много, для хранения их метаданных требуется дополнительная память, а при их перечислении этих данных требуется гораздо больше времени на сетевое взаимодействие.

Во время работы в Datalake вы могли заметить, что при выполнении задачи Spark затрачивается слишком много времени на чтение датасета из s3/HDFS, где нужно подождать, даже чтобы увидеть запущенные экзекьюторы. Или вы могли заметить, что вашему Hive запросу может понадобиться несколько минут, чтобы инициировать задачи. Скорее всего, причина в том, что изначально драйвер большую часть времени тратит на просмотр всех метаданных файлов/объектов датасета в s3, особенно когда небольших файлов слишком много. Это связано с тем, что именно драйвер выполняет перечисление файлов в датасете, оценивает размер/партиции, а затем распределяет работу между экзекьюторами. Таким образом, слишком большое количество небольших файлов может привести к снижению производительности, а в худшем случае драйвер может поймать исключение из-за нехватки памяти.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments0

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity