O Poder do Cluster Computacional
Estamos familiarizados com nossos computadores pessoais (laptops/desktops), que possuem três componentes principais para realizar cálculos de dados: (1) Disco rígido, (2) Memória e (3) CPU.
O disco rígido armazena dados e códigos com características específicas, como leitura e gravação lentas, e uma capacidade grande, em torno de alguns terabytes no mercado atual. A memória é rápida em leitura e gravação, mas tem uma capacidade pequena, da ordem de algumas dezenas de gigabytes no mercado atual. A CPU é onde toda a computação acontece.
![](https://static.wixstatic.com/media/f1402e_27238d7337534311a89cbbdf0d8927f5~mv2.jpg/v1/fill/w_980,h_653,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/f1402e_27238d7337534311a89cbbdf0d8927f5~mv2.jpg)
Para software estatístico, como o R, a quantidade de dados que ele pode processar é limitada pela memória do computador. Antes de 2000, a capacidade de memória dos computadores era inferior a 1 GB. A capacidade de memória cresce mais lentamente do que a quantidade de dados. Agora é comum que precisemos analisar dados que ultrapassam a capacidade de memória de um único computador, especialmente em um ambiente corporativo. Ao mesmo tempo, à medida que o tamanho dos dados aumenta, o tempo de processamento para resolver o mesmo problema (como regressões) cresce mais rápido do que linearmente. O uso de um cluster de computadores se torna uma forma comum de resolver problemas de big data.
![](https://static.wixstatic.com/media/f1402e_2bb731a4d0d54a31b85e614e6b404ade~mv2.png/v1/fill/w_638,h_485,al_c,q_85,enc_auto/f1402e_2bb731a4d0d54a31b85e614e6b404ade~mv2.png)
Na figura acima, um cluster de computadores pode ser visto como uma máquina poderosa com memória, disco rígido e CPU equivalentes à soma dos computadores individuais. É comum ter centenas ou até mesmo milhares de nós em um cluster.
No passado, os usuários precisavam escrever código (como MPI) para distribuir dados e realizar computação paralela. Felizmente, com os recentes avanços no desenvolvimento, o ambiente de nuvem para análise de big data está mais amigável ao usuário. Como os dados geralmente ultrapassam o tamanho do disco rígido, o próprio conjunto de dados é armazenado em diferentes nós (ou seja, o sistema Hadoop). Ao realizar análises, os dados são distribuídos em diferentes nós e os algoritmos são executados em paralelo para aproveitar as CPUs dos nós correspondentes (ou seja, o sistema Spark).
Evolução do Cluster Computacional
Usar clusters de computadores para resolver problemas de dados e análises de propósito geral requer muito esforço se tivermos que controlar especificamente cada elemento e etapa, como armazenamento de dados, alocação de memória e computação paralela. Felizmente, empresas de alta tecnologia e comunidades de código aberto desenvolveram todo o ecossistema com base no Hadoop e Spark. Os usuários só precisam conhecer linguagens de script de alto nível, como Python e R, para aproveitar o armazenamento distribuído, a memória e o poder de computação paralela dos clusters de computadores.
Hadoop
O primeiro grande desafio enfrentado pelas empresas de internet é a quantidade massiva de dados coletados e como armazenar esses dados de forma adequada para análises futuras. O Google desenvolveu seu próprio sistema de arquivos para fornecer acesso eficiente e confiável aos dados usando grandes clusters de hardware comum. A versão de código aberto é conhecida como Hadoop Distributed File System (HDFS). Ambos os sistemas utilizam o Map-Reduce para distribuir o processamento entre os nós de computação, em cima do sistema de arquivos.
O Hadoop é escrito em Java, e escrever tarefas de Map-Reduce usando Java é uma forma direta de interagir com o Hadoop, o que pode não ser familiar para muitos na comunidade de dados e análises. Para facilitar o uso do sistema Hadoop, foram introduzidos o Hive, um sistema de data warehouse semelhante a SQL, e a linguagem de script Pig, para que pessoas com conhecimento em análise de dados possam interagir com o sistema Hadoop. Dentro do Hive, podemos criar funções definidas pelo usuário através do R ou Python para aproveitar a infraestrutura de computação distribuída e paralela. O conceito principal do ecossistema Hadoop é o Map-Reduce em cima do HDFS. Cada operação de Map-Reduce requer a recuperação dos dados do disco rígido, em seguida, a realização do cálculo e o armazenamento do resultado novamente no disco. Portanto, os trabalhos executados sobre o Hadoop requerem muitas operações de disco, o que pode retardar todo o processo de computação.
Spark
O Spark funciona em cima de um sistema de arquivos distribuído, incluindo o HDFS, oferecendo maior eficiência de dados e análises, aproveitando operações em memória. O Spark é mais adequado para processamento e análise de dados, reduzindo consideravelmente a necessidade de interação direta com o Hadoop. O sistema Spark inclui um framework semelhante a SQL chamado Spark SQL e uma biblioteca paralela de aprendizado de máquina chamada MLlib. Felizmente, para muitos na comunidade de análise de dados, o Spark também oferece suporte ao R e Python. Podemos interagir com os dados armazenados em um sistema de arquivos distribuído, realizando computação paralela entre os nós facilmente com o R e Python através da API do Spark, sem precisar se preocupar com os detalhes de baixo nível da computação distribuída. Faça algum comentário se acha que devo trazer informações como usar um notebook R para conduzir cálculos com o Spark.
Com o poder do cluster computacional, torna-se possível lidar com grandes volumes de dados e realizar análises complexas de forma eficiente. O uso do Hadoop e do Spark como parte do ecossistema de computação em cluster oferece uma solução escalável e amigável para lidar com problemas de big data. Através do armazenamento distribuído, alocação de memória e computação paralela, podemos explorar todo o potencial dessas tecnologias e impulsionar a análise de dados em um nível superior.
Comments