Clusters de computadores são hoje uma alternativa viável aos antigos mainframes. Enquanto mainframes conseguem oferecer escalabilidade vertical, cluters conseguem oferecer escalabilidade horizontal. Isso quer dizer que para conseguir mais recursos de armazenamento e computação para os mainframes, você precisa adquirir mais componentes (RAM, CPU, etc.) para essa máquina ou então, caso ela já tenha chegado ao seu limite de expsão, será necessário comprar uma máquina nova e mais poderosa (e certamente mais cara) que a atual. Para conseguir mais armazenamento e computação em sistemas distribuídos, basta adicionar mais máquinas (comuns) ao cluster. Essa é a principal diferença entre escalabilidade vertical e escalabilidade horizontal.
Escalabilidade Vertical vs Horizontal. Créditos: developersclub
There are three key drivers for horizontally distributing workloads:
- Scalability: One machine cannot handle request size or data size, so database fragmentation and sharding onto many machines helped solve this.
- Availability: If one machine goes down, others can keep working.
- Latency: You can go faster and get better request times when data is geographically closer to end users.
Créditos: thenewstack
Nesse contexto, damos início ao estudo do Hadoop, uma tecnologia desenvolvida utilizando princípios de sistemas distribuídos e que, portanto, se encaixam nessa nova realidade dos clusters.
HDFS e YARN são as peças fundamentais que sustentam o ecossistema Hadoop. Os nomes HDFS e YARN podem parecer sopas de letrinhas sem muito sentido para quem os vê fora de contexto. Mas note que ambos na verdade são siglas bastante descritivas do que essas tecnologias se propõem a fazer.
O HDFS, ou Hadoop Distributed File System, fica encarregado de distribuir e gerenciar os seus arquivos entre as máquinas do seu cluster.
Arquitetura HDFS. Créditos: apacheJá o Yarn, Yet Another Resource Negotiator, é responsável por negociar recrusos computacionais para as suas tarefas de manipulação de dados.
Arquitetura YARN. Créditos: apache Ecossistema Hadoop. Créditos: dzoneHorizontal and Vertical Scaling
How to Diminish the Inevitable Failure of Distributed Systems