[Начал год с изучения highload-систем]
Что это такое? Какие виды бывают? С какими проблемами и задачами сталкивались и сталкиваются разработчики? Какие есть решения? Для чего они создаются? Из каких базовых механизмов строятся такие системы?
Это обширная, крайне важная и очень интересная тема. Решил в этом году копнуть в глубину данного вопроса. Тем более я сейчас сталкиваюсь с такими системами ежедневно на работе.
Например, выделяют 2 класса таких систем:
1) Приложения, высоконагруженные данными (data-intensive applications, DIA) - класс ситуаций, когда проблемой становится объём, качество или сложность данных, обрабатываемых системой.
2) Приложения, высоконагруженные вычислениями (compute-intensive, CIA) - класс ситуаций, когда проблемой становится нагрузка на процессоры.
--
Для погружения в тему взял книгу "Высоконагруженные приложения. Программирование, масштабирование, поддержка" Мартин Клеппман.
Что это такое? Какие виды бывают? С какими проблемами и задачами сталкивались и сталкиваются разработчики? Какие есть решения? Для чего они создаются? Из каких базовых механизмов строятся такие системы?
Это обширная, крайне важная и очень интересная тема. Решил в этом году копнуть в глубину данного вопроса. Тем более я сейчас сталкиваюсь с такими системами ежедневно на работе.
Например, выделяют 2 класса таких систем:
1) Приложения, высоконагруженные данными (data-intensive applications, DIA) - класс ситуаций, когда проблемой становится объём, качество или сложность данных, обрабатываемых системой.
2) Приложения, высоконагруженные вычислениями (compute-intensive, CIA) - класс ситуаций, когда проблемой становится нагрузка на процессоры.
--
Для погружения в тему взял книгу "Высоконагруженные приложения. Программирование, масштабирование, поддержка" Мартин Клеппман.
👍9
[SQL, Spark, брокеры сообщений или итоги аттестации]
На прошлой неделе завершилась моя первая аттестация с прицелом на повышение грейда внутри компании.
Аттестацию проходил по роли Инженер данных.
По итогам 2-х технических интервью грейд повысить не удалось.
Но, у меня есть 2 месяца, чтобы подтянуть следующие темы:
- SQL (практика)
- Spark (больше теория)
- Брокеры сообщений (теория)
Через 2 месяца пробую пройти тех. интервью еще раз.
———
По всем темам у меня есть материалы для подготовки.
Планирую каждый день:
- решать задачи по SQL,
- изучать предложенные материалы по Spark и брокерам сообщений.
На прошлой неделе завершилась моя первая аттестация с прицелом на повышение грейда внутри компании.
Аттестацию проходил по роли Инженер данных.
По итогам 2-х технических интервью грейд повысить не удалось.
Но, у меня есть 2 месяца, чтобы подтянуть следующие темы:
- SQL (практика)
- Spark (больше теория)
- Брокеры сообщений (теория)
Через 2 месяца пробую пройти тех. интервью еще раз.
———
По всем темам у меня есть материалы для подготовки.
Планирую каждый день:
- решать задачи по SQL,
- изучать предложенные материалы по Spark и брокерам сообщений.
👍7👏1
2 часа ночи. Семья спит.
А у меня:
- декларативная вычислительная модель;
- модель обмена сообщениями (модель акторов);
А у меня:
- декларативная вычислительная модель;
- модель обмена сообщениями (модель акторов);
🔥8🤯2
[Мои итоги первого квартала 2024 года]
1) Познакомился со следующими параллельными моделями программирования:
- декларативная параллельная модель;
- модель обмена сообщщениями;
- параллельная модель с поддержкой состояния;
- распределенная вычислительная модель (в процессе);
2) Прочитал "Компьютерные сети" Таненбаум Э.;
3) Прочитал "Современные операционные системы", Таненбаум Э.;
4) Изучил С;
5) Написал свою виртуальную стековую машину;
На работе:
6) Получил премию по итогам прошлого года (никогда ранее такие премии не получал);
Ради шутки могу сравнить это только со страховой выплатой за поломанные руки, которую получил в прошлом году)))
А так первый квартал выдался сильно насыщенным.
7) Съездили с семьей в Сочи, катались на велосипеде по Олимпийскому парку.
8) Закрыл одну из целей на год - купил машину в семью (б/у). Последний раз у меня машина была 7 лет назад).
9) Весь квартал ходил в зал с тренером два раза в неделю (результат огонь!).
10) Важно! Оборудовал себе рабочее место дома (стол, кресло, хороший монитор).
А как у вас прошел первый квартал?
1) Познакомился со следующими параллельными моделями программирования:
- декларативная параллельная модель;
- модель обмена сообщщениями;
- параллельная модель с поддержкой состояния;
- распределенная вычислительная модель (в процессе);
2) Прочитал "Компьютерные сети" Таненбаум Э.;
3) Прочитал "Современные операционные системы", Таненбаум Э.;
4) Изучил С;
5) Написал свою виртуальную стековую машину;
На работе:
6) Получил премию по итогам прошлого года (никогда ранее такие премии не получал);
Ради шутки могу сравнить это только со страховой выплатой за поломанные руки, которую получил в прошлом году)))
А так первый квартал выдался сильно насыщенным.
7) Съездили с семьей в Сочи, катались на велосипеде по Олимпийскому парку.
8) Закрыл одну из целей на год - купил машину в семью (б/у). Последний раз у меня машина была 7 лет назад).
9) Весь квартал ходил в зал с тренером два раза в неделю (результат огонь!).
10) Важно! Оборудовал себе рабочее место дома (стол, кресло, хороший монитор).
А как у вас прошел первый квартал?
🔥18
[C 1 апреля]
Спешу сообщить, что в первом квартале я был не так хорош и пункты со 2-го по 5-й не являются действительными. К сожалению.
Но я хочу в некотором будущем поработать над ними.
Спешу сообщить, что в первом квартале я был не так хорош и пункты со 2-го по 5-й не являются действительными. К сожалению.
Но я хочу в некотором будущем поработать над ними.
😁8👍1
[Цели на 2 квартал]
Хочу попробовать вернуться к формату ежедневных отчетов в канале.
Не знаю, что из этого выйдет. Боюсь облажаться. Но стоит попробовать.
Сегодня хочу опубликовать некоторые цели на квартал.
1) Пройти аттестацию:
- изучить SPARK;
- изучить брокеры сообщений;
- подтянуть SQL;
2) Завершить знакомство с параллельными моделями программирования;
3) Доп. активности:
- прочитать "Операционные системы. Основы и принципы" Х. Дейтел
Нашел 2 издания: 1987-го и 2009-го. Было бы интересно сравнить). А потом хотел бы перейти к Таненбауму)
---
Сегодня в рамках знакомства с распределенной вычислительной моделью изучал модель отказа/сбоя:
- полный и частичный отказ,
- простые случаи обработки сбоев,
- синхронное и асинхронное обнаружение сбоев,
- обработчик бездействия сети,
- тайм-ауты и что с ними делать.
👨💻
Хочу попробовать вернуться к формату ежедневных отчетов в канале.
Не знаю, что из этого выйдет. Боюсь облажаться. Но стоит попробовать.
Сегодня хочу опубликовать некоторые цели на квартал.
1) Пройти аттестацию:
- изучить SPARK;
- изучить брокеры сообщений;
- подтянуть SQL;
2) Завершить знакомство с параллельными моделями программирования;
3) Доп. активности:
- прочитать "Операционные системы. Основы и принципы" Х. Дейтел
Нашел 2 издания: 1987-го и 2009-го. Было бы интересно сравнить). А потом хотел бы перейти к Таненбауму)
---
Сегодня в рамках знакомства с распределенной вычислительной моделью изучал модель отказа/сбоя:
- полный и частичный отказ,
- простые случаи обработки сбоев,
- синхронное и асинхронное обнаружение сбоев,
- обработчик бездействия сети,
- тайм-ауты и что с ними делать.
👨💻
👍8👏1
[Spark и не только]
Сегодня начал просмотр материалов по Spark. Узнал немного историю создания и некоторую базу.
Apache Spark ™ — это многоязычный движок для выполнения обработки данных в локальном или кластерном режимах со встроенными модулями для SQL, потоковой передачи, машинного обучения и обработки графов.
В кластерном режиме приложения Spark выполняются как независимые наборы процессов, координируемые объектом SparkContext в основной программе (называемым программой-драйвером).
Об этой архитектуре следует отметить несколько полезных вещей:
1) Каждое приложение получает свои собственные процессы-исполнители, которые работают на протяжении всей работы приложения и выполняют задачи в нескольких потоках. Преимущество этого заключается в изоляции приложений друг от друга как со стороны планирования (каждый драйвер планирует свои собственные задачи), так и со стороны исполнителя (задачи из разных приложений выполняются в разных JVM). Однако это также означает, что данные не могут совместно использоваться различными приложениями Spark (экземплярами SparkContext) без их записи во внешнюю систему хранения.
2) Spark не зависит от базового менеджера ресурсов. Поскольку он может создавать процессы-исполнители и они взаимодействуют друг с другом, его относительно легко запустить даже в менеджере ресурсов, который также поддерживает другие приложения (например, YARN/Kubernetes).
3) Программа-драйвер должна прослушивать и принимать входящие соединения от своих исполнителей на протяжении всего своего существования (например, см. spark.driver.port в разделе конфигурации сети). Таким образом, программа-драйвер должна иметь сетевую адресацию с рабочих узлов.
4) Поскольку драйвер планирует задачи в кластере, его следует запускать рядом с рабочими узлами, желательно в той же локальной сети. Если вы хотите отправлять запросы в кластер удаленно, лучше открыть RPC для драйвера и заставить его отправлять операции поблизости, чем запускать драйвер далеко от рабочих узлов.
———
По распределенной вычислительной модели знакомился с:
- вопросом безопасности распределенных систем;
- общей схемой разработки распределенного приложения;
———
"Операционные системы. Основы и принципы" Х. Дейтел — 2,5%
Сегодня начал просмотр материалов по Spark. Узнал немного историю создания и некоторую базу.
Apache Spark ™ — это многоязычный движок для выполнения обработки данных в локальном или кластерном режимах со встроенными модулями для SQL, потоковой передачи, машинного обучения и обработки графов.
В кластерном режиме приложения Spark выполняются как независимые наборы процессов, координируемые объектом SparkContext в основной программе (называемым программой-драйвером).
Об этой архитектуре следует отметить несколько полезных вещей:
1) Каждое приложение получает свои собственные процессы-исполнители, которые работают на протяжении всей работы приложения и выполняют задачи в нескольких потоках. Преимущество этого заключается в изоляции приложений друг от друга как со стороны планирования (каждый драйвер планирует свои собственные задачи), так и со стороны исполнителя (задачи из разных приложений выполняются в разных JVM). Однако это также означает, что данные не могут совместно использоваться различными приложениями Spark (экземплярами SparkContext) без их записи во внешнюю систему хранения.
2) Spark не зависит от базового менеджера ресурсов. Поскольку он может создавать процессы-исполнители и они взаимодействуют друг с другом, его относительно легко запустить даже в менеджере ресурсов, который также поддерживает другие приложения (например, YARN/Kubernetes).
3) Программа-драйвер должна прослушивать и принимать входящие соединения от своих исполнителей на протяжении всего своего существования (например, см. spark.driver.port в разделе конфигурации сети). Таким образом, программа-драйвер должна иметь сетевую адресацию с рабочих узлов.
4) Поскольку драйвер планирует задачи в кластере, его следует запускать рядом с рабочими узлами, желательно в той же локальной сети. Если вы хотите отправлять запросы в кластер удаленно, лучше открыть RPC для драйвера и заставить его отправлять операции поблизости, чем запускать драйвер далеко от рабочих узлов.
———
По распределенной вычислительной модели знакомился с:
- вопросом безопасности распределенных систем;
- общей схемой разработки распределенного приложения;
———
"Операционные системы. Основы и принципы" Х. Дейтел — 2,5%
🔥3
[Заканчиваю знакомство с распределенной вычислительной моделью]
Тема крайне интересная и довольно сложная. Уверен, что буду возвращаться к ней еще много раз и буду изучать вглубь.
Было интересно посмотреть в чем разница с параллельной моделью программирования и в чем распределенная модель считается сложнее.
Также узнал о:
- 4-х типах распределенных систем;
- сущностях программы с состоянием, без состояния и с однократным присваиванием;
- видах распределенного поведения;
- открытом и закрытом распределенном вычислениях;
- способах именования объектов (ссылки, имена, тикеты, url);
- распределенной блокировке;
- мобильных (кэшированных) объектах, стационарных и асинхронных;
- распределенных протоколах;
- распределенном алгоритме унификации для dataflow-переменных и потоков;
- ленивом и жадном связывании;
- модели отказов/сбоев;
- вопросах безопасности распределенных систем;
———
"Операционные системы. Основы и принципы" Х. Дейтел — 4,3% (+1,7%)
Тема крайне интересная и довольно сложная. Уверен, что буду возвращаться к ней еще много раз и буду изучать вглубь.
Было интересно посмотреть в чем разница с параллельной моделью программирования и в чем распределенная модель считается сложнее.
Также узнал о:
- 4-х типах распределенных систем;
- сущностях программы с состоянием, без состояния и с однократным присваиванием;
- видах распределенного поведения;
- открытом и закрытом распределенном вычислениях;
- способах именования объектов (ссылки, имена, тикеты, url);
- распределенной блокировке;
- мобильных (кэшированных) объектах, стационарных и асинхронных;
- распределенных протоколах;
- распределенном алгоритме унификации для dataflow-переменных и потоков;
- ленивом и жадном связывании;
- модели отказов/сбоев;
- вопросах безопасности распределенных систем;
———
"Операционные системы. Основы и принципы" Х. Дейтел — 4,3% (+1,7%)
🔥5
———
"Операционные системы. Основы и принципы" Х. Дейтел — 17,2% (+12,9%)
"Операционные системы. Основы и принципы" Х. Дейтел — 17,2% (+12,9%)
👍5
[Про жизнь]
Жизнь - интересная, непредсказуемая, удивительная штука, которая с завидной регулярностью заставляет пересмотреть некоторые свои взгляды на 180 градусов.
Спустя годы выясняется, что многие принципы, которые ты считал единственно верными, оказываются ошибочными и в корне неверными. То, что ты ранее считал ужасным, неправильным, является единственно верным.
Осознание данных фактов бывает крайне неприятным процессом. Но тут ты либо признаешь это и делаешь работу над ошибками, либо ты теряешь всё.
Жизнь - интересная, непредсказуемая, удивительная штука, которая с завидной регулярностью заставляет пересмотреть некоторые свои взгляды на 180 градусов.
Спустя годы выясняется, что многие принципы, которые ты считал единственно верными, оказываются ошибочными и в корне неверными. То, что ты ранее считал ужасным, неправильным, является единственно верным.
Осознание данных фактов бывает крайне неприятным процессом. Но тут ты либо признаешь это и делаешь работу над ошибками, либо ты теряешь всё.
💯13❤2
[Что такое Data Lake?]
Привет, друзья! Сегодня хочу рассказать о Data Lake, одном из ключевых компонентов в современной работе с большими данными.
Data Lake — это хранилище, которое позволяет хранить огромное количество структурированных и неструктурированных данных. В отличие от традиционных баз данных, Data Lake позволяет загружать данные в их оригинальном формате, а затем обрабатывать и анализировать их по мере необходимости.
Основные преимущества Data Lake:
Гибкость: можно хранить любые данные в любом формате.
Масштабируемость: легко справляется с увеличением объема данных.
Экономичность: хранение данных в сыром виде обходится дешевле.
Почему Data Lake так популярен:
Разнообразие данных: Современные компании работают с огромным количеством разнообразных данных, включая логи, социальные медиа, данные IoT и многое другое. Data Lake позволяет легко хранить и анализировать все эти данные в одном месте.
Гибкость анализа: Data Lake поддерживает различные аналитические инструменты и технологии, включая машинное обучение, аналитические платформы и SQL-запросы. Это позволяет аналитикам и разработчикам быстро адаптироваться к новым задачам и требованиям.
Поддержка масштабных данных: В эпоху больших данных возможность быстро масштабировать хранилище данных становится критически важной. Data Lake обеспечивает высокую масштабируемость без значительных затрат на инфраструктуру.
Быстрое внедрение инноваций: Возможность быстро интегрировать новые технологии и подходы к обработке данных делает Data Lake идеальным решением для компаний, стремящихся к инновациям.
Основные недостатки Data Lake:
Сложность управления: Без надлежащей структуры и управления Data Lake может превратиться в "болото данных" (data swamp), где трудно найти нужные данные.
Проблемы безопасности: Хранение большого объема данных в одном месте требует усиленных мер безопасности для защиты от утечек и несанкционированного доступа.
Требования к знаниям: Эффективное использование Data Lake требует знаний и опыта в управлении данными и аналитике, что может быть проблемой для компаний с ограниченными ресурсами.
Качество данных: Поскольку данные хранятся в их сыром виде, может возникнуть проблема с обеспечением их качества и консистентности.
———
В следующем посте расскажу, какие инструменты используются для управления Data Lake и как они помогают решать повседневные задачи.
#BigData #DataLake #Python #IT
Привет, друзья! Сегодня хочу рассказать о Data Lake, одном из ключевых компонентов в современной работе с большими данными.
Data Lake — это хранилище, которое позволяет хранить огромное количество структурированных и неструктурированных данных. В отличие от традиционных баз данных, Data Lake позволяет загружать данные в их оригинальном формате, а затем обрабатывать и анализировать их по мере необходимости.
Основные преимущества Data Lake:
Гибкость: можно хранить любые данные в любом формате.
Масштабируемость: легко справляется с увеличением объема данных.
Экономичность: хранение данных в сыром виде обходится дешевле.
Почему Data Lake так популярен:
Разнообразие данных: Современные компании работают с огромным количеством разнообразных данных, включая логи, социальные медиа, данные IoT и многое другое. Data Lake позволяет легко хранить и анализировать все эти данные в одном месте.
Гибкость анализа: Data Lake поддерживает различные аналитические инструменты и технологии, включая машинное обучение, аналитические платформы и SQL-запросы. Это позволяет аналитикам и разработчикам быстро адаптироваться к новым задачам и требованиям.
Поддержка масштабных данных: В эпоху больших данных возможность быстро масштабировать хранилище данных становится критически важной. Data Lake обеспечивает высокую масштабируемость без значительных затрат на инфраструктуру.
Быстрое внедрение инноваций: Возможность быстро интегрировать новые технологии и подходы к обработке данных делает Data Lake идеальным решением для компаний, стремящихся к инновациям.
Основные недостатки Data Lake:
Сложность управления: Без надлежащей структуры и управления Data Lake может превратиться в "болото данных" (data swamp), где трудно найти нужные данные.
Проблемы безопасности: Хранение большого объема данных в одном месте требует усиленных мер безопасности для защиты от утечек и несанкционированного доступа.
Требования к знаниям: Эффективное использование Data Lake требует знаний и опыта в управлении данными и аналитике, что может быть проблемой для компаний с ограниченными ресурсами.
Качество данных: Поскольку данные хранятся в их сыром виде, может возникнуть проблема с обеспечением их качества и консистентности.
———
В следующем посте расскажу, какие инструменты используются для управления Data Lake и как они помогают решать повседневные задачи.
#BigData #DataLake #Python #IT
👍6❤2🔥1
[Важность контроля доступа к разделяемым объектам]
Привет, друзья! Сегодня хочу поделиться интересным примером из книги "Операционные системы. Основы и принципы" Х. Дейтел. Этот пример демонстрирует важность контроля доступа к разделяемым объектам в параллельных потоках. Несоблюдение этого правила может привести к непредсказуемым результатам работы программы.
Код по ссылке: https://github.com/avagners/algorithms_and_data_structures/blob/main/algorithms/asynchronous_concurrent_execution/unsynchronized_buffer.py
Этот код создает два потока: производитель (Producer) и потребитель (Consumer), которые работают с общим ресурсом - буфером (Buffer). Производитель генерирует данные и добавляет их в буфер, а потребитель извлекает данные из буфера и суммирует их.
Ключевые моменты:
Buffer: Хранит данные в виде множества (set). Методы set и get используются для добавления и извлечения данных.
Producer: В цикле генерирует числа от 1 до 4, добавляет их в буфер и выводит сообщение о записи.
Consumer: В цикле извлекает числа из буфера, суммирует их и выводит сообщение о чтении.
Проблемы многопоточности
Каждый запуск этого кода будет выдавать непредсказуемый результат. Это происходит из-за того, что доступ к буферу не синхронизирован. Потоки могут одновременно пытаться читать и записывать данные, что приводит к ошибкам и некорректным результатам.
Важно помнить:
При работе с параллельными потоками необходимо тщательно контролировать доступ к разделяемым ресурсам. Это можно сделать с помощью механизмов синхронизации, таких как блокировки (lock), семафоры и другие средства.
В следующих постах я покажу и расскажу об алгоритмах взаимоисключений.
#Python #Multithreading #Concurrency #Programming #IT
Привет, друзья! Сегодня хочу поделиться интересным примером из книги "Операционные системы. Основы и принципы" Х. Дейтел. Этот пример демонстрирует важность контроля доступа к разделяемым объектам в параллельных потоках. Несоблюдение этого правила может привести к непредсказуемым результатам работы программы.
Код по ссылке: https://github.com/avagners/algorithms_and_data_structures/blob/main/algorithms/asynchronous_concurrent_execution/unsynchronized_buffer.py
Этот код создает два потока: производитель (Producer) и потребитель (Consumer), которые работают с общим ресурсом - буфером (Buffer). Производитель генерирует данные и добавляет их в буфер, а потребитель извлекает данные из буфера и суммирует их.
Ключевые моменты:
Buffer: Хранит данные в виде множества (set). Методы set и get используются для добавления и извлечения данных.
Producer: В цикле генерирует числа от 1 до 4, добавляет их в буфер и выводит сообщение о записи.
Consumer: В цикле извлекает числа из буфера, суммирует их и выводит сообщение о чтении.
Проблемы многопоточности
Каждый запуск этого кода будет выдавать непредсказуемый результат. Это происходит из-за того, что доступ к буферу не синхронизирован. Потоки могут одновременно пытаться читать и записывать данные, что приводит к ошибкам и некорректным результатам.
Важно помнить:
При работе с параллельными потоками необходимо тщательно контролировать доступ к разделяемым ресурсам. Это можно сделать с помощью механизмов синхронизации, таких как блокировки (lock), семафоры и другие средства.
В следующих постах я покажу и расскажу об алгоритмах взаимоисключений.
#Python #Multithreading #Concurrency #Programming #IT
👍4❤2
[Инструменты Data Lake]
Привет, друзья! Ранее мы обсудили, что такое Data Lake и почему он так популярен. Сегодня расскажу о том, какие инструменты мы используем для управления нашим Data Lake и как они помогают нам справляться с повседневными задачами.
Основные инструменты для управления Data Lake:
Apache Hadoop:
Hadoop — это одна из самых популярных платформ для работы с большими данными. Одним из ключевых компонентов является HDFS (Hadoop Distributed File System) для хранения данных. Hadoop обеспечивает высокую масштабируемость и отказоустойчивость, что делает его идеальным для Data Lake.
Apache Spark:
Spark — это мощный инструмент для обработки больших данных в режиме реального времени. Он поддерживает разнообразные аналитические задачи, включая машинное обучение, обработку потоков данных и SQL-запросы. Благодаря своей скорости и гибкости Spark стал незаменимым инструментом для анализа данных в Data Lake.
Apache NiFi:
NiFi — это мощный инструмент для автоматизации потоков данных. Он позволяет легко собирать, передавать и преобразовывать данные из различных источников в режиме реального времени. Мы используем NiFi для интеграции и управления потоками данных.
Apache Hive:
Hive — это инструмент для выполнения SQL-запросов на больших объемах данных, хранящихся в Hadoop. Он предоставляет интерфейс, похожий на SQL, что облегчает работу с данными для аналитиков и разработчиков. Hive позволяет выполнять сложные аналитические задачи и преобразования данных.
Trino (ранее PrestoSQL):
Trino — это распределенный SQL-движок, который позволяет выполнять высокопроизводительные аналитические запросы на больших объемах данных. Он поддерживает работу с различными источниками данных, включая Hadoop и S3. Trino обеспечивает быструю и эффективную обработку данных, что делает его незаменимым инструментом для нашего Data Lake.
Apache Airflow:
Airflow — это платформа для автоматизации и оркестрации рабочих процессов. Мы используем Airflow для планирования и мониторинга задач импорта/экспорта и обработки данных, что позволяет нам эффективно управлять интеграциями.
———
Далее я подробнее расскажу об экосистеме для работы с большими данными Hadoop. Оставайтесь на связи!
#BigData #DataLake #ApacheHadoop #ApacheSpark #ApacheNiFi #Hive #Trino #ApacheAirflow #IT
Привет, друзья! Ранее мы обсудили, что такое Data Lake и почему он так популярен. Сегодня расскажу о том, какие инструменты мы используем для управления нашим Data Lake и как они помогают нам справляться с повседневными задачами.
Основные инструменты для управления Data Lake:
Apache Hadoop:
Hadoop — это одна из самых популярных платформ для работы с большими данными. Одним из ключевых компонентов является HDFS (Hadoop Distributed File System) для хранения данных. Hadoop обеспечивает высокую масштабируемость и отказоустойчивость, что делает его идеальным для Data Lake.
Apache Spark:
Spark — это мощный инструмент для обработки больших данных в режиме реального времени. Он поддерживает разнообразные аналитические задачи, включая машинное обучение, обработку потоков данных и SQL-запросы. Благодаря своей скорости и гибкости Spark стал незаменимым инструментом для анализа данных в Data Lake.
Apache NiFi:
NiFi — это мощный инструмент для автоматизации потоков данных. Он позволяет легко собирать, передавать и преобразовывать данные из различных источников в режиме реального времени. Мы используем NiFi для интеграции и управления потоками данных.
Apache Hive:
Hive — это инструмент для выполнения SQL-запросов на больших объемах данных, хранящихся в Hadoop. Он предоставляет интерфейс, похожий на SQL, что облегчает работу с данными для аналитиков и разработчиков. Hive позволяет выполнять сложные аналитические задачи и преобразования данных.
Trino (ранее PrestoSQL):
Trino — это распределенный SQL-движок, который позволяет выполнять высокопроизводительные аналитические запросы на больших объемах данных. Он поддерживает работу с различными источниками данных, включая Hadoop и S3. Trino обеспечивает быструю и эффективную обработку данных, что делает его незаменимым инструментом для нашего Data Lake.
Apache Airflow:
Airflow — это платформа для автоматизации и оркестрации рабочих процессов. Мы используем Airflow для планирования и мониторинга задач импорта/экспорта и обработки данных, что позволяет нам эффективно управлять интеграциями.
———
Далее я подробнее расскажу об экосистеме для работы с большими данными Hadoop. Оставайтесь на связи!
#BigData #DataLake #ApacheHadoop #ApacheSpark #ApacheNiFi #Hive #Trino #ApacheAirflow #IT
👍8❤1
[Что такое Hadoop и из каких компонентов он состоит?]
Привет, друзья! В предыдущих постах мы обсудили Data Lake и инструменты для его управления. Сегодня хочу рассказать о Hadoop — одной из ключевых технологий, на которой базируется большинство современных решений для работы с большими данными.
Что такое Hadoop?
Hadoop — это масштабируемая и отказоустойчивая платформа с открытым исходным кодом для хранения и обработки больших объёмов данных. Она позволяет распределять данные и задачи обработки между множеством узлов в кластере, что делает её идеальным решением для работы с данными в промышленном масштабе.
Основные компоненты Hadoop:
Hadoop Distributed File System (HDFS):
HDFS — это распределённая файловая система, которая хранит данные на множестве узлов кластера. Она разбивает данные на блоки и распределяет их по разным узлам, обеспечивая высокую доступность и отказоустойчивость. HDFS — основа для хранения данных в экосистеме Hadoop.
MapReduce:
MapReduce — это модель программирования, которая позволяет обрабатывать большие объёмы данных параллельно на кластере. В MapReduce задачи делятся на две основные фазы:
Map-фаза: Обработка данных и их преобразование в пары ключ-значение.
Reduce-фаза: Сводка результатов и получение итогового ответа. MapReduce позволяет эффективно анализировать данные, распределённые по множеству узлов.
YARN (Yet Another Resource Negotiator):
YARN — это система управления ресурсами в Hadoop. Она позволяет разным приложениям и фреймворкам использовать ресурсы кластера (процессорное время, память и др.).
Основные компоненты YARN:
Resource Manager: Управляет ресурсами кластера.
Node Manager: Контролирует ресурсы на каждом узле кластера.
Application Master: Обрабатывает задачи конкретного приложения.
Hadoop Common:
Hadoop Common включает в себя общие библиотеки и утилиты, которые поддерживают работу всех остальных компонентов Hadoop. Это основной набор инструментов и функций, необходимый для взаимодействия между различными частями системы.
———
В следующем посте я расскажу о других проектах Apache, связанных с Hadoop.
#BigData #Hadoop #HDFS #MapReduce #YARN #IT
Привет, друзья! В предыдущих постах мы обсудили Data Lake и инструменты для его управления. Сегодня хочу рассказать о Hadoop — одной из ключевых технологий, на которой базируется большинство современных решений для работы с большими данными.
Что такое Hadoop?
Hadoop — это масштабируемая и отказоустойчивая платформа с открытым исходным кодом для хранения и обработки больших объёмов данных. Она позволяет распределять данные и задачи обработки между множеством узлов в кластере, что делает её идеальным решением для работы с данными в промышленном масштабе.
Основные компоненты Hadoop:
Hadoop Distributed File System (HDFS):
HDFS — это распределённая файловая система, которая хранит данные на множестве узлов кластера. Она разбивает данные на блоки и распределяет их по разным узлам, обеспечивая высокую доступность и отказоустойчивость. HDFS — основа для хранения данных в экосистеме Hadoop.
MapReduce:
MapReduce — это модель программирования, которая позволяет обрабатывать большие объёмы данных параллельно на кластере. В MapReduce задачи делятся на две основные фазы:
Map-фаза: Обработка данных и их преобразование в пары ключ-значение.
Reduce-фаза: Сводка результатов и получение итогового ответа. MapReduce позволяет эффективно анализировать данные, распределённые по множеству узлов.
YARN (Yet Another Resource Negotiator):
YARN — это система управления ресурсами в Hadoop. Она позволяет разным приложениям и фреймворкам использовать ресурсы кластера (процессорное время, память и др.).
Основные компоненты YARN:
Resource Manager: Управляет ресурсами кластера.
Node Manager: Контролирует ресурсы на каждом узле кластера.
Application Master: Обрабатывает задачи конкретного приложения.
Hadoop Common:
Hadoop Common включает в себя общие библиотеки и утилиты, которые поддерживают работу всех остальных компонентов Hadoop. Это основной набор инструментов и функций, необходимый для взаимодействия между различными частями системы.
———
В следующем посте я расскажу о других проектах Apache, связанных с Hadoop.
#BigData #Hadoop #HDFS #MapReduce #YARN #IT
👍3❤1
[Алгоритм Питерсона*: Обеспечение взаимного исключения в многопоточности]
Привет, друзья! Помните пост "Важность контроля доступа к разделяемым объектам", где была продемонстрирована проблема при работе с параллельными потоками? Сегодня расскажу об интересном алгоритме для обеспечения взаимного исключения — алгоритме Питерсона. Это простое, но важное решение, которое позволяет двум потокам безопасно разделять ресурсы.
Что такое алгоритм Питерсона?
Алгоритм Питерсона — это классический способ синхронизации двух потоков, обеспечивающий их корректное взаимодействие при совместном доступе к общим данным. Он был предложен Гарри Питерсоном в 1981 году и стал одним из первых алгоритмов, которые решили проблему взаимного исключения без использования сложных синхронизирующих механизмов.
Как это работает?
Алгоритм Питерсона позволяет двум потокам координировать доступ к общим ресурсам. В нашем примере используется класс
В этом коде два потока устанавливают свои флаги и координируют доступ к ресурсу через переменную
Зачем это нужно?
Хотя алгоритм Питерсона редко используется на практике в современных системах, он остаётся важным учебным примером, который помогает понять основные концепции синхронизации и взаимного исключения. Его простота делает его отличным инструментом для изучения основ многопоточного программирования.
Кто такой Питерсон?
Гарри Питерсон — американский учёный, который внёс значительный вклад в области информатики, особенно в разработку методов синхронизации и управления параллельными процессами. Его алгоритм стал основой для многих учебных курсов и учебников по операционным системам.
———
Далее я покажу другой алгоритм взаимного исключения для N-потоков - алгоритм Лэмпорта.
*В других русскоязычных источниках фамилию пишут через "е" - Петерсон.
Полный пример кода по ссылке: https://github.com/avagners/algorithms_and_data_structures/blob/main/algorithms/asynchronous_concurrent_execution/peterson_lock/peterson_lock_2.py
#Python #Concurrency #PetersonsAlgorithm #Многопоточность #Синхронизация #IT
Привет, друзья! Помните пост "Важность контроля доступа к разделяемым объектам", где была продемонстрирована проблема при работе с параллельными потоками? Сегодня расскажу об интересном алгоритме для обеспечения взаимного исключения — алгоритме Питерсона. Это простое, но важное решение, которое позволяет двум потокам безопасно разделять ресурсы.
Что такое алгоритм Питерсона?
Алгоритм Питерсона — это классический способ синхронизации двух потоков, обеспечивающий их корректное взаимодействие при совместном доступе к общим данным. Он был предложен Гарри Питерсоном в 1981 году и стал одним из первых алгоритмов, которые решили проблему взаимного исключения без использования сложных синхронизирующих механизмов.
Как это работает?
Алгоритм Питерсона позволяет двум потокам координировать доступ к общим ресурсам. В нашем примере используется класс
PetersonLock
, который реализует этот алгоритм. Два потока (производитель и потребитель) используют блокировки для безопасной записи и чтения данных из общего буфера.class PetersonLock:
def __init__(self):
self.flag: List[bool, bool] = [False, False]
self.favored_thread: int = 0
def lock(self, thread_id):
other_thread = 1 - thread_id
self.flag[thread_id] = True
self.favored_thread = thread_id
while self.flag[other_thread] and self.favored_thread == thread_id:
pass
def unlock(self, thread_id):
self.flag[thread_id] = False
В этом коде два потока устанавливают свои флаги и координируют доступ к ресурсу через переменную
favored_thread
, обеспечивая таким образом взаимное исключение.Зачем это нужно?
Хотя алгоритм Питерсона редко используется на практике в современных системах, он остаётся важным учебным примером, который помогает понять основные концепции синхронизации и взаимного исключения. Его простота делает его отличным инструментом для изучения основ многопоточного программирования.
Кто такой Питерсон?
Гарри Питерсон — американский учёный, который внёс значительный вклад в области информатики, особенно в разработку методов синхронизации и управления параллельными процессами. Его алгоритм стал основой для многих учебных курсов и учебников по операционным системам.
———
Далее я покажу другой алгоритм взаимного исключения для N-потоков - алгоритм Лэмпорта.
*В других русскоязычных источниках фамилию пишут через "е" - Петерсон.
Полный пример кода по ссылке: https://github.com/avagners/algorithms_and_data_structures/blob/main/algorithms/asynchronous_concurrent_execution/peterson_lock/peterson_lock_2.py
#Python #Concurrency #PetersonsAlgorithm #Многопоточность #Синхронизация #IT
👍3🏆2