Требования / использование памяти для MongoDB, Riak и HyperTable (или HBase)

Я оценил большинство решений NoSQL, и мне кажется, что лучше всего использовать комбинацию MongoDB, Riak и HyperTable (или HBase).

Каковы минимальные требования для комфортной работы этих баз данных?

Скажем, если я разверну эти базы данных (MongoDB, Riak и HyperTable - или HBase) - и веб-сервер (например, nginx или Cherokee) и Java / GlassFish - ВСЕ на одном компьютере под управлением FreeBSD с 32 ГБ ОЗУ, как будет они выступают? Обратите внимание, что при таком подходе все 32 ГБ ОЗУ распределяются поровну между всеми приложениями. В случае Java / GlassFish и HBase его можно ограничить с помощью параметра «-Xmx0000m», но для этих баз данных они будут автоматически использовать всю память? Я понимаю, что MongoDB отображается в памяти и так далее - так что же произойдет, когда все они будут бороться за память? (Я думаю, что можно ограничить использование памяти для MongoDB, Riak и HyperTable с помощью параметра запуска, но как?)

В качестве альтернативы, лучше ли развертывать виртуализацию Solaris (или OpenIndiana) с контейнерами Solaris (или «зонами»), чтобы ограничить каждое приложение, например, назначить 4 ГБ для каждой зоны MongoDB, Riak и HyperTable / HBase? При таком подходе все базы данных по сути работают со средой всего на 4 ГБ? Итак, чтобы они работали нормально, какова минимальная удобная оперативная память?


person ikevin8me    schedule 16.09.2011    source источник
comment
В разумных пределах требования к памяти для каждой из этих баз данных на 100% зависят от объема данных, которые вы собираетесь хранить.   -  person David Wolever    schedule 16.09.2011


Ответы (1)


Я использовал mongodb и hbase в производстве, поэтому могу их прокомментировать.

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

Для hbase проблема не так проста, поскольку она состоит из базовых сервисов. сервисы: namenode, datanode, zookeeper-server, hmaster, regionserver (и если вы собираетесь использовать mapreduce, вам понадобятся jobtracker и tasktraker). namenode, zookeeper-server и hmaster не нужно слишком много. но тогда вам понадобится хороший баланс io / ram для datanode и лучший ram для сервера региона. Никогда не рекомендуется размещать эти службы в одном устройстве (даже если они виртуальные из-за потребностей io).

И последнее, но не менее важное: остерегайтесь свопинга! swap - враг как для mongodb, так и для hbase.

person frail    schedule 16.09.2011
comment
Для HBase datanode и regionserver сервисы обычно находятся на одних и тех же серверах (узлах), также обычно вместе с трекером задач для работы по сокращению карты. Namenode, jobtracker, hbase master (s) и zookeeper (s) не будут находиться на одном узле, если вы не выполняете очень маленькую псевдораспределенную настройку только для тестирования. - person cftarnas; 18.05.2012