Я – Дата Инженер – Telegram
Я – Дата Инженер
4.25K subscribers
342 photos
33 videos
12 files
243 links
💻 Как войти в IT?
💵 Как стать Data Engineer
🗄 Что такое Big Data и кто ей управляет?
_____________________________
Автор @halltape
Все вопросы по рекламе @k_shredinger
Download Telegram
Forwarded from Время Валеры
Разбирал недавно код нескольких дата пайплайнов, в попытке понять почему же на них тратится так много денег
Ответ был найден быстро, проблему вызывала следующая строчка

df.coalesce(1).write.parquet

Соотвественно, машина арендовалась полностью, а использовалось только одно ядро/поток/воркер из как минимум 16 ( а то и 32 или 64 - зависит от типа инстанса). Вместо того чтобы выдать 16 файлов, выдавался один, но в 16 раз медленее. Для небольших файлов это проблема несущественная, для всего остального - серьезный косяк.

Так, многопоточность, в очередной раз спасла мир

Возможно я что-то упускаю и гнать все через 1 воркер это best practice?
🔥42💯1
🧐 HDFS Репликация блоков!

Итак повторим. Файлы делятся на блоки, но не всегда одинакового размера. Оптимальный размер 128Мб.

Вот есть у нас диск. Он сгорел. Блок, который там был записан, уничтожен бесследно. Мы не потеряли файл, но потеряли его часть. А как сделать так, чтобы вообще не было возможности потерять данные, даже при лобовом попадании торпеды в диск?

Можно реплицировать блоки. Например файл 200 Мб. Он поделился на 128Мб и на 72Мб. Плюс ко всему в HDFS на эти два блока создадутся их копии. Если коэффициент репликации в HDFS = 3, то будет три копии на каждый блок. Итого ШЕСТЬ блоков. И каждый из них будет записан по определенной логике.

Первая реплика блока пишется либо на случайно выбранный сервер (узел), либо на тот, где запущен клиентский процесс управления (об этом в следующих постах). Вторая реплика пишется в соседний серверный шкаф (сегмент), а третья пишется в этот же шкаф, но соседний сервер (узел). Писать реплики в соседний дата центр не разумно, так как пропускная способность между двумя узлами внутри шкафа НАМНОГО БОЛЬШЕ, чем между дата центрами.

Коэффициент репликации тоже можно выставлять любой. И например при репликации = 10, первые три реплики будут раскидываться, как описано ранее, а вот последующие HDFS будет равномерно распределять по серверам, избегая записи реплик в рамках одного сегмента. Более того, в HDFS существует процесс Balancer, который может в фоновом режиме перетасовывать блоки для более равномерного распределения.

#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥126💯2🆒21
🧐 HDFS Топология сети!

Итак повторим. Теперь блоки от файла лежат не только по разным местам, но и еще имеют каждый свою копию.

Когда HDFS разворачивается на кластере серверов, то системе надо знать схему подключения всех серверов и шкафов между собой. Если наши блоки хранятся в разных местах, то надо понимать, где именно + знать, где хранятся копии блоков и так далее.
Плюс ко всему, когда мы будем производить вычисления, системе лучше знать, откуда эффективнее брать данные. Ведь пропускная способность между двумя серверами (узлами) в рамках одного шкафа (сегмента) намного больше, чем между узлами соседних сегментов. Соответственно и скорость будет ВЫШЕ.

Почему пропускная способность между двумя шкафами ниже, чем между серверов?
Два сервера в одном шкафу соединены ОДНИМ коммутатором. Короткий путь.
А вот если соединять два сервера разных шкафов, тогда надо будет подняться на уровень выше и дойти до коммутатора, который соединяет эти два серверных шкафа.


Правило следующее: Расстояние между узлами = сумма расстояний до общего предка

#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
9💯4🔥3👍1
👩‍💻 Решить нельзя оставить

Задача:
Вывести uuid, product_id, где кол-во строк у одного product_id > 1.
НЕ ИСПОЛЬЗУЯ ПОДЗАПРОСЫ

Ответ:
┌──────┐
│ AAA │ 125 |
├──────┤
│ BBB │ 125 |
└──────┘
Примеры с подзапросами для этой задачи
Обычный подзапрос
SELECT
uuid,
project_id
FROM halltape
WHERE project_id IN (SELECT
project_id
FROM halltape
GROUP BY project_id
HAVING COUNT(uuid) > 1)

Оконная функция
SELECT
uuid,
project_id
FROM (SELECT
uuid,
count(uuid) OVER(PARTITION BY project_id) AS total_uuid,
project_id
FROM halltape)
WHERE total_uuid > 1;


Решения без подзапросов я не смог найти. С коллегами пробовали разные ухищрения, но все равно упирались в то, что нужен подзапрос. Но можете также предложить еще варианты решения этой задачи. Может через джойны можно найти что-то.. Либо предложите решение этой задачи более коротким способом и не таким нагроможденным..

#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52🤔2💯1
🧐 HDFS NameNode - DataNode - ClientNode!

Итак повторим. HDFS знает топологию сети. Это позволяет системе знать, как устроено "дерево связей между серверами"

NameNode - DataNode - ClientNode - это все сервера. Но каждый из них выполняет свои функции.

NameNode - хранит информацию о местонахождении блоков, снимки файловой системы, разрешения и так далее. Никакие файлы этот узел не хранит! По сути справочник

DataNode - хранит наши блоки + метаинформацию к ним.

ClientNode - посредник между NameNode и DataNode. На этом сервере работаем мы. Отсюда мы посылаем команды на запись, чтение и так далее.

Когда мы говорили о репликах, было сказано, что первый блок записывается на том сервере, где запущен "главный процесс управления". Имелся в виду именно ClientNode. Т.е. первый блок пишется локально на тот узел, где развернут клиент. Если клиент развернут локально у нас на персональном компьютере, то первый блок файла пишется на случайном сервере.

По факту HDFS состоит из одной NameNode (на самом деле есть еще одна, типа страхующая), одной ClientNode и сколь угодно DataNode. При разворачивании HDFS можно указать кол-во DataNode, которое вам требуется. Также в HDFS возможно увеличить кол-во NameNode, когда памяти на первой уже не хватает - это еще называют NameNode Federation (об этом в след постах).

Во все эти Node можно зайти физически и покопаться в их файлах. В DataNode реально можно увидить блоки файлов. Внутри все Node выглядят, как обычная Linux система с директориями и файлами. Единственное, отличаются команды и выглядят типа:

hdfs dfs -ls

hadoop fs -ls


#hdfs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💯3👨‍💻2
🥲 Давайте созвонимся!

ETL процессы - это просто умное слово, обозначающее НИЧЕГО?
Где этот Hadoop находится вообще? Это что?
Что такое Spark? Это sql или pyhton?
Чем реально занимается каждый день дата инженер? Он вообще пишет код или что?
Что надо знать, а на что можно забить junior DE?
Как попасть на первую работу?
Какие пет проекты делать?
И так далее...

Идея родилась в сообществе datalearn.

Соберемся вместе в одно время и обсудим даже самые неловкие вопросы!

Ваши вопросы можете написать в комментариях, чтобы я подготовил на них ответы.
Возможно кто-то из вас уже работает DE и готов поделиться тем, чем вы реально занимаетесь на работе. Особенно, если вы работаете с облаками. Я тут например ничего про них не знаю. Буду вести запись. Созвон сделаем в SberJazz или Телеграме.

Ниже предварительное голосование за день недели и время!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4😁1💯1🆒1
Live stream scheduled for
🔴 ВСЕ НА СОЗВОН 25 ФЕВРАЛЯ 14:00 [ВОСКРЕСЕНЬЕ]

В воскресенье в 14:00 заходим и подключаемся на встречу в канале Я – Дата Инженер.
Отвечу на вопросы, расскажу про DE, послушаем ваши истории. Сделаю запись встречи.

Видеовстреча будет здесь.

https://news.1rj.ru/str/halltape_data
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👏53💯2
🔴 Если завтра на встречу никто не придет, то мне придется записать такое же видео!

➡️ 25 февраля 14:00

Созвон в этом канале! Сверху можете видеть кнопку созвона.

Ссылка на созвон

Расскажу, что я делаю на работе, что нужно знать, а на что можно забить. Отвечу на вопросы и послушаем вас!


Будет желание, покажу, как работает docker на примере моего телеграм бота.

Никакого душнилова! Максимально изи подход!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18💯4🤝2
Live stream scheduled for
Live stream finished (37 minutes)
🗣 Спасибо всем, кто был!

Запись основного и telegram bot стрима загружу сегодня!
Также скину ПРЕЗЕНТАЦИЮ со стрима!

Ссылки на pandas, spark, airflow, docker и так далее тоже подготовлю. В комментариях подкинули класные ресурсы.
Соберу все в одно место и сделаю пост!

Всем хорошего вечера! Сегодня можно и отдохнуть от кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥28🔥13
СТРИМ | Data Engineer

🔽 Ссылка на ВИДЕО🔽
https://youtu.be/75Vu8NqH_cU

Большой видос о том, кто такие Data Engineer, что следует знать и как ими стать? В видео рассказал о себе, о том, как учился, как справлялся с трудностями и многое другое. Также ответил на вопросы и послушали мнения других участников. Видео получилось длинным и насыщенным.

Для тех, кого интересуют определенные темы, рекомендую использовать нейросеть от Yandex (не реклама, а могла бы быть😂)

🔽 Ссылка на ВИДЕО🔽
https://youtu.be/75Vu8NqH_cU
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥10🍾7🦄2❤‍🔥1
СТРИМ | Telegram bot 😢 | Docker 👩‍💻

Видео со стрима про docker и telegram бота. Показываю самую базу про то, как работает бот в составе docker контейнера. Запускаем с помощью терминала и docker desktop. Видос чисто ознакомительный. Для тех, кто хочет покапаться в коде и самостоятельно запустить бота – ссылка на исходный код на моем github

🔽 Само видео со СТРИМА 🔽
https://youtu.be/Cw_c_f_Mj3Y
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤‍🔥2💯2👾2
🫥 Материал со СТРИМОВ!

Каналы, где постятся вакансии на DE и других:

🟡https://news.1rj.ru/str/analysts_hunter
🟡https://news.1rj.ru/str/addlist/UDbX0oiQVE03ZmYy
🔴https://news.1rj.ru/str/data_engineer_jobs

Все полезные ссылки из комментариев:

👩‍💻 Docker [3 часа Youtube]
👩‍💻 Docker [40 минут Youtube]
👩‍💻 Docker [Telegram]

Airflow [Youtube канал English]

🤖 Linux команды [Telegram]

📝 Регулярки [Сайт]
📝 Регулярки [Хабр]

💎 Слитые курсы [Telegram]
💎 Roadmap [Karpov courses]

🥲 Задача на палиндром)
 python
def ispalindrom(text):
return 'палиндром' if text == text[::-1] else 'не палиндром'


Класное сообщение
То что хотел озвучить я, но не удалось. Получайте опыт и боль собесов. Этот опыт учит, закаляет. Помните вакансий, компаний на рынке хватает. Столько же желающих устроиться. Не всегда всё проходит быстро и гладко, но без этого никак. Я лично покинул направление ИБ и перешёл в сторону ИТ. Было не так просто как казалось на первый взгляд, но оно того стоило. Есть цель будет желание, нет цели, значит, не будет результата. Всем удачи 🤝
А ещё меня на собесах выручала фраза при отсутствии опыта в чем-то: "Дайте мне 1-3 дня и я смогу изучить это для того чтобы изучить и начать применять это. Дайте мне неделю и я не только разберусь, но и научу Вас"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥107❤‍🔥2