[Мои итоги первого квартала 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
[Москва. IT-фестиваль.]
Всем привет. Я в Москве.
Вчера был на внутрибанковском IT-фестивале. Для меня это первое такое мероприятие.
Было очень-очень круто. Отдохнул всей душой.
Онлайн никогда не заменит живое общение.
Был очень рад всех видеть.
Всем привет. Я в Москве.
Вчера был на внутрибанковском IT-фестивале. Для меня это первое такое мероприятие.
Было очень-очень круто. Отдохнул всей душой.
Онлайн никогда не заменит живое общение.
Был очень рад всех видеть.
👍6🔥1👏1🙏1
[Другие проекты Apache, связанные с Hadoop]
Hadoop не существует в одиночку. Он окружён целым рядом проектов Apache, которые расширяют его возможности и предоставляют дополнительные инструменты для работы с большими данными.
Apache Hive:
Hive — это инструмент для выполнения SQL-запросов на данных, хранящихся в Hadoop. Он был разработан для того, чтобы аналитики и разработчики могли использовать привычный им язык SQL для работы с большими объёмами данных, хранящихся в HDFS. Hive отлично подходит для анализа структурированных данных и выполнения сложных запросов.
Apache HBase:
HBase — это распределённая, масштабируемая база данных NoSQL, которая работает поверх HDFS. Она предназначена для работы с большими объёмами данных в режиме реального времени и поддерживает как чтение, так и запись данных. HBase используется для хранения данных, требующих быстрой записи и доступа.
Apache Ambari:
Ambari — это инструмент для управления и мониторинга кластеров Hadoop. Он предоставляет простой и удобный веб-интерфейс для установки, настройки и управления кластерами Hadoop. С помощью Ambari можно отслеживать производительность системы, управлять конфигурациями и автоматизировать задачи администрирования.
Apache Tez:
Tez — это фреймворк, который оптимизирует выполнение заданий в Hadoop. Он был разработан как замена для MapReduce и позволяет выполнять сложные цепочки задач более эффективно и с меньшими задержками. Tez поддерживает выполнение DAG (Directed Acyclic Graph) задач, что делает его более гибким и производительным для различных аналитических приложений.
Apache Spark:
Spark — это мощный фреймворк для обработки данных, который может работать как самостоятельное решение, так и поверх Hadoop. В отличие от MapReduce, Spark поддерживает обработку данных в оперативной памяти, что делает его значительно быстрее для многих задач. Spark также поддерживает широкий спектр рабочих нагрузок, включая обработку в режиме реального времени, машинное обучение и анализ графов, что делает его универсальным инструментом для анализа данных.
Apache ZooKeeper:
ZooKeeper — это централизованная служба для управления конфигурацией, синхронизации распределённых приложений и обслуживания групповых служб. Он играет важную роль в обеспечении отказоустойчивости и управлении кластерами Hadoop.
Apache Sqoop:
Sqoop — это инструмент для передачи данных между Hadoop и реляционными базами данных. Он позволяет импортировать и экспортировать данные между HDFS и базами данных, такими как MySQL, PostgreSQL и другие.
———
Эти проекты, работающие вместе с Hadoop, создают мощную и гибкую экосистему для решения самых разнообразных задач, связанных с большими данными.
#BigData #Hadoop #HDFS #MapReduce #YARN #Hive #HBase #Ambari #Tez #Spark #ZooKeeper #Sqoop #IT
Hadoop не существует в одиночку. Он окружён целым рядом проектов Apache, которые расширяют его возможности и предоставляют дополнительные инструменты для работы с большими данными.
Apache Hive:
Hive — это инструмент для выполнения SQL-запросов на данных, хранящихся в Hadoop. Он был разработан для того, чтобы аналитики и разработчики могли использовать привычный им язык SQL для работы с большими объёмами данных, хранящихся в HDFS. Hive отлично подходит для анализа структурированных данных и выполнения сложных запросов.
Apache HBase:
HBase — это распределённая, масштабируемая база данных NoSQL, которая работает поверх HDFS. Она предназначена для работы с большими объёмами данных в режиме реального времени и поддерживает как чтение, так и запись данных. HBase используется для хранения данных, требующих быстрой записи и доступа.
Apache Ambari:
Ambari — это инструмент для управления и мониторинга кластеров Hadoop. Он предоставляет простой и удобный веб-интерфейс для установки, настройки и управления кластерами Hadoop. С помощью Ambari можно отслеживать производительность системы, управлять конфигурациями и автоматизировать задачи администрирования.
Apache Tez:
Tez — это фреймворк, который оптимизирует выполнение заданий в Hadoop. Он был разработан как замена для MapReduce и позволяет выполнять сложные цепочки задач более эффективно и с меньшими задержками. Tez поддерживает выполнение DAG (Directed Acyclic Graph) задач, что делает его более гибким и производительным для различных аналитических приложений.
Apache Spark:
Spark — это мощный фреймворк для обработки данных, который может работать как самостоятельное решение, так и поверх Hadoop. В отличие от MapReduce, Spark поддерживает обработку данных в оперативной памяти, что делает его значительно быстрее для многих задач. Spark также поддерживает широкий спектр рабочих нагрузок, включая обработку в режиме реального времени, машинное обучение и анализ графов, что делает его универсальным инструментом для анализа данных.
Apache ZooKeeper:
ZooKeeper — это централизованная служба для управления конфигурацией, синхронизации распределённых приложений и обслуживания групповых служб. Он играет важную роль в обеспечении отказоустойчивости и управлении кластерами Hadoop.
Apache Sqoop:
Sqoop — это инструмент для передачи данных между Hadoop и реляционными базами данных. Он позволяет импортировать и экспортировать данные между HDFS и базами данных, такими как MySQL, PostgreSQL и другие.
———
Эти проекты, работающие вместе с Hadoop, создают мощную и гибкую экосистему для решения самых разнообразных задач, связанных с большими данными.
#BigData #Hadoop #HDFS #MapReduce #YARN #Hive #HBase #Ambari #Tez #Spark #ZooKeeper #Sqoop #IT
👍3❤2
Мои итоги 2024 года 🎄🌲
Если прошлый год был годом открытий, то этот год - годом потрясений.
Тоже своего рода год открытий. Просто с другим оттенком).
———
Всех с праздниками! 🍾🥂
https://telegra.ph/Itogi-2024-goda-12-31-7
Если прошлый год был годом открытий, то этот год - годом потрясений.
Тоже своего рода год открытий. Просто с другим оттенком).
———
Всех с праздниками! 🍾🥂
https://telegra.ph/Itogi-2024-goda-12-31-7
Telegraph
Итоги 2024 года
Казалось бы что все хорошо. Все есть: крыша над головой, хорошая работа, 2-е прекрасных детей. В начале года купил машину. Стал регулярно ходить в зал. В будущем хорошие перспективы. Но за всем этим ты не замечаешь какой крутой поворот готовит тебе жизнь.…
👍3🍾3🔥2