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!