Я вставляю потоковые данные в 2 отдельных пространства ключей с вставкой данных в 2 семейства столбцов (стандартных) в первом пространстве ключей и в 3 семейства столбцов (2 стандартных и 1 счетчик) во втором пространстве ключей.
Скорость вставки данных в эти семейства столбцов хорошо контролируется и работает просто отлично [60% использования ЦП и коэффициент загрузки ЦП около 8-10] с чистой записью. Затем я пытаюсь непрерывно считывать данные из этих семейств столбцов через Pycassa API, в то время как записи выполняются параллельно, и я заметил серьезное снижение производительности записи.
Какие системные настройки рекомендуются для параллельной записи + чтения из двух пространств ключей? В настоящее время каталог данных находится на одном физическом диске с RAID10 на каждом узле.
Оперативная память: 8 ГБ
Размер кучи: 4 ГБ
Четырехъядерный процессор Intel Xeon с частотой 3,00 ГГц
Параллельные записи = Параллельные чтения = 16 (в файле cassandra.yaml)
Модель данных
Keyspace1: я вставляю данные временного ряда с отметкой времени (T) в качестве имени столбца в широкий столбец, в котором хранятся данные за 24 часа в одной строке.
CF1:
Col1 | Col2 | Col3(DateType) | Col(UUIDType4) |
RowKey1
RowKey2
:
:
CF2 (широкое семейство колонок):
RowKey1 (T1, V1) (T2, V3) (T4, V4) ......
RowKey2 (T1, V1) (T3, V3) .....
:
:
Пространство ключей2:
CF1:
Col1 | Col2 | Col3(DateType) | Col4(UUIDType) | ... Col10
RowKey1
RowKey2
:
:
CF2 (широкое семейство колонок):
RowKey1 (T1, V1) (T2, V3) (T4, V4) ......
RowKey2 (T1, V1) (T3, V3) .....
:
:
CF3 (семейство счетчиков):
Подсчитывает возникновение каждого события, хранящегося в CF2.
Данные непрерывно считываются из Keyspace 1 и 2, только CF2 (широкие семейства столбцов). Просто повторюсь, чтение и запись происходят параллельно. Количество запрошенных данных постепенно увеличивается с 1 до 8 строковых ключей с помощью multiget, и этот процесс повторяется.