Quantidade e variedade de dados. 80% dos dados são não-estruturados(dados não padrões), ou estão em diferentes formatos. Dificuldade de coleta e tratamento de dados. Modelos atuais de BD visam armazenamento estruturado(padrão). Logs de servidores não são utilizados como deveriam, pois poderiam prever um futuro através da análise, contornando problemas e otimizando soluções. Logs de servidores são exemplos de Big Data. Custo alto em manter dados não-estruturados. Os dados de hoje são o novo petróleo como matéria-prima para os negócios, ainda mais com o crescimento em IOT. Big Data é conjunto de dados, grande, complexo e valioso, que não podem ser processados por BD ou aplicações tradicionais. Esses valores, em pequenas quantidades, não alcançariam resultados concretos. Os dados podem ser estruturados, não-estruturados ou streaming(fluxo constante de dados). O Big Data tornou-se importante pela existência de ferramentas que fazem esta análise com baixo custo. Machine Learning e IA são dependentes de Big Data.Nele, os dados precisam ser confiáveis!
Yottabyte -> x1024 -> Zettabyte -> x1024 -> Exabyte -> x1024 -> Petabyte -> 1024 -> Terabyte -> x1024 -> Gigabyte.
A ideia é que, com o tempo, o nº de armazenamento cresça de forma gradual.
A Netflix analisa seus dados de filmes/séries assistidas, favoritos, para então recomendar conteúdo similar ao seu e outros perfis similares. A coleta de dados, transformação em informação, recomendações e análise preditiva são pontos levados em consideração nesse caso.
À quem insira o 5º V, de 'valor', mas que não fora contabilizado aqui, pois conclui-se que o valor é o resultado da análise de Big Data, não de suas características.
Sistema de recomendações, análises em tempo real, construir um modelo de série de análises temporais, prever o preço de um produto de sua empresa daqui a um mês/ano, prever o resultado de uma campanha de marketing, prever o turnover(se o funcionário vai sair ou não da empresa).
Framework livre, com função de armazenamento e processamento compartilhado e distribuído em larga escala de conjunto de dados, com foco em criação de clusters de baixo custo. Em síntese, é um conjunto de softwares que gerencia um cluster(várias máquinas atuando na mesma função) para leitura e escrita de grande conjunto de dados, com baixo custo. O Hadoop permite que os computadores(nodes) executam aplicações em sistemas distribuídos envolvendo Petabytes de dados. Logo Hadoop surgiu por razão do nome do elefante de pelúcia da filha de um dos desenvolvedores. Hadoop não é um BD. Seu objetivo é gerenciar dados e armazená-los em forma de arquivo, através do HDFS. O Hadoop compõe-se de 3 módulos:
HDFS
MapReduce
Foi desenvolvido de forma WORM(Write Once, Read Many Times). O cluster possui 2 tipos de nodes:
Modelo de programação para processamento e geração de grandes conjuntos de dados. Transforma o problema de análise em um processo computacional, com conjunto de chaves e valores. Foi desenvolvido para tarefas que consomem tempo em computadores conectados em rede, de alta velocidade, gerenciados por um único master. O MapReduce usa um tipo de análise de dados por força bruta, onde todo conjunto de dados é processado em cada query. Usa modelo de processamento em batch.
Funcionamento:
A função de mapeamento converte os valores em pares de chaves(K)/valor(V). A regra de mapeamento é definida pelo cientista de dados, que resultará em grupos contendo Chaves e Valores.
Dados -> Mapeamento -> K1:V, K2:V, K3:V, K4:V
Ex: Sistema de recomendação de filmes. Os dados foram coletados, cria-se a regra de mapeamento, onde o ID do usuário que avaliou(K) com sua respectiva nota(V).
Big Data -> Mapeamento -> Redução(ões) -> Resultado
MapReduce permite a execução de queries ad-hoc(executada direto no cluster, via terminal) em todo conjunto de dados em tempo escalável. MapReduce combina dados de múltiplas fontes de forma efetiva. O segredo está no balanceamento entre seeking e transfer: reduzir operações de seeking, e usar de forma efetiva as operações de transfer. MapReduce é bom para atualizar uma grande parte do conjunto de dados, ao contrário dos BDs Relacionais, que são melhores para atualizar algo específico. Os BDs Relacionais usam o B-Tree, dependente de operações de seek. O MapReduce usa operações de SORT e Merge, para recriar o BD, sendo mais eficiente. O MapReduce foca no Transfer, enquanto os BDs Relacionais usam Seeking. Dessa forma, é muito efetivo no processamento de dados semi ou não estruturados, pois interpreta dados durante sessões de processamento de dados. Ele não utiliza propriedades intrínsecas. Os parâmetros usados para selecionar os dados são definidos pelo profissional. Primeiro armazena, depois interpreta. Nos BDs geralmente primeiro cria-se o planejamento, depois o armazenamento.
Hadoop
BD Relacional(RDBMS)
Várias máquinas comportando-se como apenas uma. Um Rack(estrutura) possui vários nodes(máquinas) plugadas na rede, com um software para gerenciá-las como apenas uma(Apache Hadoop), a fim de processamento(MapReduce ou Apache Spark) e armazenamento(HDFS).
Possui 2 tipos de nodes: Master(Namenode, gestor) e Slaves(Worker).
MasterNode
SlaveNode
MapReduce: JobTracker³(Master) -> TaskTracker⁴(Slaves)
HDFS: NameNode¹ -> DataNode²(Slaves)
Passo 1
Pc cliente -> Dados -> MasterNode(Storage com HDFS e NameNode / Armazenamento com MapReduce e JobTracker) -> SlaveNodes(Storage com HDFS e DataNode / Processamento com MapReduce e TaskTracker) * Pc do cliente envia os dados/arquivos/etc ao Master através de uma carga ETL com o software Scope, advindos de um BD ou qualquer outro meio.
Passo 2
Enviar algoritmo de mapeamento e redução (Python, R, Scala...), que será interpretado pelo MapReduce. Pc cientista -> Algoritmo -> Armazenará o job no MasterNode(Storage com HDFS e NameNode / Processamento com MapReduce e JobTracker) -> SlaveNode(Armazenamento dos blocos de dados com HDFS e DataNode / Processamento com MapReduce e TaskTracker) * O processo será o acionamento do NameNode através do JobTracker(consulta) e TaskTracker, executa o processamento e retorna os dados para o cliente/aplicação.
Input(grande volume) -> Mapeamento(classificação) -> Redução(classificados) -> Output(Volume abstraído)
Para o funcionamento, deve-se aplicar o MapReduce, dividir e subdividir o conjunto de dados em listas ordenadas. O MapReduce foi projetado para usar computação paralela distribuída em Big Data e transformar os dados em pedaços menores. No Mapeamento(Map), os dados são separados em pares(Key-Value), transformados e filtrados. Então os dados são distribuídos para os nodes e processados. Na Redução(Reduce), os dados são agregados em conjuntos de dados(datasets) menores, transformados então em um formato padrão de Key-Value, onde Key funciona como identificador e o Value é o conteúdo. Todo o processo inicia-se com a requisição feita pelo cliente e job(comando(s)) submetido(executado). O JobTracker encarrega-se de coordenar como o job será distribuído. No mapeamento, os dados de entrada são, primeiramente, distribuídos em Key-Value e divididos em fragmentos, que são atribuídos a tarefas de mapeamento. Na Redução dos Dados, cada operação de redução dos dados tem fragmento atribuído, e então o processo é executado e o resultado final é gerado.
Distributed Cache é uma funcionalidade do Hadoop que permite cache dos arquivos usados pelas aplicações. Isso permite performance quando tarefas de Map e Reduce precisam acessar dados em comum. Permite também que um node do cluster acesse os arquivos no filesystem local, ao invés de solicitar o arquivo em outro node. É possível de fazer cache de zip e tar.gz. O Hadoop utiliza o Kerberos, mecanismo de autenticação usado, por exemplo, no sistema de diretórios dos servidores Windows e Linux. Por padrão, o Hadoop é executado no modo não-seguro, em que não é necessário autenticação. Após configurado, o Hadoop é executado em modo de segurança e cada usuário e serviço precisa ser autenticado pelo Kerberos. Apó Kerberos configurado, a autenticação Kerberos é usada para validar as credenciais do lado cliente, devendo solicitar uma aplicação de serviço válido para o Hadoop.
São o conjunto de ferramentas que compõem as funcionalidades que rodam sob o HDFS. Muito similar os Apps rodando sob um SO. Os Apps servem para aprimorar a capacidade do SO.
Solução de alta performance para coordenação de serviços em aplicações distribuídas. É um serviço de coordenação distribuída para gerenciar grandes conjuntos de hosts(clusters). Isso permite que os desenvolvedores se preocupem apenas com a lógica do aplicativo, ignorando sua natureza distribuída. Por exemplo, o HBbase(BD NoSQL) usa o Zookeeper para acompanhar o estado de dados distribuídos através do cluster. O Zookeeper proporciona um ponto comum de acesso a uma ampla variedade de objetos utilizados em ambientes de cluster.
Gerenciador de fluxo de trabalho(workflow), permitindo agendamento automatizado dos jobs de MapReduce e gerencie-os através do cluster. O Oozie é integrado com o restante dos componentes do Hadoop para apoiar vários tipos de trabalhos do Hadoop(Java Map-Reduce, streaming Map-Reduce, Pig, Hive e Sqoop), bem como jobs do sistema(algoritmos Java e shell). Ele permite ao usuário definir uma série de jobs diferentes(MapReduce, Pig, Hive) e ligá-los um ao outro. Por exemplo, que determinada consulta somente é iniciada após os jobs que acessem os mesmos dados sejam concluídos.
Data Warehouse(sistema de gerenciamento de dados projetado para ativar e fornecer suporte às atividade de BI) que funciona com Hadoop e MapReduce. É um sistema de armazenamento de dados para Hadoop, que facilita a agregação dos dados para análises e relatórios com Big Data. Permite queries usando uma linguagem SQL-Like, denominada HiveQL(HQL). Provê a capacidade de tolerância a falha para armazenamento de dados e depende do MapReduce para execução. Permite conexões JDBC/ODBC, facilmente integrado com outras ferramentas de BI como Tableau, Microstrategy, Microsoft Power BI, etc. O Hive é orientado a Batch. Assim como o Pig, gera jobs MapReduce que executam no cluster Hadoop. É um sistema para gestão de query de dados não estruturados, em formato estruturado. O Hive utiliza MapReduce para execução e HDFS para armazenamento e pesquisa de dados. Exemplo de query HQL: "SELECT * FROM tabela;".
Projeto com função de importar/exportar dados de BD's Relacionais, permitindo mover dados como Microsoft SQL Server ou Oracle para o Hadoop. O desenvolvedor pode escolher para importar, banco inteiro, determinadas tabelas e até determinadas colunas ou linhas. O Sqoop também gera classes Java de fácil interação com os dados importados, usando conexão JDBC para conectar com BD's Relacionais. Pode também criar tabelas no Hive e suporta importação incremental. Exemplo de código para importar dados de MySQL para o HDFS Hadoop: "sqoop list-tables-username nome -password senha \ --connect jdbc:mysql//dbname".
Ferramentas usada para analisar grandes conjuntos de dados, que representam fluxos de dados. Todas as manipulações de dados no Hadoop podem ser feitas com o Pig. Para escrever programas de análise de dados, Pig oferece uma linguagem chamada Pig Latin, que fornece vários operadores para uso nas próprias funções de leitura, escrita e processamento de dados. Para essa análise, com o Pig, devem ser criados scripts com Pig Latin, que serão convertidos, internamente, para jobs MapReduce, com o componente denominado Pig Engine.
Pig
SQL
BD NoSQL para Big Data, que roda sob HDFS, para armazenar bilhões de registros. Possui modelo de dados semelhante ao BigTable do Google. Aproveita a tolerância a falhas do HDFS. O HBase é uma parte do ecossistema Hadoop que fornece acesso aleatório de leitura/gravação aos dados do HDFS em tempo real. É um tipo de BD NoSQL com modelo Key-Value, ambas do tipo byte-array. Na arquitetura, possui 2 tipos de Nodes: Master e RegionServer.
Comparação entre HBase e RDBMS:
Função de importar dados de diferentes fontes, em tempo real, para o HDFS Hadoop. Possui arquitetura baseada em streaming(fluxo constante) de dados. Deve-se instalar um agente no serviço cliente, para realizar a coleta de dados, que os armazenará diretamente no HDFS ou no HBase. O modelo de dados do Flume permite seu uso em aplicações analíticas online, mas também pode ser usado em Infraestrutura de TI.
Biblioteca de algoritmos de Machine Learning, escalável e com foco em clustering, classificação de sistemas de recomendação. Permite a utilização dos principais algoritmos de clustering, testes de regressão e modelagem estatística e os implementa usando modelo MapReduce. Machine Learning permite modelagem preditiva(prever futuro com base no histórico).
Sistema para gerenciamento de dados, em tempo real, gerados a partir de web sites, aplicações e sensores. Essencialmente, o Kafka age como um "sistema nervoso central", que coleta os dados de Big Data, tornando-os disponíveis como um fluxo em tempo real para o consumo de outras aplicações. Funciona com baixa latência, funcionando como um repositório centralizado de fluxo de dados constante.
Producers(fonte de dados) -> Kafka cluster -> Consumer(aplicações consumidoras)
Coleta os dados de diversas fontes e gravar no HDFS (Flume ou Sqoop);
Análise dos dados com script personalizado (Pig);
Criar um job MapReduce ou conjunto de jobs e gerenciar o workflow (Oozie);
Gerenciar o cluster Hadoop, para armazenamento e processamento de Big Data (Zookeeper);
Usar ferramenta própria para armazenamento e análise de Big Data (HBase / Hive, ñ própria);
Aplicar Machine Learning (Mahout);
Análise de Big Data em tempo real (Kafka).
Vantagens
A licença do Hadoop é livre, gratuita, porém o suporte, ferramentas personalizadas e profissionalização capacitada é paga, para um melhor uso em soluções empresariais. Empresas modificam e personalizam o Hadoop para um melhor fornecimento de serviços.
Amazon Web Service Elastic MapReduce(EMR) é a uma plataforma de análise de Big Data construída sobre arquitetura HDFS, podendo ser 100% em cloud. Com foco principal em consultas de mapeamento/redução, o AWS EMR explora ferramentas Hadoop, fornecendo uma plataforma de infraestrutura escalável e segura. O pagamento da plataforma é feito por quantidade de uso.
Cloudera, criada por engenheiros do Google, Yahoo e Facebook, está focada em fornecer soluções empresariais do Hadoop, com cluster com mais de 1000 nós, para análise de Petabytes. Cloudera usa produtos 100% Open Source, como Hadoop, Pig, Hive, HBase e Sqoop. Possui o Cloudera Manager, sistema de gestão de Big Data. O Cloudera QuickStart VMs é a versão free do Cloudera Hadoop.
Hortonworks Data Platform(HDP) é uma suite de funcionalidades essenciais para implementação Hadoop, que pode ser usado para qualquer plataforma tecnológica de dados. Apache Ambari é um exemplo de console de gerenciamento de cluster Hadoop, desenvolvido pela Hortonworks.
MapR Data Platform suporta mais de 20 projetos Open Source. Permite utilização de aplicações baseadas em Hadoop e Spark, suportando processamento de dados em batch ou streaming de dados em tempo real.
Pivotal Hadoop(HD) é uma distribuição comercial Hadoop, que consiste em um conjunto de ferramentas ágeis de Big Data e expansão do Hadoop, possuindo capacidade de análise em tempo real e decisões de processos de negócios, que podem ser tomadas quase imediatamente com análise de Big Data. Fornece um motor SQL nativo para o Hadoop, possuindo também suporte a processamento de Big Data em memória, tornando-o mais ágil.
Distribuição Apache Hadoop distribuída em cloud Azure. Azure HDInsight lida com Big Data, possibilitando a inclusão de nodes, sob demanda, ao cluster. Por ser 100% Hadoop, pode processar dados Estruturados, Semi-Estruturados e Não-Estruturados, dos mais variados modelos. Possui extensões para programação em C#, Java e .NET, para gestão de jobs Hadoop. É integrado ao Excel para gestão de dados.
É um engine rápido de uso geral para processamento de Big Data ao longo de um cluster, desenvolvido com Scala. É similar ao Hadoop MapReduce, usando Hadoop HDFS como base, mas pode ser usado com Cassandra, HBase e MongoDB, podendo, também, ser usado com Python, R, Scala e Java. Surgiu para suprir, com mais desempenho no processamento de queries e algoritmos, além permitir processamento em memória e recuperação de falhas, o Apache MapReduce com a computação iterativa.
Framework similar ao Hadoop, ou seja, composto por ferramentas que realizam determinadas funções. Entre as ferramentas estão:
O Hadoop é a plataforma original do Big Data em batch(seleção e envio de grandes conjuntos de dados), possibilitando sua análise e processamento. Possui um ecossistema bem definido, que permite entender suas funções, como na utilização do Pig, Hive e HBase. No caso, o MapReduce possui algumas limitações, além do desempenho, que serão supridas com o Spark:
O Apache Spark é a primeira plataforma de Big Data a integrar batch, streaming e programação iterativa em um único framework.
Hadoop
Spark
Framework, desenvolvido em Java, para Streaming de Big Data, que se tornou o padrão para processamento em tempo real e em paralelo distribuído de Big Data. Não pertence ao Spark. A gestão do estado do cluster é com o Zookeeper. Entre as vantagens do uso, estão:
BDs NoSQL(Not Only SQL / Non-SQL) servem para armazenamento de Big Data, que têm objetivo de armazenar dados Não-Estruturados ou Semi-Estruturados, que os BDs Relacionais não suportam. Oferecem arquitetura mais escalável e flexível do que os Relacionais. Tornou-se popular com o advento das Redes Sociais e IOT. Abaixo, seguem categorias de BD's NoSQL.
Geralmente é aderente a cenários de rede social online, onde os nós representam as entidades e os laços representam as interconexões entre eles. Desta forma, é possível atravessar o grafo seguindo as relações. Essa categoria tem sido usada para lidar com sistemas de recomendação e listas de controle de acesso, fazendo uso de sua capacidade de ligar com dados altamente interligados. O Neo4j é o maior da categoria.
Permite o armazenamento de milhões de documentos. Por exemplo, armazenar dados sobre um funcionário, assim como seu currículo(como um documento) e relacioná-lo à outros campos específicos no BD. O principal representante dessa categoria é o MongoDB.
Os dados são armazenados no formato key-value, onde os valores são identificados pelas chaves. É possível armazenar bilhões de registros de forma rápida. O principal exemplo dessa categoria é o Amazon DynamoDB.
Também chamados de BD Orientados a Coluna, os dados são organizados em grupos de colunas e tanto o armazenamento, quanto as pesquisas de dados são baseadas em chaves(keys). Os exemplos mais comuns dessa categoria são HBase e Hypertable.
MongoDB é um BD NoSQL Orientado a Documento. Um BD NoSQL Orientado a Documento substitui o conceito de 'linha' dos BDs Relacionais, por um modelo mais flexível, o 'documento'. São algumas das características do MongoDB:
MongoDB
Database, Collection, Document, Field, Embedded Documents, Primary Key
RDBMS
Database, Table, Tuple/Row, Column, Table Join, Primary Key
Onde usar MongoDB
BD NoSQL, livremente distribuído, de alta performance, extremamente escalável e tolerante a falha. Muito útil para pesquisa de dados indexada. É voltado para trabalhar com clusters, sendo totalmente escalável, ou seja, novos nodes podem ser adicionados, à medida que os dados crescem. Excelente com leitura/escrita.
BD totalmente voltado para web, onde os dados são armazenados no formato JSON, que constituem em campos que podem ser Strings, números, datas, listas e mapas associativos. Suporta aplicativos web e mobile. É distribuído em pares, com um server e um client, que podem ter cópias independentes do mesmo Database. Foi o 1º BD NoSQL, construído com mentalidade de alto desempenho e tolerância a falha. Permite aos usuários armazenar, reproduzir, sincronizar e processar Big Data, distribuídos em dispositivos móveis, servidores, Data Centers e regiões geográficas distintas em qualquer configuração de implantação, incluindo Cloud.
É a aplicação de técnicas para análise de dados, a fim de extrair informações de Big Data. Se a empresa trabalha com grandes conjuntos de grande variedade de dados, em alta velocidade, então ela trabalha com Big Data. As manufaturas(indústrias) usam dados dos sensores de suas máquinas, a fim de prever necessidades de manutenção, tempo de vida útil, rotinas de funcionários, defeitos de produção, etc. Com isso, usar Machine Learning para realizar previsões. Na área das finanças, como bancos, financeiras e fundos de investimentos, usam Big Data para gerar Machine Learning em seus produtos e análise de finanças e clientes. Na área de saúde, o Big Data Analytics se encontra para a criação de prontuários eletrônicos, cruzamento de dados a fim de prever informações sobre determinado medicamento e seus efeitos, prever possíveis doenças com os sintomas, tratamentos, criação de IA para segmentação de imagens médicas, etc. O varejo também está muito presente com Big Data ANalytics, pois são imensos os dados, de produtos, vendas, lojas, colaboradores, etc. Isso deve ser analisado, a fim de criar IA com Machine Learning para melhorias em vendas, previsões de mercado, empresas e colaboradores, etc.
Antes de iniciar qualquer projeto de Big Data, precisa-se definir os objetivos, ferramentas, métodos que serão utilizados, métricas de avaliação, entre outros pontos do tipo. Tudo isso deve ser claro e documentado em um Business Case, assim como será documentado o andamento do projeto, obstáculos, stakeholders. Isso, para enfim definir os objetivos de alto nível, área problemática atendida primeiro. Esse documento será criado em conjunto com todos os stakeholders, a fim de clarear a Big Picture, visão de alto nível do projeto. Com tudo finalizado, parte-se então para o planejamento do projeto em si.
Identificar métricas, identificar as questões comerciais, como orçamentos, para tirar o máximo de ganho possível. Determinar requisitos de negócios, e definir como seria a implementação bem sucedida de Big Data, o que é mais complicado, identificar também toda a aprovação de critérios. Precisa-se também determinar o escopo adequado, desenvolver o orçamento geral. Empresas precisam de aproximadamente 9 meses para concluir um projeto de planejamento. Definir ambientes, de homologação, testes, validações, que momento será enviado para ambiente de produção.
Etapa que faz parte do planejamento do projeto. Criação da arquitetura do projeto, integração de ambientes, como BI e Big Data. Quais os atributos de BDs Relacionais, quais as possíveis fontes de dados, segundo objetivos levantados. Como serão mescladas e armazenar as diferentes fontes de dados, de acordo com seus tipos (trabalhar com bash ou streaming). Quais as ferramentas de análise que serão utilizadas. Quais as habilidades técnicas necessárias e equipe necessária para o projeto. Qual será a arquitetura do projeto, com DataHub ou outro modelo. Quais as ferramentas de reports, linguagens e tecnologias relacionadas.
O Time to Business, tempo para o projeto gerar resultados, envolve cerca de 3 anos. Esse tempo é estipulado nesta etapa. Definição de questões, como facilidade de uso da aplicação/solução, escalabilidade geral dos dados e processamento e infraestrutura(ambiente em Cloud é mais flexível para o caso). Definição dos padrões a serem utilizados, de forma geral, para a implementação. Definição e análise da maturidade da empresa para tal. Como será o suporte e manutenção, qualificações e treinamentos da empresa.
Pré-requisitos:
sudo nano .bashrc
(dentro do arquivo, no final):
# Variaveis ambientes do Spark
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS=notebook
(salvar e sair do editor (cntrl+x))
source .bashrc
Abrir Pyspark:
pyspark (abrirá no browser)
Criar Novo notebook:
No Pyspark, botão 'new' > Python(default)
Na linha do comando do Pyspark, testar: print(sc)
Elaborado por Mateus Schwede
ubsocial.github.io