Cluster do Hadoop. 2 Rápido, 4 médio, 8 máquinas mais lentas?

4

Vamos adquirir um novo hardware para usar apenas em um cluster do Hadoop e estamos empenhados no que devemos comprar. Digamos que temos um orçamento de US $ 5 mil, se comprarmos duas máquinas super agradáveis por US $ 2.500 / cada, quatro por cerca de US $ 1.200 / cada ou oito por cerca de US $ 600 cada? O hadoop funcionará melhor com máquinas mais lentas ou com menos máquinas muito mais rápidas? Ou, como a maioria das coisas "depende"? : -)

    
por Ryan Detzel 17.06.2009 / 22:56

4 respostas

5

Se você puder, eu verifico a utilização de serviços de infraestrutura da nuvem, como Amazon Web Services (AWS) Elastic Compute Cloud (EC2) , pelo menos até você determinar que faz sentido investir em seu próprio hardware. É fácil ser pego comprando o equipamento brilhante (eu tenho que resistir diariamente). Tentando antes de comprar na nuvem, você pode aprender muito e responder a pergunta: Meu software de empresas X ou mapear / reduzir a estrutura com relação a esse conjunto de dados corresponde melhor a um pequeno, médio ou grande conjunto de servidores. Eu executei uma série de combinações na AWS, aumentando, diminuindo, gastando e saindo por alguns centavos em alguns dias. Ficamos tão felizes com nossos testes que decidimos ficar na AWS e renunciar a comprar um grande grupo de máquinas que temos para resfriar, alimentar, manter, etc. Tipos de instâncias variam de:

Instâncias padrão

  • Instância pequena (padrão) 1,7 GB de memória, 1 EC2 Compute Unit (1 virtual núcleo com 1 unidade de computação EC2), 160 GB de armazenamento de instância, plataforma de 32 bits
  • Instância Grande 7,5 GB de memória, 4 Unidades de computação EC2 (2 núcleos virtuais com 2 Unidades computacionais EC2 cada), 850 GB de armazenamento de instância, 64 bits plataforma
  • Instância Extra Grande 15 GB de memória, 8 Unidades computacionais EC2 (4 núcleos virtuais com 2 Unidades computacionais EC2 cada), 1690 GB de armazenamento de instância, 64 bits plataforma

Instâncias de alta CPU

  • Instância média de alta CPU 1,7 GB de memória, 5 Unidades computacionais EC2 (2 núcleos virtuais com 2.5 EC2 Compute Unidades cada), 350 GB de instância armazenamento, plataforma de 32 bits

  • Instância extra grande com CPU elevada de 7 GB memória, 20 Unidades computacionais EC2 (8 núcleos virtuais com 2.5 EC2 Compute Unidades cada), 1690 GB de instância armazenamento, plataforma de 64 bits

Unidade de computação EC2 (ECU) - Uma Unidade de computação EC2 (ECU) fornece a capacidade de CPU equivalente a um processador Opteron ou 2007 Xeon de 1,0 a 1,2 GHz.

Instâncias padrão sob demanda Linux / UNIX Uso Uso do Windows
Small (Padrão) US $ 0,10 por hora US $ 0,125 por hora
Grande US $ 0,40 por hora US $ 0,50 por hora
Extra grande US $ 0,80 por hora US $ 1,00 por hora

Instâncias On-Demand de Alta CPU Uso do Windows em Linux e UNIX Média US $ 0,20 por hora US $ 0,30 por hora
Extra Grande $ 0.80 por hora $ 1.20 por hora

Desculpe fazer uma resposta parecer um lance de fornecedor, mas se o seu ambiente permitir que você siga esse caminho, acho que você ficará feliz e tomará uma decisão de compra muito melhor se comprar seu próprio hardware no futuro. / p>     

por 18.06.2009 / 03:13
0

Eu não acho que você deveria estar pensando em termos de número de servidores, mas no número de núcleos de CPU e quantidade de memória. Pelo que me lembro, hadoop ama a memória. Quanto mais núcleos você tiver, mais processos de trabalho você poderá executar ao mesmo tempo.

Eu acho que vai depender da sua carga de trabalho. Quão bem seus trabalhos particionam? Um número menor de pedaços provavelmente favorecerá poucos servidores rápidos, enquanto trabalhos menores podem favorecer máquinas mais lentas.

    
por 18.06.2009 / 00:23
0

Depende totalmente da sua carga de trabalho. Sua tarefa é altamente paralela? Ou tem um grande componente serial? Se a escala for bem, você deve tentar obter o máximo de núcleos possível para o seu dinheiro. Se não escalar bem, então você deve encontrar o ponto em que a escala se divide. Em seguida, tente comprar o CPU mais potente possível para esse número de núcleos.

Esta é apenas uma diretriz geral, mas eu não acho que exista algo específico sobre o Hadoop que lhe dê qualquer tipo de requisitos especiais além de qualquer outra estrutura de paralelização.

    
por 18.06.2009 / 03:38
0

Lembre-se também de que clusters muito pequenos do Hadoop simplesmente não funcionam muito bem, especialmente em cenários de falha. O problema é que muitas heurísticas são ajustadas com a suposição de que o cluster terá mais de 20 máquinas. Algumas dessas heurísticas simplesmente falham em grupos muito pequenos.

Um bom exemplo (que pode ainda não ter sido corrigido até mesmo nas versões mais recentes) é o que acontece quando você escreve um bloco. Supondo replicação = 3, três nós são escolhidos aleatoriamente para hospedar as réplicas. Se um dos nós falhar durante a gravação, o nó de nome será consultado quanto a três nós aleatórios diferentes. Em um cluster grande, a probabilidade de os novos três nós conterem o nó com falha é insignificante, mas em um cluster muito pequeno de, digamos, 6 nós, há uma grande chance de que o nó com falha esteja na nova lista. A gravação falhará novamente e possivelmente até novamente. Isso é suficiente para acabar com o trabalho. A correção é óbvia, mas é uma probabilidade muito baixa para a maioria dos committers de ser integrada rapidamente.

O Hadoop realmente não tem uma distribuição de nível corporativo, mas aborda toda a gama de escalabilidade, para cima e para baixo. Talvez em breve, mas não ainda.

A recomendação para usar o EC2 / EMR até que você esteja claro em suas necessidades é excelente. Isso não apenas permitirá que você entenda suas restrições e necessidades, mas permitirá que você tenha clusters consideravelmente maiores do que o que você está falando sobre a compra.

    
por 04.12.2010 / 21:13