Как стать автором
Обновить

Как использовать Parquet и не поскользнуться

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


О хранении данных в Parquet-файлах не так много информации на Хабре, поэтому надеемся, рассказ об опыте Wrike по его внедрению в связке со Spark вам пригодится.
В частности, в этой статье вы узнаете:

— зачем нужен “паркет”;
— как он устроен;
— когда стоит его использовать;
— в каких случаях он не очень удобен.

Читать дальше
Всего голосов 10: ↑10 и ↓0+10
Комментарии14

Консистентность и ACID-гарантии в распределенных системах хранения данных

Время на прочтение8 мин
Количество просмотров26K
Распределенные системы используют, когда возникает необходимость в горизонтальном масштабировании, чтобы обеспечить повышенные показатели производительности, которые не способна обеспечить за адекватные деньги вертикально масштабированная система.

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

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

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

Эта статья основана на наших материалах по консистентности и ACID-гарантиям в распределенных системах.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Неделя онлайн-стримов от JUG Ru Group #4

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


Продолжаем готовиться к конференциям и говорить обо всём: от DevOps до C++ в формате разговорных шоу и митапов. Записи эфиров мероприятий прошлой недели уже доступны, а на этой неделе просыпаемся по утрам уже в привычном шоу-формате и открываем .NET-бар на карантине.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии5

Неделя онлайн-стримов от JUG Ru Group #6

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


Наш сезон конференций успешно открыт, но при этом шоу о технологиях тоже не заканчиваются! На этой неделе будем говорить о Java, DevOps, тестировании и распределенных системах.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Распределенное обучение с Apache MXNet и Horovod

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

Перевод статьи подготовлен в преддверии старта курса «Промышленный ML на больших данных»





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


В этой статье мы поговорим про быстрый и простой способ распределенного обучения с использованием открытой библиотеки для глубокого обучения Apache MXNet и фреймворка распределенного обучения Horovod. Мы наглядно покажем преимущества фреймфорка Horovod в вопросах производительности и продемонстрируем, как написать обучающий скрипт MXNet так, чтобы он работал распределенно с Horovod.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Линейная регрессия и методы её восстановления

Время на прочтение5 мин
Количество просмотров18K
image
Источник: xkcd

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

Но в этой статье речь пойдет не про применение линейной регрессии для решения практических задач. Здесь будут рассмотрены интересные особенности реализации распределенных алгоритмов её восстановления, с которыми мы столкнулись при написании модуля машинного обучения в Apache Ignite. Немного базовой математики, основ машинного обучения и распределенных вычислений помогут разобраться, как восстанавливать линейную регрессию, даже если данные распределены между тысячами узлов.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии10

Прикладные технологии на руинах блокчейн-лихорадки или о практической пользе распределения ресурсов

Время на прочтение6 мин
Количество просмотров3.1K
В последние годы новостные ленты наводнили сообщения о появляющихся буквально из ниоткуда распределенных вычислительных сетях нового типа, решающих (точнее, пытающихся решить) самые разнообразные задачи — сделать город умным, спасти мир от нарушителей авторских прав или наоборот, тайно передать информацию или ресурсы, сбежать из-под контроля государства в той или иной сфере. Вне зависимости от сферы, все они обладают рядом общих черт, обусловленных тем, что топливом для их роста явились алгоритмы и методики, вышедшие в широкие массы во время недавнего бума криптовалют и связанных с ними технологий. Наверное, каждая третья статья на профильных ресурсах в то время в названии имела слово “блокчейн” — обсуждение новых программных решений и экономических моделей некоторое время стало доминирующим трендом, на фоне которого иные сферы применения систем распределенных вычислений были отодвинуты на второй план.

В то же время визионеры и профессионалы увидели основную суть явления: массовые распределенные вычисления, связанные с построением сетей из большого числа разрозненных и разнородных участников, вышли на новый уровень развития. Достаточно выбросить из головы хайповые темы и взглянуть на предмет с другой стороны: все эти сети, собранные из огромных пулов, в которых состоят тысячи обособленных разнородных участников, появились не сами по себе. Энтузиасты крипто-движения смогли разрешить в новом ключе сложные проблемы синхронизации данных и распределения ресурсов и задач, что и позволило собрать воедино подобную массу оборудования и создать новую экосистему, предназначенную для решения одной узконаправленной задачи.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии30

Service Discovery в распределенных системах на примере Consul. Александр Сигачев

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

Предлагаю ознакомиться с расшифровкой доклада Александра Сигачева Service Discovery в распределенных системах на примере Consul.


Service Discovery создан для того, чтобы с минимальными затратами можно подключить новое приложение в уже существующее наше окружение. Используя Service Discovery, мы можем максимально разделить либо контейнер в виде докера, либо виртуальный сервис от того окружения, в котором он запущен.


Всего голосов 14: ↑14 и ↓0+14
Комментарии1

Многозадачность и многопоточность — распространенные заблуждения и недопонимания

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

Когда я предложил перевести на русский мою последнюю статью Easy Concurrency with Python Shared Objects на английском, поступило предложение "написать в несколько раз короче и понятнее". Просьба более чем обоснована. Поскольку я уже порядка десяти лет пишу многопоточку и БД, то описываемые мной логические связи выглядели самоочевидно, и я ошибочно расчитывал на аудиторию из трех с половиной человек, которые сидят сейчас где-то в яндексе или гугле. Судя по всему, они там и сидят, но тема им не интересна, поскольку в питоне нет настоящих потоков, а значит для этих людей такого языка программирования не существует. Потому я немножко снижаю планку и делаю общий обзор проблематики параллельных вычислений для людей, которые в них разбираются, но не являются экспертами в области.


Из-за чего весь сыр-бор?

Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии42

Как создать CDN в отдельно взятой стране

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

Тема задержки доступа и скорости извлечения сетевых ресурсов никогда не перестанет быть актуальной. Максимально близкое расположение источника влияет не только на скорость загрузки и пользовательский опыт, но и на эффективность работы глобальной сети в целом, поскольку позволяет локализовать трафик и сократить загрузку магистральных каналов, предпочитая использовать кэшированные или расположенные локально реплики сетевых ресурсов. Не случайно Google реализует модель сохранения локальных кэшей на оборудовании крупных региональных провайдеров (Google Global Cache) и интеллектуальные алгоритмы в маршрутизации на ближайшую реплики. В этой статье мы обсудим различные подходы к реализации распределенной сети доставки контента (Content Delivery Network, он же CDN), а также акцентируем возможные решения для создания CDN в масштабах отдельно взятой страны или города.

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии1

Best distributed task scheduling framework — Openjob 1.0.7 released

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

Openjob is a new  distributed task scheduling framework based on Akka architecture. Supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has complete management, powerful alarm monitoring, and support multiple languages

Read more
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Openjob: distributed task scheduling framework

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

Openjob is a distributed and high-performance task scheduling framework that supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has perfect permission management, powerful alarm monitoring, and support multiple languages

Read more
Рейтинг0
Комментарии1

Распределённые снапшоты: определение глобального состояния распределённых систем

Уровень сложностиСложный
Время на прочтение19 мин
Количество просмотров2.1K

Наша команда продолжает развивать Platform V DataGrid — распределенную базу данных в оперативной памяти для высокопроизводительных вычислений. В последнем релизе мы реализовали инкрементальные снапшоты, которые быстро снимаются, сохраняют транзакционную целостность и почти не влияют на общую производительность системы.

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Распределенные вычисления на JavaScript: Сегодня

Время на прочтение6 мин
Количество просмотров11K
В настоящее в время существует огромное количество сетей распределенных вычислений. Я насчитал порядка 30. Наиболее крупные — Folding@home, BOINC, SETI@home, Einstein@Home, Rosetta@home (по результатам их вычислений было написано несколько десятков диссертаций). Вычисляют они все, что только можно вычислять распределено — от подбора md5 паролей до симуляции свертывания белка.
Каждая из эти сетей имеет необычно высокую производительность и включает в себя миллионы нодов. Производительность каждой сравнима с производительностью суперкомпьютера.
  • Rosetta@home — более 110 Тфлопс
  • Einstein@Home — более 355 Тфлопс
  • SETI@home — более 560 Тфлопс
  • BOINC — более 5.6 Пфлопс
  • Folding@home — более 5.9 Пфлопс
  • Bitcoin — более 9.4 Пфлопс
Сравните с суперкомпьютерами:
  • Blue Gene/L (2006) — 478.2 Тфлопс
  • Jaguar (суперкомпьютер) (2008) — 1.059 Пфлопс
  • IBM Roadrunner (2008) — 1.042 Пфлопс
  • Jaguar Cray XT5-HE (2009) — 1.759 Пфлопс
  • Тяньхэ-1А (2010) — 2.507 Пфлопс
  • IBM Sequoia (2012) — 20 Пфлопс
А теперь, давайте, подсчитаем существующий неиспользуемый потенциал пользователей интернет:
По расчетам на конец 2010 года пользователей Инернет было около 2000000000 (2 млрд).
Каждый пользователь имеет хотя бы 1 ядро процессора производительностью не менее 8 Гфлопс (AMD Athlon 64 2,211 ГГц).

По нехитрым математическим расчетам производительность такой сети составит:
8 * 109 * 2 * 109 = 16 эксафлопс (1018).
Такая сеть в 800 раз производительней, чем ещё не построенная IBM Sequoia (2012), в 1700 раз производительней, чем сеть Bitcoin и производительней всех суперкомьютеров и вычислительных сетей вместе взятых! Сейчас число пользователей ПК и Интерент растет, растет и число ядер. Безусловно, это число (16 эксафлопс) идеальное, никто не будет вычислять 24/7, но если каждый пользователь будет вычислять хотя бы 2 минуты в день (что, впринципе, более чем реально), то такая сеть сравнится с IBM Sequoia.

Сейчас распределенные браузерные вычислительные сети на JavaScript более чем реальны.
Читать дальше →
Всего голосов 122: ↑117 и ↓5+112
Комментарии87

Генерация Bitcoin в браузере: Обратная сторона

Время на прочтение3 мин
Количество просмотров40K
Пока тема распределенных вычислений на клиенте, bitcoin и генерации bitcoin ещё актуальна. Предлагаю рассмотреть ещё одно решение для генерации биткоинов.

20 мая на форуме bitcoin появился топик Embedable Javascript Bitcoin miner for your website — автор топика предлагал решение на чистом JavaScript. Тема быстро расползалась по твиттеру и популярным JavaScript блогам. Кратко его идею можно описать вот этой фразой: «Turn your website into a bitcoin miner» Каждый посетитель сайта выступает в роли шахтера по добыче bitcoin. Казалось бы это прекрасно — исчезнет реклама, сайты начнут окупать себя за счет добычи bitcoin.

Представим ситуацию: «сайт А» и «сайт Б» и так далее внедряют этот скрипт по добыче bitcoin.
  1. Пользователь, пришедший на сайт А и Б начинает добывать на 2 фронта (загрузка процессора 200%), даже если будет какая-то система ограничения параллельной добычи, то будут ли ею пользоваться — «зачем я буду уступать какому-то сайту А?».
  2. Будут ли пользоваться системой «ограничения оборотов»? — «зачем я буду снижать нагрузку на ЦП пользователя и получать меньше денег, если сайт А не делает этого?»
  3. Будут ли добавлять опцию «включить добычу bitcoin для помощи сайту», чтобы дать пользователю выбор включить добычу или нет — «зачем я буду давать какой-то выбор? — пришел на мой сайт пусть пашет!»

Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии108

Взлом ключей за деньги — оценка на основании сети биткоин

Время на прочтение3 мин
Количество просмотров13K
Если рост мощности сети биткоин продолжится и дальше в текущем темпе, то вычислительная мощь этой сети может составить непосредственную угрозу криптостойкости RSA-1024 уже через год-полтора.

Криптовалюта Биткоин использует подбор хешей для закрепления проведённых транзакций. Эта операция требует существенных вычислительных ресурсов, но с ростом курса криптовалюты и появления видеокарт, позволяющих эффективно считать нужную криптографию, на подбор хешей были подключены существенные вычислительные ресурсы, уже превзошедшие мощность профессиональных суперкомпьютеров и сетей распределённых вычислений (научных и не очень).
Непосредственно работа сети биткоин-майнеров (тех, кто занимается подбором хешей) не представляет угрозу для криптографических ключей, однако её пример — хорошая оценка того, какие вычислительные мощности можно собрать, если платить всем участникам деньги. Причём платить не просто один большой приз за нахождение закрытого ключа, как это делалось до сих пор, а не очень большие деньги, пропорциональные вкладу в работу по взлому. Кроме того, часть ресурсов биткоин-майнеров может быть довольно быстро перехвачена, если будет объявлен конкурс на взлом криптографического ключа, дающий больший доход, чем майнинг биткоинов.

Под катом — небольшой прогноз роста мощности сети, оценки времени и стоимости взлома.
Читать дальше →
Всего голосов 70: ↑67 и ↓3+64
Комментарии108

Распределённые вычисления: немного теории

Время на прочтение9 мин
Количество просмотров56K
Девять лет назад я начал «в свободное от основной работы время» преподавать компьютерные дисциплины в одном из университетов Санкт-Петербурга. И только сравнительно недавно к своему удивлению обнаружил, что в наших вузах практически отсутствуют курсы с фокусом на проблематику распределённых вычислений. И даже на Хабре эта тема не раскрыта в достаточной мере! Надо прямо сейчас исправлять ситуацию.

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

Вместо пролога. Приступив к тексту статьи, я в очередной раз задумался, а зачем программисту нужно знать теоретические основы распределённых вычислений. Этот вопрос я неоднократно слышал (и продолжаю слышать) от студентов и специалистов, уже работающих в области ИТ. Действительно, зачем, например, знать, что «множество событий распределённого вычисления упорядочено частично, а не линейно»? В чем, так сказать, каждодневная практическая польза этого фундаментального знания?

Должен признать, что у меня нет готового заученного ответа, который я могу выдать не задумываясь. Поэтому каждый раз приходится напрягаться извилинами, и каждый раз ответы и аргументы получаются разными. Вот и сейчас всё как впервые…
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии37

Масштабировать просто. Часть третья — стратегии

Время на прочтение6 мин
Количество просмотров14K
В предыдущих частях (тут и тут) мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня продолжим разговор об оптимизации правильно построенного портала. Итак, стратегии масштабирования.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии3

Распределенное кодирование видео

Время на прочтение4 мин
Количество просмотров21K
image
Думаю, большинству хабрапользователей хоть раз да приходилось кодировать видео. Возможно, вы хотели посмотреть свежую серию любимого сериала в метро, а ваш смартфон или иное портативное устройство никак не хотело играть этот кодек, или SmartTV отказывался декодировать звук в видеофайле, либо же вы застряли в 2004 и транскодировали H.264 в MPEG-4 для вашего старого DVD-проигрывателя. Или же, например, сжимали невероятного размера видео, снятое фотоаппаратом, во что-то более-менее приличное по размеру. Наверняка вы замечали, что это не самый быстрый процесс.

Для кодирования видео сделано огромное количество софта, начиная от программ типа «жми крестик чтобы кодировать» и заканчивая софтом, который принимает AviSynth-скрипты на вход. Однако программы, поддерживающие хоть какое-то распределение кодирования, можно пересчитать по пальцам одной руки.

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

Первая задача подразумевает наличие большого количества видеофайлов, сильно больше, чем компьютеров, на которых их можно кодировать, и довольно легко автоматизируется с использованием CLI-кодировщиков, например, HandBrake или FFmpeg и любых средств автоматизации, которые поддерживают распределение, вроде GNU Parallel или PPSS (к слову, о нем мало кто знает, рекомендую!).

Вторая же задача подразумевает наличие малого количества файлов и большого числа компьютеров, и она несколько сложнее: нам необходимо, во-первых, разбить файл на маленькие части, во-вторых, перекодировать их, и в-третьих, собрать обратно.
Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии34

Создание и использование Matlab кластеров

Время на прочтение7 мин
Количество просмотров17K
Цель статьи: хочу поделится опытом создания трех вычислительных кластеров Matlab, а также их удаленного администрирования.

Небольшое вступление

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

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

Итак, обо всем — по порядку


Железо в наличии:

Дома: комп (Phenom II x4 840, 7x64) и ноут (Athlon II Dual-Core M320, 7x64) соединенные в одну сеть старым добрым маршрутизатором DIR-300.

Дома у девушки: комп (i5 4440, 7x64).

На работе: 10 компов (Athlon II Dual-Core, XPx86) (связанных в одну сеть) в одном помещении и 4 (Athlon II Dual-Core, XPx86) в другом (тоже связанных в одну сеть). Локальной сети между помещениями нет.

На всех вышеперечисленных ящиках присутствует доступ в интернет.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии15
1