Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Предварительный релиз | 0.7.1 / 14 марта 2016 г. ( 2016-03-14 ) |
Репозиторий | Репозиторий Хама |
Написано в | Ява |
Операционная система | Кроссплатформенный |
Тип | Распределенные вычисления , массовые синхронные параллельные вычисления |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | hama.apache.org |
Apache Hama — это распределенная вычислительная среда, основанная на методах синхронных параллельных вычислений для массовых научных вычислений, например, матричных , графовых и сетевых алгоритмов. [1] Первоначально являясь подпроектом Hadoop , [2] в 2012 году он стал проектом верхнего уровня Apache Software Foundation. Он был создан Эдвардом Дж. Юн, [3] который дал ему название (сокращение от «Hadoop Matrix Algebra»), [4] а Hama также означает бегемот на родном корейском языке Юна (하마), [5] следуя тенденции называть проекты Apache в честь животных и зоологии (например, Apache Pig ). Hama была вдохновлена крупномасштабной графовой вычислительной средой Pregel от Google, описанной в 2010 году. [ 6] При выполнении графовых алгоритмов Hama показала пятидесятикратное увеличение производительности по сравнению с Hadoop. [7]
Выведенный из эксплуатации в апреле 2020 года, [8] ресурсы проекта стали доступны как часть Apache Attic. Юн сослался на проблемы установки , масштабируемости и сложную модель программирования [9] из-за отсутствия принятия.
Hama состоит из трех основных компонентов: BSPMaster, GroomServers и Zookeeper. [10]
BSPmaster несет ответственность за:
BSP Master и несколько Grooms запускаются скриптом. Затем bsp master запускается с RPC-сервером для серверов Groom. Groom-серверы запускаются с экземпляром BSPPeer и RPC-прокси для связи с bsp master. После запуска каждый Groom периодически отправляет сообщение heartbeat, содержащее состояние его сервера Groom, включая максимальную емкость задачи, неиспользуемую память и т. д.
Каждый раз, когда мастер BSP получает сообщение heartbeat, он обновляет статус сервера Groom - мастер BSP использует статус серверов Groom для эффективного назначения задач неактивным серверам Groom - и возвращает ответ heartbeat, содержащий назначенные задачи и другие действия, которые должен выполнить сервер Groom. На данный момент у нас есть планировщик заданий FIFO и очень простые алгоритмы назначения задач.
Сервер Groom (кратко именуемый Groom) — это процесс, который выполняет задачи BSP, назначенные BSPMaster. Каждый Groom связывается с BSPMaster, и он принимает назначенные задачи и сообщает о своем статусе посредством периодических связей с BSPMaster. Каждый Groom предназначен для работы с HDFS или другими распределенными хранилищами. По сути, сервер Groom и узел данных должны работать на одном физическом узле.
Zookeeper используется для управления эффективной синхронизацией барьеров BSPPeers.