Cassandra: faça mais armazenamento, precise de mais CPU e RAM

6

Eu passei pela arquitetura recomendada da configuração do nó do Cassandra! de acordo com a qual a infra-estrutura de hardware recomendada para o nó é ter

RAM: 16-32 GB,
armazenamento: 500 GB - 1 TB e
uma CPU de 64 bits com 8 núcleos

documentação do datastax diz

"A capacidade máxima recomendada para o Cassandra 1.2 e posterior é de 3 a 5 TB por nó."

Eu tenho um sistema de gravação pesado, digamos 10K registros por segundo, requisito inicial de armazenamento de dados é 72TB, e se eu for com 1TB por nó, eu terei que ter quase 80 nós (tendo em mente overheads). para diminuir o número do nó adicionando mais capacidade de armazenamento de dados a cada nó.

minha pergunta é sobre 1. de acordo com a documentação, 16-32 GB de RAM funcionarão bem com a carga de dados de 500-1TB. Então, quando eu tenho que adicionar mais espaço em disco, 3-5 TB por nó, eu vou ter que melhorar a memória RAM e CPU também?
2. existe alguma correlação entre tamanho de armazenamento e RAM + CPU

    
por madiha malik 01.01.2015 / 11:29

1 resposta

7

Eu acho que o quanto isso vai funcionar dependerá do seu conjunto de dados e sua carga. Não existe uma correlação direta entre o tamanho do armazenamento e a RAM + CPU, no entanto, se você está esperando 3x quantas leituras e gravações vão de 1TB para 3TB, então você pode esperar que você precise acomodar isso com mais RAM e CPU como bem, mas você provavelmente não precisará aumentar sua CPU e RAM 1: 1 com seu armazenamento (ou seja, se você passar de 1 para 3 TB de disco, você não precisará de 3x RAM para acomodar). Em geral, você descobrirá que E / S é o gargalo, portanto, ter discos rápidos (SSDs!) É o mais importante.

Eu corri nós com 3 TB de dados e funcionou sem muito problema. Havia muito ajuste que precisava ser feito, então, a menos que você tenha alguém na equipe que tenha muita experiência em sintonizar o Cassandra, eu não o recomendaria, a menos que seja um requisito difícil. Onde você tem que ter cuidado é com a RAM e quanta pilha você irá atribuir ao processo jvm do Cassandra. O heap máximo recomendado para o Cassandra é de 8 GB, já que a coleta de lixo se torna mais prejudicial com pilhas maiores (a menos que você use o Azul Zing) e os GCs completos menos frequentes podem levar à fragmentação que afeta o desempenho. Em geral, não é uma boa idéia executar aplicativos Java com mais de 8 GB de heap, se você puder evitá-lo.

Nas versões mais recentes do Cassandra, você pode mover muito do heap para a memória nativa. Desde o 1.2, os filtros bloom e os metadados de compactação foram removidos do heap e para a memória nativa. Em 2.1 você pode agora alocar memtables off heap , isso pode ajudá-lo a lidar com um conjunto de dados maior. Então, agora você pode se beneficiar mais de ter mais RAM enquanto fica em um heap razoável (8 GB).

É minha recomendação sempre inclinar-se mais para o lado de ter nós menores. Essas recomendações existem por uma razão, e eu acho que é principalmente porque Cassandra está mais provado sendo usado dessa maneira. Cassandra funciona muito bem em provedores de nuvem e com hardware de commodity, você pode até achar mais barato ter nós menores do que os menos grandes. Onde ele pode se tornar caro está em operações, mas se você usar boas ferramentas de gerenciamento de configuração, como fantoche ou chef, ele se torna menos dispendioso. Isso também se torna mais difícil de fazer com configurações de hardware dedicadas.

Eu recomendaria não aceitar a palavra de ninguém, e encontrar testes com diferentes configurações no EC2 ou em outro provedor de nuvem e ver o que funciona melhor para o seu aplicativo. Seu perfil de carga e conjunto de dados realmente será o fator determinante para saber se isso funcionará ou não. Eu não posso enfatizar o suficiente, fazer muitos testes com diferentes configurações! Uma vez que você decidiu algo, torna-se um esforço (mas não impossível) para desligar. Como alguém que passou por três configurações de cluster diferentes para um aplicativo, não posso enfatizar isso o suficiente :). Para ajudar a testar isso, a nova ferramenta de estresse incluída no Cassandra 2.1 torna-a realmente É fácil gerar um cenário de carga que represente o que seu aplicativo fará. Cassandra é muito sintonizável e tem muitas boas métricas para medir o desempenho, então usar a ferramenta stress também lhe dá a oportunidade de experimentar diferentes opções e aprender mais sobre o gerenciamento de instâncias do Cassandra (ajustes de memória, compactação e outras configurações para ter uma idéia). Uma ou duas semanas de testes pouparão meses de dificuldades!

    
por 01.01.2015 / 21:34

Tags