Article image
Raphael Lopes
Raphael Lopes28/06/2023 16:49
Compartilhe

O que é big data e para que serve

    Olá pessoal! Estamos aqui hoje para apresentar alguns conceitos fundamentais a respeito do Big Data.

    Introdução

    Antes de começar a estudar o tema, as principais dúvidas que me vinham à cabeça eram:

    - Qual a diferença entre uma aplicação em Big Data e o meu banco relacional ou nosql?

    - Compensa utilizar Big Data para substituir meus bancos de dados usuais no pc?

    Mal sabia o quão cru ainda estava de conhecimento nesta área. Vamos começar pela proposta da tecnologia.

    5 V's

    O Big Data propõe ser uma forma de combater 5 desafios observados nas organizações, resultantes do enorme fluxo de dados que ocorre todos os dias:

    • Volume: Há a necessidade de se lidar com enormes quantidades de dados, na escala de petabytes;
    • Velocidade: O processamento de dados precisa ser rápido;
    • Variedade: Muitas vezes os dados estão em formatos diferenciados (Estruturados, semi-estruturados ou não estruturados);
    • Veracidade: Os dados observados no banco precisam ser confiáveis;
    • Valor: Os dados armazenados precisam trazer insights para a organização de forma a aumentar sua competitividade.

    Tá, o Big Data procura resolver estes problemas. Mas como ele faz isto?

    Clusterização

    Convenhamos, ter um computador muito bom ajuda a processar mais dados. Porém, e quando somente uma máquina passa a não ser suficiente para este processamento? 

    Ai é que o Big Data brilha. Ele permite o uso da clusterização, ou em outras palavras: Ao invés de precisar correr atrás de peças para otimizar o seu computador, por que não adicionar mais um computador para auxiliar no trabalho? E se ao invés de mais um, adicionássemos vários para auxiliar nesta empreitada?

    Componentes

    Para explicar melhor, vamos utilizar como exemplo a arquitetura do Apache Hadoop, uma das aplicações mais populares de Big Data utilizadas no mercado:

    • NameNode: O chamado "Mestre", ele gerencia o sistema de arquivos da aplicação e regula o acesso do cliente (Nós) aos arquivos. Somente um computador possui esta função;
    • DataNode: Conhecidos também como "Escravo", é onde ficam armazenados nossos arquivos e também onde ocorre o processamento de dados no cluster. Vários computadores podem compor esta parte da arquitetura.

    Claro, isto abstraindo a maior parte dos componentes do HDFS(Hadoop Distributed Filesystem - em outras palavras, o sistema de arquivos onde armazenamos e processamos os dados). Abaixo, segue uma imagem demonstrando a arquitetura, obtida na documentação oficial do Hadoop:

    image

    Fator de replicação

    A aplicação de Big Data permite configurar um fator de replicação. No exemplo do HDFS, o sistema de arquivos divide o arquivo a ser armazenado em blocos de tamanho fixo. Cada bloco é armazenado de forma distribuída ao longo dos NameNodes.

    Ao se configurar um fator de replicação maior do que um, o sistema cria cópias dos mesmos blocos e os armazena também de forma distribuída. Apesar do aumento do custo, em termos de armazenamento, isto traz vantagens tais como:

    • Segurança: No caso de perda de uma máquina, há a garantia de que não ocorrerá a perda de informações;
    • Integridade das aplicações: Quando estiver rodando alguma implementação, se houver falha em algum NameNode especifico, outro que contenha as mesmas informações pode ser executado em seu lugar, de forma a garantir que não ocorra a perda de dados ao longo da execução.

    Como obter informações?

    Para a obtenção de informações em cenários de Big Data, em 2008 a Google desenvolveu um novo paradigma de programação: MapReduce.

    Basicamente, o ambiente de Big Data dispõe de um framework para o processamento de dados, o qual consiste nas seguintes fases:

    • Map: Mapeamento dos valores desejados, dispondo no formato chave/valor;
    • Sort/Shuffle: Etapa invisível ao programador, onde o framework reúne as informações de chaves semelhantes e ordena;
    • Reduce: Realiza a operação desejada, limitada à criatividade do programador (Média, soma, etc).

    Em suma, nela apenas se preocupa em implementar os métodos Map e Reduce. Trago como exemplo abaixo um código que desenvolvi em Java para um trabalho da faculdade - porém também é possível desenvolver em Python:

    public class Informacao {
    
    
      public static class MapperInformacao extends Mapper<Object, Text, Text, IntWritable> {
    
    
          @Override
          public void map(Object chave, Text valor, Context context) throws IOException, InterruptedException{
              String linha = valor.toString();
              String[] campos = linha.split(";");
              IntWritable valorMap = new IntWritable(0);
    
    
              if(campos.length == 10){
                  String ano = campos[1];
                  int ocorrencia = 1;
    
    
                  Text chaveMap = new Text(mercadoria);
                  IntWritable valorMap = new IntWritable(ocorrencia);
    
    
                  context.write(chaveMap, valorMap);
              }
          }
      }
    
    
      public static class ReducerInformacao extends Reducer<Text, IntWritable, Text, IntWritable>{
    
    
          @Override
          public void reduce(Text chave, Iterable<IntWritable> valores, Context context) throws IOException, InterruptedException{
              int soma = 0;
    
    
              for (IntWritable val : valores) {
                  soma += val.get();
              }
    
    
              IntWritable valorFinal = new IntWritable(soma);
              context.write(chave, valorFinal);
          }
      }
    }
    

    Indo um pouco mais além...

    Claro, em termos práticos não é muito viável obter todas as informações via MapReduce (Algumas aplicações como contadores de palavras podem ser um pesadelo neste tipo de paradigma). Para aumentar a comodidade, o Hadoop foi agregando vários módulos, os quais facilitam a vida do usuário.

    Dentre eles, podemos destacar o HIVE, o qual consiste em um Data Warehouse, com a disposição da linguagem HQL, a qual muitas vezes é idêntica ao SQL. Isto é algo que facilita o trabalho de forma brutal: Um contador de palavras, que passaria facilmente de 100 linhas de código, pode facilmente ser resumido em algumas linhas de código:

    SELECT palavra, COUNT(*) as contador
    FROM tabela
    WHERE word != ''
    GROUP BY palavra
    ORDER BY contador DESC;
    

    Na imagem abaixo, disponibilizada pela GeeksforGeeks, é possível conferir um pouco mais do ecossistema do Hadoop e suas funcionalidades que podem ser aplicadas ao Big Data:

    image

    Casos de Big Data

    Em que casos do dia-a-dia é possível verificar a aplicação do Big Data? Seguem alguns exemplos:

    • Twitter: Conhece o famoso contador de hashtags? Ele é dos mais famosos exemplos de aplicação de Big Data!
    • Yahoo: Aliás, esta é a empresa que iniciou o projeto Hadoop (Esta história é muito legal, vale a pena dar uma conferida), com a finalidade de aumentar a velocidade do buscador;
    • Ebay: A companhia é conhecida por utilizar Big Data aliada a machine learning para personalizar ofertas, adequar propagandas aos usuários e realização de testes A/B. Também é conhecida por já ter construído um dos maiores clusters de Big Data na história.
    • Amazon: Muito conhecida pela utilização em Big Data. Por meio da plataforma AWS também é possível utilizar a aplicação de Big Data em nuvem.
    • Bolsa de valor: Muitas bolsas ao redor do mundo utilizam a Big Data, uma vez que é um setor que lida com uma quantidade brutal de dados.
    • Agronegócio: Big Data acaba sendo um instrumento muito útil, visto a possibilidade de cruzamento de diversos dados, criando mapas de produtividade das áreas plantadas.

    Voltando ao início...

    Disto isto, voltamos às perguntas iniciais:

    Qual a diferença entre uma aplicação em Big Data e o meu banco relacional ou nosql?

    Tanto o banco relacional e nosql lidam com os mesmos tipos de estruturas de dados. A diferença básica está na arquitetura do Big Data, a qual permite a clusterização, distribuindo o armazenamento e a carga de trabalho da aplicação.

    Compensa utilizar Big Data para substituir meus bancos de dados usuais no pc?

    Você está utilizando apenas um computador? Acho melhor continuar com o banco tradicional, porém estudar Big Data pode te trazer um baita conhecimento.

    Você está utilizando um cluster? Big Data é uma boa pedida, todavia é bom não largar os conhecimentos anteriores, visto que podem ser reaproveitados no cenário de Big Data.

    Considerações Finais

    Bom gente, estes são conhecimentos mais introdutórios que gostaria de compartilhar com vocês sobre a área de Big Data, os quais vim aprendendo ao longo dos últimos dois meses na faculdade.

    Esta é a primeira vez que produzo um artigo para publicar na internet. Acredito que ainda há muito espaço para melhora: Se quiserem contribuir, aproveitem o espaço dos comentários para identificar pontos que vocês acham que eu poderia melhorar, ou se porventura algum equívoco tenha sido cometido, apontem para que eu providencie as devidas correções.

    Por fim, sugiro também que estudem o sistema operacional Linux, uma vez que o Hadoop só é acessível por este sistema

    Desejo à todos uma ótima semana!

    Referências:

    Documentação oficial do Hadoop. Spark. Disponível em: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html. Acesso em: 28 de Junho de 2023.

    Hadoop Ecosystem. GeeksForGeeks. Disponível em: https://www.geeksforgeeks.org/hadoop-ecosystem/. Acesso em: 28 de Junho de 2023.

    O que é Big Data? Oracle. Disponível em: https://www.oracle.com/br/big-data/what-is-big-data/. Acesso em: 28 de Junho de 2023.

    How eBay Uses Big Data and Machine Learning to Drive Business Value. Forbes. Disponível em: https://www.forbes.com/sites/maribellopez/2016/10/04/how-ebay-uses-big-data-and-machine-learning-to-drive-business-value/?sh=3ece07511f35.Acesso em: 28 de Junho de 2023.

    Compartilhe
    Comentários (0)