Дано: куча затасканных (дата изготовления 2010-2012, наработка - 5-6 лет 24x7x365), но живых SATA2 2TB HGST. Выкидывать их жалко (а их еще и будет прибавляться по мере замены), а применение придумать сложно.
Возникла идея: Сделать холодное (даже ледяное) хранилище для старых данных. Supermicro платформа на 60 дисков, zfs on linux, raidz3, dedup=off.
Вопрос: первоначально возникла мысль, сделать один гигансткий vdev raidz3. Потом здравый смысл возобладал и сложилось 2 варианта: либо 3 x 19 дисков (16 + 3), либо 5 x 11 (8+3), + hot spare.
Однако открытым остался вопрос, использовать ли все vdev в рамках 1 пула, или создать несколько независимых пулов? (фактически, vdev=pool).
Из плюсов нескольких пулов - отсутствует единая точка отказа. Из минусов не так удобно администрировать, директории придется разбрасывать по пулам в полуручном режиме.
Лаборатория эволюционной геномики Факультета биоинженерии и биоинформатики МГУ им. М.В. Ломоносова – одна из сильнейших в области биоинформатики в России. Руководит лабораторией профессор Алексей Кондрашов.
Наш основной рабочий инструмент – вычислительный кластер «Макарьич», который мы и предлагаем вам взять под свою опеку. Это значит, что свободы действий будет много, но и вся ответственность за его работу ляжет на вас.
Что придется делать? Следить за состоянием кластера и особенно основной файловой системой Lustre, собирать системное и научное ПО по запросам пользователей, планировать развитие и закупки для кластера и, конечно, вести документацию.
Работают на кластере самые разные люди – от студентов до докторов наук; все они пылают страстью к научным открытиям, но ИТ-квалификация у них варьирует в широких пределах. Так что в сложных случаях надо будет помогать им со сборкой ПО и подсказывать оптимальный режим запуска задач с учетом особенностей кластера. В отдельных случаях намекать особенно увлеченным ученым на непропорционально большое количество ресурсов используемых ресурсов.
Формальные обязанности:
Обеспечение непрерывной работы кластера 24/7 (приемлемый downtime - в районе 14 дней за год).
Обеспечение сохранности данных пользователей (контроль работы Lustre и бэкапы, в том числе на ленты)
Сборка ПО, консультации пользователей по сборке софта и помощь в оптимизации под возможности и особенности кластера.
Составление планов развития кластера
Закупка необходимого оборудования (выбор оборудования, общение с поставщиками).
Требования:
Представление об архитектуре и работе вычислительных кластеров
Понимание принципов работы распределенных файловых систем
Опыт администрирования GNU/Linux и классических сервисов (DHCP, DNS, LAMP, etc)
Опыт работы с системами оркестрирования
Однозначным плюсом будут:
Опыт администрирования Lustre
Опыт работы с системами управления очередью задач
Высшее образование
Условия:
Так как кластер - неотъемлемая часть жизни большинства сотрудников лаборатории, то вы легко вольетесь в научное сообщество и сможете, при желании, посещать конференции вместе с коллегами. Кроме того, если у вас есть собственный исследовательский проект (необязательно в области биоинформатики), вы сможете использовать вычислительные ресурсы кластера (в пределах разумного) для его выполнения.
График работы:
Большую часть времени можно работать удаленно, но как минимум 1 раз в неделю необходимо посещение лабораторного семинара для личного общения с сотрудниками. Желательно, чтобы в аварийной ситуации, вы могли оказаться возле кластера в течение часа. Кластер физически расположен в здании Факультета биоинженерии и биоинформатики МГУ им. М. В. Ломоносова (м. Университет)
Хочется: выделить все непрерывные ненулевые (возможно с предварительным префиллом или гауссовым блюром) зоны (фиолетовые) и нарезать их в отдельные подмассивы.
В сторону каких библиотек на питоне или, хотя бы, алгоритмов смотреть?
Сейчас я применяю матрицу вращения отдельно к каждому вектору внутри грида (с учетом смещения центра) и проверяю попадает ли он в решетку/округляю до ближайшей вершины. Все работает ок даже за более-менее приемлимое время, но, мне кажется, должен быть более оптимальный путь: какая-нибудь библиотечная функция из нампая/сайпая, алгоритм или просто сишная библиотека. Можете что-нибудь подсказать?
Лаборатория эволюционной геномики Факультета биоинженерии и биоинформатики МГУ им. М.В. Ломоносова – одна из сильнейших в области биоинформатики в России – ищет администратора вычислительного кластера. Руководит лабораторией профессор Алексей Кондрашов.
Наш основной рабочий инструмент – вычислительный кластер «Макарьич», который мы и предлагаем вам взять под свою опеку. Это значит, что свободы действий будет много, но и вся ответственность за его работу ляжет на вас.
Что придется делать? Следить за состоянием кластера и особенно основной файловой системой Lustre, собирать системное и научное ПО по запросам пользователей, планировать развитие и закупки для кластера и, конечно, вести документацию.
Работают на кластере самые разные люди – от студентов до докторов наук; все они пылают страстью к научным открытиям, но ИТ-квалификация у них варьирует в широких пределах. Так что в сложных случаях надо будет помогать им со сборкой ПО и подсказывать оптимальный режим запуска задач с учетом особенностей кластера. В отдельных случаях намекать особенно увлеченным ученым на непропорционально большое количество ресурсов используемых ресурсов.
Обязанности:
Обеспечение непрерывной работы кластера 24/7 (приемлемый downtime - в районе 10 дней за год).
Обеспечение сохранности данных пользователей (контроль работы Lustre и бэкапы, в том числе на ленты)
Сборка ПО, консультации пользователей по сборке софта и помощь в оптимизации под возможности и особенности кластера.
Составление планов развития кластера
Закупка необходимого оборудования (выбор оборудования, общение с поставщиками).
Так как кластер - неотъемлемая часть жизни большинства сотрудников лаборатории, то вы легко вольетесь в научное сообщество и сможете, при желании, посещать конференции вместе с коллегами. Кроме того, если у вас есть собственный исследовательский проект (необязательно в области биоинформатики), вы сможете использовать вычислительные ресурсы кластера (в пределах разумного) для его выполнения.
Обращаете ли вы на это внимание при выборе шрифта? Оказывается, далеко не многие. Например. Я вот пару минут пытался понять, как связаны loli и ионные жидкости.
Коллеги попросили опубликовать среди профильной аудитории
---
В Сколковский институт науки и техники в центр вычислительной биомедицины для проекта по созданию информационно-аналитической системы по обработке больших нейроданных требуется cпециалист по интеграции медицинского оборудования.
Мы начинаем амбициозный и сложный проект, в основе которого партнерские отношения между сетью медицинских лечебных и научных учреждений, специалистов и ученых МФТИ, Сколтеха и других ведущих научных организаций. Цель проекта - создание уникальной для России системы сбора и обработки данных о работе и функционировании головного мозга человека в норме и патологии. На выходе проекта мы ожидаем получить новые открытия, которые позволят заинтересованным сторонам
иметь инструменты обработки данных, позволяющие ускорить разработку и внедрение инновационных технологий, увеличивающих ресурсы и пластичность головного мозга человека.
В 2017-18 гг. по плану реализации проекта в систему должны быть загружено более петабайта данных.
Нам нужен увлеченный профессионал, который с энтузиазмом возьмется за задачу корректной интеграции медицинского оборудования с нашей системой, которая будет взаимодействовать с крупнейшими научным центрами России.
Обязанности
Участие в проектировании процесса интеграции медицинского оборудования с системой.
Проведение экспертизы технических решений, подготовленных подрядчиками и
соисполнителями.
Контроль и приемка работ по интеграции медицинского оборудования с системой.
Разработка документации к стандартам представления медицинских данных.
Консультирование специалистов по информатизации медицинских учреждений.
Проведение инструктажей и консультирований специалистов медицинских учреждений по
функционированию системы и вопросам интеграции медицинского оборудования.
Требования
Глубокий опыт по разработке и внедрению стандартов представления медицинских данных
Навык работы с HL7, FHIR и OpenEHR и детальное понимание их устройства.
Опыт подключения медицинского оборудования к медицинской информационной системе и ее
настройка.
Опыт работы с протоколами, используемыми для передачи данных медицинским оборудованием.
Знание современных международных стандартов передачи медицинских данных
Коллеги попросили опубликовать среди профильной аудитории
---
В Сколковский институт науки и техники в центр вычислительной биомедицины для проекта по сбору и обработке медицинских данных требуется Hadoop & Spark разработчик.
Мы находимся в самом начале очень амбициозного проекта. Его цель - создать систему, собирающую обезличенные данные со всего медицинского оборудования в нескольких больницах, для последующего анализа учеными. Мы уверены, что применив крутые алгоритмы машинного обучения, сможем найти закономерности, которые раньше были скрыты из-за маленького объема доступных данных.
За первые два года работы мы планируем загрузить больше петабайта данных на наш Hadoop кластер.
Для того, чтобы наши запросы не выполнялись месяцами, мы ищем человека, который понимает, как работают Hadoop и Spark, и готов активно делиться этим знанием со своими коллегами - учеными. И поможет им разработать софт который будет быстро работать с таким объемом данных.
Обязанности
Разработка научного ПО под Hadoop&Spark
Помощь в освоении Hadoop&Spark учеными, сотрудниками лаборатории
Оптимизация разрабатываемого в лаборатории кода
Поиск и адаптация программ, разработанных другими биоинформатическими лабораториями под
Hadoop, пригодных для наших нужд
Требования
Отличное понимание принципов работы Hadoop и Spark
Хорошее представление об экосистеме Hadoop в целом и областях применения отдельных
инструментов в частности
Опыт программирования на Java&Python
Опыт написания MapReduce и Spark программ на Java&Python
Желателен опыт работы с Avro|Parquet
Желание разбираться в существующих биоинформатических пайпланах с целью их переноса на Hadoop&Spark
Мы с товарищами из FutureBiotech решили тут делать научпоп в формате стримов, посвященных всему, что связано с современной биологией: открытия, лекарства, технологии. Это такие апгрейженные онлайн-трансляции, где мы очень внимательно читаем комментарии в чатах и отвечаем на вопросы зрителей. Форматы бывают достаточно разные - стримы прямо из лабораторий, интервью с людьми «в теме», трансляции интересных мероприятий из области.
В этот раз мы стримим лекцию и воркшоп по биоинформатике:
Наверняка вы слышали кучу страшилок про то, что антибиотики скоро перестанут работать и человечество вымрет под гнетом инфекций от суперустойчивых бактерий. Но как же это происходит? Почему бактерии приобретают устойчивость и как они ее передают.
Сегодня в об этом расскажет обворожительная Анна Костикова, PhD в области вычислительной биологии и сравнительной геномики, University of Lausanne, Switzerland. В вводной лекции она раскроет роль облачных вычислений в биоинформатике, а в ходе воршкопа каждый сможет самостоятельно попробовать что это такое - использовать топовые научные инструменты для анализа геномов бактерий.
Ждем вас в физическом воплощении в Ключе или в 19:30 на наших канал на SC2TV и YouTube.
P.S. Записи прошлых стримов можно посмотреть на YouTube.
P.P.S. И да, смотреть можно в HTML5 а для стриминга а используется опенсорсный OBS Studio иногда даже и на онтопике.
Немного играюсь с cython'ом. Решил написать небольшой враппер, скармливающий данные одной библиотеке, столкнулся с небольшой проблемой.
Код враппера:
# -*- coding: utf-8 -*-
#cython: wraparound=False
#cython: boundscheck=False
from cpython cimport array
import array
ctypedef public struct qmmmdata:
int atomNR
int* labels
cdef void gen_input_data(qmmmdata *data):
cdef int N = 5
cdef array.array labels = array.array('i', [6, 4, 6, 1, 1])
data.atomNR = N
data.labels = labels.data.as_ints
print 'Before'
print 'Atom N:', data.atomNR
print 'Labels:', [data.labels[i] for i in range(data.atomNR)]
cdef void print_result(qmmmdata *data):
print 'After'
print 'Atom N:', data.atomNR
print 'Labels:', [data.labels[i] for i in range(data.atomNR)]
cdef void do_work():
cdef qmmmdata data
gen_input_data(&data)
print_result(&data)
if __name__ == '__main__':
do_work()
И запускаю вот так:
$ rm -f test_array.c test_array.h test_array.exe
$ cython --embed test_array.pyx
$ gcc test_array.c -I/usr/include/python2.7 -L/usr/lib -lpython2.7 -o test_array.exe
$ ./test_array.exe
Before
Atom N: 5
Labels: [6, 4, 6, 1, 1]
After
Atom N: 5
Labels: [159730576, 4, 6, 1, 1]
Возможно ЛОР сможет подсказать причину изменения содержимого переменной data.labels? Если реализовать этот кусок иначе, например с numpy массивами и передачей указателей на них, то все ок. Но теперь интересует причина проблем в этом месте.
Мои друзья запилили сервис с вакансиями в биотехе/фарме/науке Бластим. Пусть это и контринтуитивно, но помимо разных научных сотрудников и менеджеров, иногда, требуются и кодеры/администраторы для различных коммерческих и научных проектов..
Возникла какая-то странная проблема с одним из DNS серверов провайдера. С машин, которые работают за NAT все работает, а при попытке запроса с роутера DNS не отвечает. Схема подключения такая:
Соответственно DNS2 ведет себя странно:
с workstation
silwer@xwing ~ $ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 50:e5:49:50:68:94
inet addr:10.0.0.13 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::52e5:49ff:fe50:6894/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:6000 Metric:1
RX packets:832496204 errors:0 dropped:0 overruns:0 frame:0
TX packets:865320530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:536139025480 (536.1 GB) TX bytes:639174828957 (639.1 GB)
silwer@xwing ~ $ dig @93.180.63.3 ya.ru
; <<>> DiG 9.8.1-P1 <<>> @93.180.63.3 ya.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2441
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;ya.ru. IN A
;; ANSWER SECTION:
ya.ru. 2459 IN A 213.180.193.3
ya.ru. 2459 IN A 213.180.204.3
ya.ru. 2459 IN A 93.158.134.3
;; AUTHORITY SECTION:
ya.ru. 150688 IN NS ns2.yandex.ru.
ya.ru. 150688 IN NS ns1.yandex.ru.
;; ADDITIONAL SECTION:
ns1.yandex.ru. 329866 IN A 213.180.193.1
ns2.yandex.ru. 150037 IN A 93.158.134.1
;; Query time: 0 msec
;; SERVER: 93.180.63.3#53(93.180.63.3)
;; WHEN: Mon Nov 23 19:38:56 2015
;; MSG SIZE rcvd: 146
silwer@xwing ~ $ sudo tcpdump -ni eth0 | grep 93.180.63.3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:47:13.557739 IP 10.0.0.13.36275 > 93.180.63.3.53: 8052+ A? ya.ru. (23)
19:47:13.558255 IP 93.180.63.3.53 > 10.0.0.13.36275: 8052 3/2/2 A 213.180.193.3, A 213.180.204.3, A 93.158.134.3 (146)
c myrouter (NAT):
silwer@router:~$ ifconfig wan0
wan0 Link encap:Ethernet HWaddr 00:25:90:65:eb:8a
inet addr:93.180.63.165 Bcast:93.180.63.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4568205707 errors:234 dropped:11021323 overruns:0 frame:234
TX packets:3337250552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4851237581876 (4.8 TB) TX bytes:1561545151788 (1.5 TB)
Interrupt:16 Memory:fbce0000-fbd00000
silwer@router:~$ dig @93.180.63.3 ya.ru
; <<>> DiG 9.8.1-P1 <<>> @93.180.63.3 ya.ru
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
silwer@router:~$ nmap 93.180.63.3 -p 53
Starting Nmap 5.21 ( http://nmap.org ) at 2015-11-23 19:55 MSK
Nmap scan report for pop.genebee.msu.ru (93.180.63.3)
Host is up (0.00030s latency).
PORT STATE SERVICE
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
Причем аналогичная ситуация со всеми машинами из сети 93.180.63.0/24 (я имею доступ нескольким из них). По уверениями администратора провайдера никаких изменений в сервере никаких в последнее время не происходило, но мой Nagios утверждает, что проблема началась несколько дней назад и имеет «мигающий» характер (даунтаймы по несколько часов). Чтобы такого могло происходить с DNS сервером в эти моменты?
Есть DAS HP MSA 2400 SAS LFF + 3 полки расширения (итого 48 х 4Tb SAS HDD). Все это должно стать СХД для небольшого кластера. Соответственно хочется собрать это в единый том, который будет раздаваться через NFS (отсутствие жестких требований к производительности, масштаб и сложность модификации существующей инфраструктуры делают Lustre неудобным вариантом).
Мне видится такая конфигурация конфигурация:
Внутри каждой полки Raid6 из 10 дисков + 2 hot-spare. А затем собрать mdadm Raid0 из 4х Raid6. То есть в итоге получится гибридный (hw + mdadm) Raid60 на ~ 120Tb.
Какие, потенциально, могут возникнуть проблемы при таком сетапе?
Что случится с Raid0 если, например, одна из полок отключится/включится?
Есть ли какие-нибудь альтернативные сетапы?
P.S. Оборудование такое, какое есть (повлиять на его закупку возможности, фактически, не было). Так что теперь надо оптимально использовать то, что есть.
Расклад такой, имеется ~17Тб холодных данных, которые должны вырасти в ближайшие 3-4 года до 30Tб. Сейчас это лежит на Raid6, но старая полка и старые же диски (4-5 лет 2Tb HGST SATA) заставляют активно задумываться о дополнительном резервировании. Особенно с учетом того, что аналогичная полка недавно выдала множественный отказ дисков. Пуcть это и оказалось багом железки и все группы восстановились нормально с тех же дисков, но нервов съело порядочно.
Как один из вариантов, рассматривается покупка ленточной библиотеки. Но, как водится, с такой задачей я раньше не сталкивался и опыта в подборе не имею совсем, соответственно рассчитываю на помощь местной аудитории.
Формализация задачи:
Данные уже демультепликсированны и сжаты, так что, видимо, надо ориентироваться на сырую емкость библиотеки без больших надежд на принудительную дедупликацию.
Из-за п.1 - сырая емкость ~ 30Тб
Данные холодные, прям очень. То есть это именно резерв на случай необратимых повреждений текущего Raid 6. Так что за Гб/с гнаться смысла нет.
Интерфейсы большого значения не играют, наверное.
Бюджет ограничен - мы не очередной газпром, а обычный такой вуз.
Вопросы:
Каков ваш опыт использования?
Какие конкретные модели можете посоветовать?
Имеет ли смысл покупать LTO-6 приводы и картриджи или LTO-5 хватит всем?
Как у них с масштабированием?
Я тут еще подумал. В принципе, данные квантуемые (запуски научного прибора), объем каждого куска, правда, скачет от 30 до 700Gb, в среднем 200-300Gb. Соответственно можно ли рассматривать в такой ситуации автозагрузчик с ручной сменой картриджей после копирования данных с каждого запуска? Насколько они они удобны в использовании?
В сервисе онлайн дистрибуции игр Steam стала доступна игра InCell с поддержкой виртуальной реальности (c помощью шлема Oculus Rift) от российского разработчика Nival. Cюжет игры позволит вам окунуться во внутренний мир эукариотической клетки, узнать или освежить в памяти некоторые факты о ее устройстве и присутствующих в ней органеллах.
Заявлена поддержка всех операционных систем. До 10-го сентября действует скидка 15%.
В рамках Международной научной студенческой конференции МНСК–2015 приглашаем
вас принять участие в Школе-конференции «Визуализация в науке», которая пройдёт с 9-го по
12-е апреля 2015 г. в Новосибирске.
Есть такой алгоритм. В целях масштабирования, я хочу его немного перепилить, но что-то под ночь совсем голова закипает вот на этом куске:
I = np.where(np.diag(A + R) > 0)[0]
K = I.size # Identify exemplars
if K > 0:
c = np.argmax(S[:, I], axis=1)
c[I] = np.arange(K) # Identify clusters
# Refine the final set of exemplars and clusters and return results
for k in range(K):
ii = np.where(c == k)[0]
j = np.argmax(np.sum(S[ii[:, np.newaxis], ii], axis=0))
I[k] = ii[j]
c = np.argmax(S[:, I], axis=1)
c[I] = np.arange(K)
labels = I[c]
# Reduce labels to a sorted, gapless, list
cluster_centers_indices = np.unique(labels)
labels = np.searchsorted(cluster_centers_indices, labels)
S, A, R - квадратные несимметричные матрицы NxN
I = np.where(np.diag(A + R) > 0)[0]
K = I.size # Identify exemplars
Складываем матрицы, находим на диагонали элементы большие 0, получаем одномерный массив с индексами таких cтолбцов, в которых эти элементы находятся. K <= N
c = np.argmax(S[:, I], axis=1)
S[:, I] - матрица, составленная из столбцов, индексы которых мы получили на предыдущем шаге (Причем, так как K <=N, то это уже не NxN, а NxK)
c - одномерный массив c индексами максимумов в строках матрицы NxK
А вот дальше совсем беда.
Если поможет, могу показать ссылку на исходный код на матлабе, с которого переписывался код по ссылке, и даже статью.