четверг, 9 января 2014 г.

Пост 26. Результыты тестирования Oracle NoSQL Database. Запись файлов.

Доброго времени суток!
Не так давно мне посчастливилось поучавствовать в тестировании базы данных Oracle NoSQL Database на достаточно большом кластере, для достаточно интересной задачи. Пользуясь случаем хотел бы поделиться с широкой публикой результатами тестирования.

Итак, для начала постановка задачи:
1.Заказчик изготавливает авиадвигатели
2. В ходе испытаний двигателя генерится большое количество телеметрии
3. Эти данные требуются экспертам для анализа сразу после проведения испытания
4. Уже есть приложение для анализа этих данных

Теперь подробности:
- Ожидаемый объем хранилища 2.5 Pb
- Ожидаемое количество файлов 1-2милиарда
- Размер одного файла 1 Mb – 2 Gb
- Вся информация критична. Потери данных невозможны
- Требуется поддержка 20 одновременных пользователей на чтение
- Требуется поддержка 50 одновременных пользователей на запись
- Пропускная способность на запись не ниже 200 MBytes/sec
- Пропускная способность на чтение не ниже 500 MBytes/sec
- Сервер приложений работает под Windows
- Решение должно быть масштабируемым. Планируется докупать оборудование без изменений программной части
- Высокая скорость восстановления после сбоев

На данный исторический момент заказчик хранит все в СУБД Oracle. Файлы испытаний хранятся в BLOB колонках. Сама структура базы данных весьма запутана, содержит множество таблиц и связей между ними. Поисковое приложение позволяет достаточно гибко осуществлять поиск по файлам испытаний. Переделать все в структуу ключ-значение было достаточно сложно.

Поэтому предлагалась следующая архитектура:


От пользователя запрос по-прежнему уходил в СУБД, но вместо BLOB приложению возвращалась ссылка на ключ в файлом (varchar2), по которому приложение вытягивало файл и обрабатывало.

Используемое оборудование для кластера NoSQL:

Big Data Appliance x2-2:
18 узлов для вычислений и хранения данных
Для каждого узла:2 шестиядерных процессора Intel ® Xeon ® 5675 (3,06 ГГц)
48 Гб оперативной памяти
12 дисков SAS емкостью 3 Тбайт и скоростью 7200 RPM
Сеть Infiniband (40 Гбит/с)

Сервер приложений:
Sun Server X3-2L Server
CPU: Intel Xeon E5-2690 2 шт, 8 ядер, 2.9GHz
Память: 256 Гбайт
Storage: 8x 600Гбайт 10K
Сеть: 1 Гбит/сек, Infiniband 40 Гбит/сек

Запись в NoSQL производилась в LOB пары ключ - значение.

Теперь собственно тесты.

1.Запись файлов в базу
Описание нагрузки на БД:
16:05 – 16:45 запись фалов в 120 потоков (имитация 120одновременных пользователей).
15 серверов BDA использовались для NoSQL хранилища, 3 BDA узла для серверов приложений.
В коде программы использовались следующие настройки:

1) Durability
Durability.SyncPolicy.WRITE_NO_SYNC, on masterDurability.SyncPolicy.WRITE_NO_SYNC, on replicasDurability.ReplicaAckPolicy.ALL

2) Использовалось LOB API
putLOB(myKey, fis, durability, 30, TimeUnit.SECONDS)

3) Replication factor = 3

4) Один поток – один экземпляр Javaпрограммы который записывает 1 Гб данных в базу в цикле (ключи различные)



Зависимость ввода вывода KB/sec в зависимости от времени для каждого узла (для увеличения кликните на картинку).
Подсистема ввода-вывода серверов кластера базы данных NoSQL при записи фалов в базу.
Среднее значение IO для каждой ноды BDAоколо 750 Mb/sec


Загруженность сети для каждого узла BDA (bytes/sec) в зависимости от времени для каждого узла  (для увеличения кликните на картинку)
Сеть равномерно загружена на всех узлах кластера на 18,6 Gbit/sec (репликация данных по интерконнекту).


Зависмость процессорной нагрузки для каждого из сервров (процент занятого ресурса) в зависимости от времени  (для увеличения кликните на картинку).
CPU равномерно загружена на всех узлах кластера на 40 – 50%

Выводы:1) Во время записи файлов нагрузка ложится равномерно на все узлы кластера (IO, Network, CPU)
2) Пропускная способность на запись 4 Gbytes/sec на одну стойку BDA
3) Во время максимальной нагрузки:
- IO каждого сервера примерно 2700 операций/сек или 750 Mbytes/sec
- Сеть на всех узлах нагружена равномерно на18,6 Gbit/sec (репликация данных по интерконнекту).
В данном случае используются преимущества Infiniband.
-CPU равномерно загружена на всех узлах кластера на 40 – 50%
4) Узким местом системы являются диски.

Продолжение следует!

Комментариев нет:

Отправить комментарий