Обновить
42
5

Пользователь

Отправить сообщение

Эпизод 1. Скрытая угроза Java Core. Уровень Юнглинг

Время на прочтение12 мин
Количество просмотров17K
image

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

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

Давным-давно,
в далекой-далекой галактике…

Юного Люка Скайуокера мучает разного рода вопросами пытливый мастер Йода. А Йода, как известно, писал код, когда мы еще с вами под стол ходили. Причем кодил он прямо в блокноте без дебаггера, intellij idea и прочей богомерзкой ерунды. Когда же он уставал от нововведений, то просто пихал в дисковод компьютера перфокарты…

Мир тебе, юный Люк. Вопрос мой первый слушай ты.
Читать дальше →

Как быстро разрабатывать сервисы обработки данных в реальном времени с помощью PySpark Structured Streaming и Kafka

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

Данная статья обобщает базовые шаги по установке и началу работы с PySpark Structured Streaming при участии брокера сообщений Kafka. Предполагается, что читатель уже знаком с языком программирования Python и сервисом Kafka.

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

Читать далее

Вредные советы для удалёнки: чего точно НЕ нужно делать, чтобы эффективно и комфортно работать из дома

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

Пришедшая с началом пандемии удалёнка уничтожила главное пространственное ограничение рабочей жизни: необходимость каждый будний день гонять в офис. Некоторые компании сейчас вернулись к прежним строгим условиям, а вот сотрудники ИТ-компании Neoflex, в которой по-прежнему действует гибридный формат работы «офис-удаленка», могут работать из дома, причем делают это в абсолютно разных условиях. Кто-то просто делит небольшую рабочую зону с женой. А кто-то переехал на дачу у леса и теперь вынужден защищать дом от подскакивающих из чащи кабанчиков J. 

Наши коллеги уже опытны в удалёнке и накопили массу наблюдений о ней. Например, о том, как организовать работу эффективно, где бы ты ни находился. И также о том, чего делать точно не нужно, иначе любимая работа на любимой удалёнке станет кошмаром. Полезных советов про удалёнку на Хабре уже много. Так что в этом посте мы для вас собрали вредные. Читайте — и ни в коем случае не следуйте!

Читать далее

Был техспециалистом, стал руководителем: история про отрицание и выгорание с хеппи-эндом

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

Привет, меня зовут Александр. Сейчас я руковожу одной из групп дата-инженеров центра компетенций Big Data Solutions в Neoflex и дополнительно выступаю деливери-менеджером проекта, связанного с дата-инжинирингом. А ещё осенью 2020-го я был уставшим и сердитым дата-инженером, которого добровольно-принудительно перевели на нежеланную управленческую должность. 

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

Это история о том, как я преодолел внутренний протест, профессиональное выгорание и желание уволиться — и вместо этого перезапустил свою карьеру на новом уровне. Моя главная цель — помочь тем, кто оказался в такой же ситуации и уже просто не знает, что делать.

По ходу повествования будут встречаться комментарии от моего непосредственного руководителя Вадима и Светланы, руководителя отдела талантов компании Neoflex. Их дополнения — независимый взгляд со стороны на мою историю.

Читать далее

Создание документации по проекту с помощью Сonfluence API

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

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

Скорее всего вы знаете, что такое Confluence и для чего он нужен. Если нет, коротко скажем, что это пространство/сайт, где вы копите все знания о вашей деятельности в организации. То есть, например, выполняя какой-либо проект, параллельно ведете свой раздел в Confluence, чтобы новый сотрудник смог быстрее в нем разобраться. Также это мощный инструмент для различной аналитики, ведения статистики, но, если вам потребуются дополнительные инструменты и «фишки», нужно будет их оплатить, так как они не будут доступны в бесплатной версии.

Специалист Neoflex из подразделения Big Data Solutions рассказывает о проблеме, с которой он столкнулся:

При введении своего раздела в Confluence стараешься сразу же описывать документацию для клиента (руководство администратора), а вот забрать/экспортировать страницу в Word получается только по одной странице, и приходилось объединять все это руками в один документ. Поэтому я приступил к реализации своего микросервиса по сбору документов и созданию документации.

Зная такие инструменты как Selenium и язык программирования Python, мною была написана рекурсивная функция от нужного отдела по всем его дочерним объектам. В ходе выполнения наткнулся на большое количество проблем: например, отсутствие id в url, принадлежность одной страницы другому разделу, медленная работа, несоответствие стилей и т.д. Вся работа строилась на простом алгоритме: проходить все страницы, сохранять необходимый текст в тегах в html файл для дальнейшего преобразования в DOCX. Почему пришлось отказаться от данного подхода:

Читать далее

Графовые базы данных на примере простых запросов

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

Статья  будет полезна начинающему разработчику или тому, кто хочет расширить свой кругозор практическим знакомством с графовыми базами данных. Часто в аналогичных статьях не хватает либо пошаговой инструкции по установке, либо более детального разъяснения –  как общаться с данными в базе.

Информации по теории графов достаточно много, поэтому в материале будут сугубо прикладные знания, которые существенно облегчат закрепление материала практикой. В данном примере рассматривается работа с локальным экземпляром БД Neo4j. Считаю, что СУБД именно этого вендора позволяет осваивать тему графовых баз данных с достаточно низким порогом входа – нам понадобится только понимание SQL. Иными словами, статья представляет собой краткую сводку/инструкцию о том, какие шаги нужно пройти и что освоить, чтобы начать "играться" с Neo4j на вашем личном ПК или сервере в инфраструктуре вашей компании. Поскольку в этот тип БД заходят специалисты, ранее работавшие с реляционными БД, для облегчения понимания принципов в статье сделан упор на сопоставление языка общения с графовыми базами данных и классическим SQL. Чтобы сделать пример прикладным, в материале приводится  решение типовой бизнес-задачи для графовых БД на простом примере из финансовой предметной области.

Читать далее

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

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


Введение


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

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

Выглядит любопытно? Но что на счёт вышеупомянутой задачи по миграции данных? Давайте разбираться.
Читать дальше →

ksqlDb или SQL как инструмент обработки потоков данных

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

Kafka нельзя назвать новым продуктом на рынке ПО. Прошло примерно 10 лет с того времени, как компания разработчик LinkedIn выпустила его в свет. И хотя к тому времени на рынке уже были продукты со схожей функциональностью, но открытый код и широкая поддержка экспертного сообщества прежде всего в лице Apache Incubator позволила ему быстро встать на ноги, а впоследствии составить серьезную конкуренцию альтернативным решениям.

Традиционно Kafka рассматривался как набор сервисов для приема и передачи данных, позволяющий накапливать, хранить и отдавать данные с крайне низкой задержкой и высокой пропускной способностью. Этакий надежный и быстрый (да и в общем-то наиболее популярный на данный момент) брокер сообщений по этой причине весьма востребован во множестве ETL процессов. Преимущества и возможности Kafka многократно обсуждались, в том числе и на Хабре. К тому же, статей на данную тематику весьма много на просторах интернета. Не будем повторять здесь достоинства Kafk-и, достаточно посмотреть на список организаций, выбравших этот продукт  базовым инструментом для технических решений. Обратимся к официальному сайту, согласно которому на данный момент Kafka используется тысячами компаний, в том числе более 60% компаний из списка Fortune 100. Среди них Box, Goldman Sachs, Target, Cisco, Intuit и другие [1].

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

Читать далее

Визуализация данных с помощью Oracle Apex

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

Oracle Apex – компонент для разработки конечных приложений, входящий в состав поставки СУБД Oracle, позволяющий быстро «доставать» данные из базы и доставлять их через веб-интерфейс конечному пользователю. Как правило, данные для просмотра и редактирования выдаются в табличном виде и Apex предоставляет богатые возможности для настраивания отчета: можно накладывать фильтры, делать сортировку и группировку, скрывать имеющиеся столбцы и добавлять расчетные новые, делать сводные отчеты, выгружать данные в формате csv, pdf и даже Excel. Каждый пользователь может сохранить предпочитаемые им настройки каждого отчета как индивидуально, так и для совместного использования. В таком формате Apex функционирует у большинства наших заказчиков.

Однако мало кто использует довольно широкие возможности Apex’а для построения графиков. Эта тема, на наш взгляд, довольно интересна и мало освещена в интернете.

В этой статье будем предполагать, что читатель имеет представление о разработке приложений с помощью Oracle Apex.

Читать далее

Асимметричный анализ тональности деловых новостей

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

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

Читать далее

Миграция данных из различных RDBMS в HADOOP

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

В статье будет рассмотрен процесс экспорта данных в Hadoop из различных РСУБД посредством фреймворка Spark. Для взаимодействия с фреймворком Spark будет использован язык программирования Python с применением api pySpark.

Читать далее

Neoflex проводит Hiring Week для Java-разработчиков и системных аналитиков

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


С 18 по 24 октября Neoflex приглашает Senior Java-разработчиков и системных аналитиков принять участие в Neoflex Hiring Week. Присоединяйся к нашей команде и получай welcome-бонус в размере одного оклада.

Как принять участие в Neoflex Hiring Week?

  • Заполни заявку на сайте;
  • Получи подтверждение от рекрутера;
  • Пройди техническое собеседование;
  • Прими оффер в течение 48 часов и получи welcome-бонус!
Читать дальше →

Управление сложностью legacy-кода в Big Data проектах с помощью инструмента Datalog

Время на прочтение7 мин
Количество просмотров2.1K
Самый простой Big Data проект сложнее проекта из мира привычного ПО. Имеется ввиду не сложность собственно алгоритмов или архитектуры, но анализа того, что представляет собой проект, как он работает с данными, как собирается та или иная витрина, какие для нее берутся данные.

Например, нужно решить такую задачу:

  1. Загрузить таблицу из Oracle;
  2. Посчитать в ней сумму по какого-нибудь полю, сгруппировав по ключу;
  3. Результат сохранить в витрину в Hive.

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

  • Oracle
  • Apache Sqoop
  • Oozie
  • Apache Spark
  • Hive

Простая задача неожиданно приводит к появлению проекта, включающего три независимых инструмента с тремя независимыми папками исходных файлов. И как понять – что происходит в проекте?

Если рассмотреть более типичный случай, то набор артефактов простого проекта в Big Data представляет собой:

  • SH управляющие файлы;
  • Sqoop скрипты;
  • набор Airflow Dag или Oozie Workflow;
  • SQL скрипты собственно преобразований;
  • Исходники на PySpark или Scala Spark;
  • DDL скрипты создания объектов.

Также, особенностью является то, что если пользоваться Cloudera или Hortonworks, то среда не предоставляет удобных средств разработки и отладки.

Облачные среды, такие как AWS или Azure, предлагают все делать в их оболочке, объединяющей все требуемые артефакты в удобном интерфейсе.

Вот, например, картинка с сайта Microsoft Azure:



Но это если есть AWS или Azure. А если есть только Cloudera?

Как ответить на вопрос – что, собственно, в проекте написано? При этом этот вопрос крайне интересует и заказчика тоже, так как в случае обычного ПО ему все равно то, как всё устроено внутри, а в случае с Big Data заказчику важно понимать, что данные получаются правильно.
В мире обычного программирования есть набор паттернов, подходов, применение которых позволяет структурировать код. А как структурировать код, представляющий из себя зоопарк независимых SQL-файлов, SH-скриптов вперемешку с Oozie Workflow?
Читать дальше →

Энтропия и выявление аномалий сетевого трафика

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


В данной статье Даниил Волков, ведущий эксперт бизнес-направления Data Science компании Neoflex, рассказывает о методах обнаружения сетевых аномалий, основанных на использовании энтропии – основной характеристики систем с точки зрения теории информации. Также он отмечает некоторые способы обнаружения аномалий временных рядов.

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

  • Масштабируемость. Предложенные методы способны использовать агрегированные данные (например, записи Netflow), что делает возможным использование в сколь угодно сложных и высоконагруженных сетях.
  • Чувствительность к изменениям распределений характеристик трафика. Энтропийный подход помогает среагировать на аномалию, и в тех случаях, когда такие классические характеристики трафика, как packets rate (rps) не обнаруживают значимого аномального поведения (т.о., способен выявлять атаки с низким относительным packets rate).
  • Легкость реализации и доступная интерпретация. Быстрая готовность к работе, отсутствие необходимости в данных для обучения и способность находить атаки zero-day.

Сетевые потоки


Итак, предлагаемые системы обнаружения аномалий на основе понятия «энтропия» анализируют сетевые потоки, а не отдельные сетевые пакеты. Определим сетевые потоки (далее просто потоки) как однонаправленную метаинформацию о сетевых пакетах, имеющих одинаковые исходный и целевой IP-адрес и порты, а также тип протокола IP. Важно отметить, что вся сетевая активность в OSI уровня 3 и выше сводится к потокам, т.е. это не только TCP- соединения, но и протоколы без сохранения состояния, такие как UDP и ICMP. Преимущества использования концепции потоков:
Читать дальше →

AWS Control Tower и почему мы его не используем

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


Всем, кто работал с AWS хорошо известно о существовании аккаунтов – учетные записи, в которых, собственно, и происходит работа – выделение ресурсов, разграничение прав доступа и так далее. Часто возникает необходимость создания нескольких аккаунтов – будь то отдельные аккаунты для различных отделов компании или отдельные аккаунты под проекты или даже под различные среды одного проекта (разработка, тестирование, эксплуатация). Для управления аккаунтами в AWS есть сервис AWS Organizations, который позволяет создавать новые аккаунты, распределять ресурсы, оптимизировать оплату счетов посредством настройки единого метода оплаты для всех аккаунтов, создавать группы аккаунтов и применять к ним политики, чтобы эффективно управлять рабочими процессами.

Однако для управления аккаунтами одного сервиса AWS Organizations недостаточно. Есть желание не просто создавать аккаунты, но создавать их так, чтобы они удовлетворяли принятым в компании нормам и политикам, иметь возможность отслеживать состояние созданных аккаунтов, управлять политиками, не редактируя JSON документ, а более удобным способом. Также в случае роста количества аккаунтов в организации понимание того, что возможностей сервиса AWS Organizations не хватает приходит достаточно быстро. И вот тем, кто вступил на этот путь есть два варианта – или использовать инструмент от AWS – Control Tower или разработать собственные скрипты управления. Дальше в статье рассказывается почему мы выбрали второй вариант.

Что такое AWS Control Tower?


Начать стоит с определения AWS Landing Zone – решение, которое помогает пользователям быстро настроить безопасную среду AWS с несколькими аккаунтами основываясь на лучших практиках. Именно оно лежит в основе AWS Control Tower. Как следует из официальной информации, решение это продолжает существовать, но без будущих доработок и новым пользователям настоятельно рекомендуется использовать AWS Control Tower для управления AWS средой с несколькими аккаунтами.
Читать дальше →

Настройка DBT + Spark для кластера Cloudera on-prem

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


Для управления кодом Spark-приложений мы используем подход, описанный в предыдущей статье.

Речь идет об управлении качеством кода при разработке Spark ETL, чтобы не превратить работу над проектом в полет души, пугающий даже автора. В результате Spark ETL application выглядит просто как последовательность Spark SQL-запросов. Сама ETL-трансформация описывается как объект в отдельном файле конфигурации.
Читать дальше →

Управление кодом Spark-приложений

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


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

Как можно управлять сложностью проекта по разработке ETL-трансформаций на Spark?

Тут все не так просто.

Как это выглядит в жизни? Заказчик предлагает создать приложение, собирающее витрину. Вроде бы надо выполнить через Spark SQL код и сохранить результат. В ходе разработки выясняется, что для сборки этой витрины требуется 20 источников данных, из которых 15 похожи, остальные нет. Эти источники надо объединить. Далее выясняется, что для половины из них надо писать собственные процедуры сборки, очистки, нормализации.

И простая витрина после детального описания начинает выглядеть примерно так:



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

Spark schemaEvolution на практике

Время на прочтение8 мин
Количество просмотров3.5K
Уважаемые читатели, доброго дня!

В данной статье ведущий консультант бизнес-направления Big Data Solutions компании «Неофлекс», подробно описывает варианты построения витрин переменной структуры с использованием Apache Spark.

В рамках проекта по анализу данных, часто возникает задача построения витрин на основе слабо структурированных данных.

Обычно это логи, или ответы различных систем, сохраняемые в виде JSON или XML. Данные выгружаются в Hadoop, далее из них нужно построить витрину. Организовать доступ к созданной витрине можем, например, через Impala.

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

Например, сегодня логируется такой ответ:

{source: "app1", error_code: ""}

а завтра от этой же системы приходит такой ответ:

{source: "app1", error_code: "error", description: "Network error"}

В результате в витрину должно добавиться еще одно поле — description, и придет оно или нет, никто не знает.

Задача создания витрины на таких данных довольно стандартная, и у Spark для этого есть ряд инструментов. Для парсинга исходных данных есть поддержка и JSON, и XML, а для неизвестной заранее схемы предусмотрена поддержка schemaEvolution.

С первого взгляда решение выглядит просто. Надо взять папку с JSON и прочитать в dataframe. Spark создаст схему, вложенные данные превратит в структуры. Далее все нужно сохранить в parquet, который поддерживается в том числе и в Impala, зарегистрировав витрину в Hive metastore.

Вроде бы все просто.
Читать дальше →

Kubernetes на собственной инфраструктуре: «за» и «против» приватных облаков

Время на прочтение9 мин
Количество просмотров7.4K
Уважаемые читатели, доброго дня!

В данной статье Игорь Котенко, главный архитектор компании «Неофлекс», делится опытом развертывания платформы контейнеризации на инфраструктуре предприятия.
Читать дальше →

Запускаем Apache Spark на Kubernetes

Время на прочтение22 мин
Количество просмотров17K
Дорогие читатели, доброго дня. Сегодня поговорим немного про Apache Spark и его перспективы развития.



В современном мире Big Data Apache Spark является де факто стандартом при разработке задач пакетной обработки данных. Помимо этого, он также используется для создания стриминговых приложений, работающих в концепции micro batch, обрабатывающих и отгружающих данные маленькими порциями (Spark Structured Streaming). И традиционно он являлся частью общего стека Hadoop, используя в качестве менеджера ресурсов YARN (или, в некоторых случаях, Apache Mesos). К 2020 году его использование в традиционном виде для большинства компаний находится под большим вопросом в виду отсутствия приличных дистрибутивов Hadoop — развитие HDP и CDH остановлено, CDH недостаточно проработан и имеет высокую стоимость, а остальные поставщики Hadoop либо прекратили своё существование, либо имеют туманное будущее. Поэтому всё больший интерес у сообщества и крупных компаний вызывает запуск Apache Spark с помощью Kubernetes — став стандартом в оркестрации контейнеров и управлении ресурсами в приватных и публичных облаках, он решает проблему с неудобным планированием ресурсов задач Spark на YARN и предоставляет стабильно развивающуюся платформу с множеством коммерческих и открытых дистрибутивов для компаний всех размеров и мастей. К тому же на волне популярности большинство уже успело обзавестись парой-тройкой своих инсталляций и нарастить экспертизу в его использовании, что упрощает переезд.

Начиная с версии 2.3.0 Apache Spark обзавёлся официальной поддержкой запуска задач в кластере Kubernetes и сегодня, мы поговорим о текущей зрелости данного подхода, различных вариантах его использования и подводных камнях, с которыми предстоит столкнуться при внедрении.
Читать дальше →

Информация

В рейтинге
988-й
Работает в
Зарегистрирован
Активность