Big Data Science é um termo genérico para as estratégias e tecnologias não tradicionais necessárias para reunir, organizar, processar e obter insights de grandes conjuntos de dados. Fazer algo além de uma simples análise sobre um único tipo de dados requer um método de organização e catalogação de dados para que possa ser gerenciado de forma eficaz. Como o volume de dados e complexidade aumenta, uma abordagem consistente e robusta pode ser a diferencial para o sucesso.

Neste artigo, falaremos sobre Big Data  em um nível fundamental, traçaremos uma introdução a uma abordagem e ecossistema para alcançar o sucesso com ciência de dados em grande escala. Também vamos dar uma olhada de alto nível em alguns dos processos e tecnologias atualmente sendo usados neste espaço, abrindo espaço para futuros artigos mais aprofundados e com exposições de casos a respeito de cada tópico.

A final o que são Big Data, Data Analytics e Data Science?

Antes de prosseguirmos é importante compreendemos a definição de Big Data, Data Analyst e Data Science a fim de compreendermos como eles se distinguem ao mesmo tempo em que se inter-relacionam.

Começando pelo Big Data, de acordo com o Gartner, temos:

Big Data são grandes volumes de grande variedade, que exigem formas inovadoras e econômicas de processamento de informações para permitir uma melhor compreensão, tomada de decisão, e automação de processos”.

Sobre a perspectiva técnica, podemos dizer que o Big Data se refere a enormes volumes de dados que não podem ser processados efetivamente com os aplicativos tradicionais existentes. Seu processamento começa com os dados brutos que não são agregados e, na maioria das vezes, são impossíveis de armazenar na memória de um único computador.

Já sobre a perspectiva econômica, Big Data é algo que pode ser usado para analisar insights que podem levar a melhores decisões e movimentos estratégicos de negócios.

Portanto Big Data que não é utilizado para gerar novas ideias e percepções não é capaz de promover reais mudanças, sedo que para tal é necessário um processo que o viabilize de forma sistêmica. Então entra em cena o Data Analytics, que se refere ao processo de examinar conjuntos de dados a fim de tirar conclusões sobre as informações que eles contêm, cada vez mais com o auxílio de sistemas e softwares especializados. Tecnologias e técnicas de análise de dados são amplamente utilizadas para permitir que as organizações tomem decisões de negócios mais embasadas e por cientistas e pesquisadores para verificar ou refutar modelos, teorias e hipóteses científicas.

Ora exposto, se faz necessário todo um campo de conhecimento, que aborde o Big Data e Data Analytics sobre a perspectiva do método científico e orientado a obtenção de resultados. O que nos leva ao Data Science, que é a combinação de estatísticas, matemática, programação, resolução de problemas, captura de dados de maneiras engenhosas, a capacidade de ver as coisas de maneira diferente e a atividade de limpeza, preparação e alinhamento dos dados. Simplificando, a Data Science é um termo abrangente para as técnicas utilizadas ao tentar extrair insights de dados não estruturados e estruturados.

Dito isso, vamos na sequência aprofundar um pouco mais o que é Big Data.

Por que os sistemas de Big Data são diferentes?

Os requisitos básicos para trabalhar com Big Data são os mesmos que os requisitos para trabalhar com conjuntos de dados de qualquer tamanho. No entanto, a escala maciça, a velocidade de ingerir e processar e as características dos dados que devem ser tratados em cada estágio do processo apresentam novos desafios significativos ao projetar soluções. O objetivo da maioria dos sistemas de Big Data é fornecer insights e conexões a partir de grandes volumes de dados heterogêneos que não seriam possíveis usando métodos convencionais.

Em 2001, Doug Laney do Gartner apresentou pela primeira vez o que ficou conhecido como os “três Vs do Big Data” para descrever algumas das características que tornam os Big Data diferentes de outros processamentos de dados:

Volume

A grande escala das informações processadas  podem ter ordens de magnitude maiores que os conjuntos de dados tradicionais, como os requisitos de trabalho excedem os recursos de um único computador, isso se torna um desafio de agrupar, alocar e coordenar recursos de grupos de computadores. O gerenciamento de clusters e algoritmos capazes de dividir tarefas em partes menores se tornam cada vez mais importantes.

Velocidade

Os dados estão fluindo frequentemente para o sistema de Big Data a partir de várias fontes e cada vez mais se deseja que sejam processados em tempo real para obter insights e atualizar o entendimento atual do sistema.

Esse foco no feedback quase instantâneo fez com que muitos profissionais de Big Data se afastassem de uma abordagem orientada por lotes e se aproximassem de um sistema de streaming em tempo real. Os dados são constantemente adicionados, massageados, processados e analisados para acompanhar o fluxo de novas informações e para apresentar informações valiosas no início, quando elas são mais relevantes. Essas ideias exigem sistemas robustos com componentes altamente disponíveis para proteger contra falhas ao longo do pipeline de dados.

Variedade

Os problemas de Big Data geralmente são únicos devido à grande variedade de fontes processadas e sua qualidade relativa.

Os dados podem ser ingeridos a partir de sistemas internos, como logs de aplicativos e de servidores, de feeds de mídia social e outras APIs externas, de sensores de dispositivos físicos e de outros provedores. O Big Data procura manipular dados potencialmente úteis, independentemente de onde ele esteja, consolidando todas as informações em um único sistema.

Com isso, os formatos e tipos de mídia também podem variar significativamente. Embora sistemas de processamento de dados mais tradicionais possam esperar que os dados entrem no pipeline já rotulados, formatados e organizados, os sistemas de Big Data geralmente aceitam e armazenam dados mais próximos de seu estado bruto. Idealmente, quaisquer transformações ou alterações nos dados brutos ocorrerão na memória no momento do processamento.

Outras características

Vários indivíduos e organizações sugeriram expandir os três Vs originais, embora essas propostas tendam a descrever os desafios em vez de qualidades de Big Data. Algumas adições comuns são:

  • Veracidade: A variedade de fontes e a complexidade do processamento podem levar a desafios na avaliação da qualidade dos dados
  • Variabilidade: A variação nos dados leva a uma ampla variação na qualidade. Recursos adicionais podem ser necessários para identificar, processar ou filtrar dados de baixa qualidade para torná-lo mais útil.
  • Valor: O desafio final do Big Data é entregar valor. Às vezes, os sistemas e processos implementados são complexos o suficiente para que a utilização dos dados e a extração do valor real possam se tornar difíceis.

Computação em Cluster

Até a evolução das tecnologias de processamento distribuído em clusters, o processamento de Big Data estava restrito a capacidade de escalonamento vertical do hardware, ou através de sistemas massivos de processamento paralelo com programação de processos de extrema complexidade e alto custo.

Com o surgimento das plataformas de armazenamento e processamento distribuídos em cluster, o Big Data passou a ser potencializado através de uma camada de abstração de alto nível e do escalonamento horizontal, via a combinação recursos de muitas máquinas menores, trazendo consigo vários benefícios:

  • Pool de recursos: Combina e compartilha todos recursos de espaço de armazenamento, CPU e memória.
  • Alta disponibilidade: os clusters podem fornecer níveis variados de tolerância a falhas e garantias de disponibilidade para impedir que falhas de hardware ou software afetem o acesso a dados e processamento.
  • Fácil escalabilidade: os clusters facilitam o dimensionamento horizontal, adicionando máquinas adicionais ao grupo.

Isso significa que o sistema pode reagir a mudanças nos requisitos de recursos sem expandir os recursos físicos em uma máquina.

O uso de clusters requer uma solução para gerencia-los, coordenar o compartilhamento de recursos e programar o trabalho real em nós individuais. A associação de clusters e a alocação de recursos podem ser gerenciadas por softwares como o YARN (que significa Yet Another Resource Negotiator) ou o Apache Mesos. Já o Ambari e o sistema de gerenciamento e monitoramento do cluster Hadoop, possuindo interface de monitoramento do sistema via interface Web. O Zookeeper e o sistema de coordenação de serviços distribuídos de alta performance.

O cluster de computação geralmente atua como uma base com a qual outras interfaces de software processam os dados. As máquinas envolvidas no cluster de computação também estão tipicamente envolvidas com o gerenciamento de um sistema de armazenamento distribuído.

Como é um ciclo de vida do Big Data Science?

As etapas gerais de atividades envolvidas no processamento de Big Data Science são:

  • Ingerir os dados
  • Persistir os dados
  • Computar e Analisar os Dados
  • Visualizar os resultados

Ingerir os dados

O processamento de ingestão de dados é o processo de coleta de dados brutos e adição ao sistema. A complexidade dessa operação depende muito do formato e da qualidade das fontes de dados e da distância dos dados do estado desejado antes do processamento.

Tradicionalmente, os dados são ingeridos sob regras estritas e formatados de acordo com um esquema predeterminado. Esse processo é conhecido como ETL (Extract, Transform and Load) e ainda é uma prática muito comum, suportada por uma grande variedade de ferramentas comerciais, bem como por alguns produtos de código aberto.

A abordagem ETL favorece a realização de verificações iniciais, que garantem a qualidade dos dados e a conformidade com os esquemas, a fim de simplificar o processamento analítico on-line. É particularmente adequado para lidar com dados com um conjunto específico de características, ou seja, estruturados comumente em um modelo clássico de entidade e relacionamento.

Durante a revolução do Big Data, houve uma explosão de demanda por dados estruturados, semi-estruturados e não estruturados, levando à criação de sistemas que eram necessários para manipular dados com um conjunto diferente de características. Neste novo cenário os métodos tradicionais de ETL falham, não somente pela demora em processar tais circunstâncias mais também em simplesmente porque demoravam para serem produzidos dado a exigência do schema-on-write, o que acarretava também em sua rigidez em face da mudança.

Então uma abordagem diferente surgiu, o paradigma schema-on-read. Aqui, os dados são ingeridos em sua forma original, ou pelo menos muito próximos, e os detalhes de normalização, validação e assim por diante são feitos no momento do processamento analítico. Isso é normalmente chamado de ELT (Extract, Load and Transform).

Essa abordagem valoriza a entrega de dados em tempo hábil. Então durante o processo de ingestão, algum nível de análise, classificação e rotulagem ainda ocorre, porém o processamento detalhado é atrasando até que seja absolutamente necessário. Dessa maneira, um cientista de dados pode obter acesso aos dados imediatamente, buscando insights usando uma variedade de técnicas não disponíveis com uma abordagem tradicional.

Uma maneira pela qual os dados podem ser adicionados a um sistema de Big Data são as ferramentas de ingestão dedicadas. Tecnologias como o Apache Sqoop podem pegar dados existentes de bancos de dados relacionais e adicioná-los a um sistema de Big Data. Da mesma forma, o Apache Flume e o Apache Chukwa são projetados para coletar, agregar e importar logs de aplicativos e servidores. Sistemas de  enfileiramento de mensagens de baixa latência e com alta taxa de transferência como o Apache Kafka também podem ser usados como uma interface entre vários geradores de dados e um sistema de Big Data. Estruturas de processamento como o Apache Gobblin podem ajudar a agregar e normalizar a saída dessas ferramentas no final do pipeline de processamento.

Com esses recursos em mente, idealmente, os dados capturados devem ser mantidos tão brutos quanto possível para maior flexibilidade no decurso do pipeline.

Persistir os dados

Sobre o ponto de vista da arquitetura estamos nos referindo ao data lake, termo para um grande repositório de dados coletados em um estado relativamente bruto. Isto é frequentemente usado para se referir aos dados coletados em um sistema de Big Data que pode ser desestruturado e frequentemente mudando. Isso difere em espírito dos Data Warehouses que é composto de dados que foram limpos, integrados com outras fontes e geralmente são bem ordenados.

Os processos de processamento geralmente entregam os dados para os componentes que gerenciam o armazenamento, para que possam ser persistentemente mantidos no armazenamento. Embora isso pareça ser uma operação simples, o volume de dados recebidos, os requisitos de disponibilidade e a camada de computação distribuída tornam necessários sistemas de armazenamento mais complexos.

Soluções como o sistema de arquivos, como Hadoop Distributed File System (HDFS), que permitem que grandes quantidades de dados sejam gravadas em vários nós no cluster. Isso garante que os dados possam ser acessados por recursos de computação, possam ser carregados na RAM do cluster para operações na memória e podem lidar normalmente com falhas de componentes. Outros sistemas de arquivos distribuídos podem ser usados no lugar do HDFS, incluindo Ceph, GlusterFS, MapR-FS e o Amazon AWS S3.

Os dados também podem ser importados para outros sistemas distribuídos para acesso mais estruturado. Os bancos de dados distribuídos, especialmente os bancos de dados NoSQL, são adequados para essa função, pois geralmente são projetados com as mesmas considerações tolerantes a falhas e podem manipular dados heterogêneos. Existem muitos tipos diferentes de bancos de dados distribuídos, a sua escolha vai depender de como você deseja organizar e apresentar os dados.

Computar e Analisar os Dados

Quando os dados estiverem disponíveis, o sistema poderá começar a processar os dados para exibir informações reais. Como os dados forma carregados a priori em sua forma bruta eles podem agora ser lidos em esquemas diferentes, permitindo, portanto, que uma variedade de tipos diferentes de análises sejam executadas nos mesmos dados.

Com isso está camada é comumente a parte mais diversificada do sistema, pois os requisitos e a melhor abordagem podem variar significativamente, dependendo do tipo de informações desejadas. Os dados costumam ser processados repetidamente, de forma iterativa por uma única ferramenta ou usando várias ferramentas para exibir diferentes tipos de insights.

O processamento em lote é um dos métodos de computação em um grande conjunto de dados. O processo envolve dividir o trabalho em partes menores, programar cada peça em uma máquina individual, reorganizar os dados com base nos resultados intermediários e, em seguida, calcular e montar o resultado final. Essas etapas são geralmente chamadas de divisão, mapeamento, embaralhamento, redução e montagem, ou coletivamente como um algoritmo de redução de mapa distribuído, essa é a estratégia usada pelo MapReduce do Apache Hadoop. O processamento em lote é mais útil quando se lida com conjuntos de dados muito extensos e que exigem um pouco de computação.

Embora o processamento em lote tem sido a pedra fundamental do desenvolvimento de soluções de Big Data, este não atende a outras cargas de trabalho que exigem mais processamento iterativo ou em tempo real. O processamento em tempo real exige que as informações sejam processadas e prontificadas imediatamente e exigem que o sistema reaja à medida que novas informações se tornam disponíveis. Uma maneira de conseguir isso é o processamento de fluxo, que opera em um fluxo contínuo de dados composto de itens individuais.

Outra característica comum dos processadores em tempo real é a computação na memória, que trabalha com representações dos dados na memória do cluster para evitar a necessidade de gravar de volta no disco.

O Apache Storm , o Apache Flink e o Apache Spark oferecem maneiras diferentes de obter processamento em tempo real ou quase em tempo real. Há trade-offs com cada uma dessas tecnologias, que podem afetar qual abordagem é melhor para qualquer problema individual. Em geral, o processamento em tempo real é mais adequado para analisar pequenos blocos de dados que estão sendo alterados ou sendo adicionados ao sistema rapidamente.

Os pontos acima representam exemplos de frameworks computacionais, havendo muitas outras ferramentas para calcular ou analisar dados em um sistema de Big Data. Essas ferramentas frequentemente se conectam aos frameworks acima e fornecem interfaces adicionais para interagir com as camadas subjacentes. Por exemplo:

  • Apache Hive: fornece uma interface de data warehouse para o Hadoop
  • Apache Pig: fornece uma interface de consulta de alto nível
  • Apache Drill , Apache Impala , Apache Spark SQL e Presto: provêm interações semelhantes a SQL
  • Apache SystemML, Apache Mahout e o MLlib do Apache Spark: provêm o aprendizado de máquina, voltado ao projeto de sistemas que podem aprender, ajustar e melhorar com base nos dados fornecidos a eles. Isso normalmente envolve a implementação de algoritmos preditivos e estatísticos que podem se concentrar continuamente em comportamentos e insights “corretos” à medida que mais dados fluem pelo sistema.
  • R, Python e Scala: linguagens de programação analítica

Visualizando os resultados

Devido ao tipo de informação que está sendo processada em sistemas de Big Data, reconhecer tendências ou mudanças nos dados ao longo do tempo é geralmente mais importante do que os próprios valores. A visualização de dados é uma das maneiras mais úteis de detectar tendências e entender um grande número de pontos de dados.

O processamento em tempo real é frequentemente usado para visualizar métricas de aplicativos e servidores. Os dados mudam com frequência e os grandes deltas nas métricas geralmente indicam impactos significativos na integridade dos sistemas ou da organização. Nesses casos, projetos como o Prometheus podem ser úteis para processar os fluxos de dados como um banco de dados de séries temporais e visualizar essas informações

Uma maneira popular de visualizar dados é com o Elastic Stack, anteriormente conhecido como o stack ELK. Composto por Logstash para coleta de dados, Elasticsearch para indexação de dados e Kibana para visualização, o Elastic stack pode ser usado com sistemas de Big Data para interagir visualmente com os resultados de cálculos ou métricas brutas. Uma pilha semelhante pode ser obtida usando o Apache Solr para indexação e um derivado do Kibana chamado Banana para visualização.

Outra tecnologia de visualização normalmente usada para o trabalho interativo de ciência de dados é um “caderno” de dados. Esses projetos permitem a exploração interativa e a visualização dos dados em um formato propício para compartilhar, apresentar ou colaborar. Exemplos populares desse tipo de interface de visualização são o Jupyter Notebook e o Apache Zeppelin.

Conclusão

Como vimos ao longo deste artigo Big Data Science é um tópico amplo e em rápida evolução. Se você não é um técnico da área pode ter chegado aqui e estar se perguntado, “Ok, mas a final tudo isso não é muito para meu negócio?”.

A questão é que cada vez mais dados relevantes a seu negócio são gerados em diversas fontes e seus clientes estão cada vez mais informados e conectados, mas sem um processo, método e plataforma adequados você não será capaz de usa-los a seu favor para evoluir e até sobreviver frente a competição. Ao implementar corretamente sistemas, processos e métodos que lidam com Big Data Science, as organizações podem obter um valor incrível a partir de dados que já estão disponíveis.

Como vimos, embora não seja adequado para todos os tipos de computação, muitas organizações estão se voltando para Big Data aplicado-o a para certos tipos de cargas de trabalho e usando-as para complementar suas ferramentas de análise e de negócios existentes. Os sistemas de Big Data são especialmente adequados para identificar padrões difíceis de detectar e fornecer informações sobre comportamentos impossíveis de serem encontrados por meios convencionais, viabilizando insights e a tomada de ação imediata.