Prévia do material em texto
Big Data Real-Time Analytics com Python e Spark www.datascienceacademy.com.br Seja bem-vindo! www.datascienceacademy.com.br Apache Spark www.datascienceacademy.com.br Introdução www.datascienceacademy.com.br Apache Spark é um dos assuntos mais quentes do momento em tecnologias de Big Data Analytics. A quantidade de dados gerados em todo o mundo aumenta de forma exponencial e o Spark é claramente a solução computacional expressamente concebida para lidar com este nível de crescimento. Primeiramente criado como parte de um projeto de pesquisa na Universidade de Berkeley nos EUA, Spark é um projeto open source no universo do Big Data, construído para análises sofisticadas, velocidade de processamento e facilidade de uso. Ele unifica capacidades críticas de análise de dados, como SQL, análise avançada em Machine Learning e streaming de dados, tudo isso em uma única estrutura. www.datascienceacademy.com.br Spark realiza operações de MapReduce Spark pode utilizar o HDFS Spark permite construir um workflow de Analytics Spark utiliza a memória do computador de forma diferente e eficiente Spark é veloz Spark é flexível Spark é gratuito www.datascienceacademy.com.br Por que Aprender Apache Spark? www.datascienceacademy.com.br Por diversas razões: é atualmente uma das tecnologias mais quentes em Big Data Analytics, devido sua velocidade de processamento. Mais e mais empresas estão adotando infraestrutura de Big Data que tem o Spark como um dos componentes principais. Existe cada vez mais suporte de outras empresas e alta demanda por profissionais que conheçam processamento de dados em tempo real. Como Vamos Estudar o Spark? • Capítulo 6 - Arquitetura do Spark, Transformações, Ações, PySpark • Capítulo 7 - Spark SQL • Capítulo 8 - Spark Streaming e Análise de Dados em Tempo Real • Capítulo 9 - Machine Learning em Streaming de Dados com Spark MLlib www.datascienceacademy.com.br Como Vamos Estudar o Spark? • Capítulo 6 Introdução ao Spark Arquitetura PySpark e Jupyter Notebook RDD’s Lazy Evaluation Transformações Ações www.datascienceacademy.com.br O Spark é um tema avançado! www.datascienceacademy.com.br A dedicação é o combustível que nos move. Ela é a responsável pelo nosso sucesso. www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br Apache Spark e Big Data www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br Como armazenar e processar todos esses dados, se o volume aumenta de forma exponencial? www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br Apache Spark é um sistema de análise de dados distribuído e altamente escalável que permite processamento em memória, o desenvolvimento de aplicações em Java, Scala e Python, assim como linguagem R. É atualmente um dos principais projetos da Apache Foundation. O Spark estende as funcionalidades do MapReduce, suportando tarefas mais eficientes de computação como queries iterativas e processamento de streams de dados. Velocidade é importante quando processamos grandes conjuntos de dados e uma das principais características do Spark é exatamente sua velocidade, permitindo o processamento de dados em memória e em disco. www.datascienceacademy.com.br O Spark uitiliza a memória distribuída através de diversos computadores, os nodes de um cluster. O preço da memória dos computadores vem caindo ano após ano e como o processamento em memória é muito mais rápido que o processamento em disco, o Spark é uma tecnologia realmente promissora. Enquanto o Hadoop armazena os resultados intermediários do processamento, em disco, o Spark armazena os resultados intermediários em memória. Esse é basicamente o grande diferencial do Spark. Apache Spark é um framework open-source para processamento de Big Data construído para ser veloz, fácil de usar e para análises sofisticadas. www.datascienceacademy.com.br Apache Spark é uma ferramenta de análise de Big Data, escalável e eficiente. www.datascienceacademy.com.br www.datascienceacademy.com.br Ecosistema Spark www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br Spark Framework Spark Core Spark Scheduler Local HDFS RDBMS NoSQL S3 YARN Mesos SparkSQL Python R Scala Java Tools MLlib GraphX Streaming Programação Bibliotecas Gerenciamento Armazenamento Engine www.datascienceacademy.com.br Quando usamos o Spark? www.datascienceacademy.com.br Quando usamos o Spark? • Integração de Dados e ETL • Análises Interativas • Computação em Batch de Alta Performance • Análises Avançadas de Machine Learning • Processamento de Dados em Tempo Real www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br Apache Spark www.datascienceacademy.com.br Verificando a Instalação do Spark www.datascienceacademy.com.br Diretórios de Instalação do Spark www.datascienceacademy.com.br Diretório Objetivo bin Executáveis conf Arquivos de configuração data Datasets examples Scripts de exemplo jars Arquivos .jar licenses Licenças de uso python Biblioteca Python R Biblioteca R sbin Executáveis e configuração do cluster yarn Gestão do Cluster Diretórios de Instalação do Spark www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br MapReduce x Spark www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br O Spark realiza o processamento distribuído, de forma similar ao Hadoop MapReduce, porém com muito mais velocidade. www.datascienceacademy.com.br O Spark não possui sistema de armazenamento, podendo usar o HDFS como fonte de dados. www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br + www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br www.datascienceacademy.com.br RDD’s = Resilient Distributed Datasets www.datascienceacademy.com.br www.datascienceacademy.com.br • O Spark suporta mais do que apenas as funções de Map e Reduce • Hadoop MapReduce grava os resultados intermediários em disco, enquanto o Spark grava os resultados intermediários em memória, o que é muito mais rápido • O Spark fornece APIs concisas e consistentes em Scala, Java e Python (e mais recentemente em R) • O spark oferece shell interativo para Scala, Python e R • O Spark pode utilizar o HDFS como uma de suas fontes de dados www.datascienceacademy.com.br O Cientista de Dados é responsável por definir as regras de manipulação e análise de dados O Spark e o Hadoop MapReduce tem uma característica principal em comum: são responsáveis por gerenciar o processamento distribuído www.datascienceacademy.com.br Porém o Spark faz isso de forma muito mais rápida que o Hadoop MapReduce www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br Arquitetura Spark www.datascienceacademy.com.br Exstem basicamente 3 perfis de profissionais que vão trabalhar com Spark: • Cientistas de Dados • Engenheiros de Dados • Administradores www.datascienceacademy.com.br www.datascienceacademy.com.br Anatomia de uma Aplicação Spark Aplicação Spark = Instância de um Spark Context www.datascienceacademy.com.br Anatomia de uma Aplicação Spark www.datascienceacademy.com.br Anatomia de uma Aplicação Spark Shell – área de trabalho via linha de comando Spark Context – conexão ao ambiente Spark sc – SparkContext criado quando iniciamos o pyspark www.datascienceacademy.com.br PySpark Anatomia de uma Aplicação Spark www.datascienceacademy.com.br Quando utilizamos o PySpark e o Jupyter Notebook não precisamos nos preocupar com a criação do Spark Context. Mas quando criamos uma aplicação de análise de dados (um arquivo .py por exemplo) e utilizamos o spark-submit para iniciar nossa aplicação, precisamos explicitamente criar um Spark Context. www.datascienceacademy.com.br Arquitetura Spark Master/Worker www.datascienceacademy.com.br Arquitetura Spark Master/Worker Aplicação node www.datascienceacademy.com.br Arquitetura Spark Master/Worker Aplicação www.datascienceacademy.com.br Arquitetura Spark Master/Worker Aplicação www.datascienceacademy.com.br Arquitetura Spark Master/Worker Spark Driver www.datascienceacademy.com.br Arquitetura Spark Spark Driver www.datascienceacademy.com.br Arquitetura Spark Spark Context www.datascienceacademy.com.br Arquitetura Spark Cluster Manager www.datascienceacademy.com.br Arquitetura Spark Worker Node Worker = host = node = computador www.datascienceacademy.com.br Arquitetura Spark Executor www.datascienceacademy.com.br Arquitetura Spark Task www.datascienceacademy.com.br Como uma aplicação é executada no Spark www.datascienceacademy.com.br Spark Modes Modo Batch Modo Interativo Modo Streaming www.datascienceacademy.com.br Deploy Mode Única JVM Cluster Gerenciado Local (Standalone ou Cluster) Cluster em Nuvem (Databricks, Amazon EC2, IBM Bluemix www.datascienceacademy.com.br Fontes de Dados para o Spark www.datascienceacademy.com.br www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br RDD Resilient Distributed Datasets www.datascienceacademy.com.br RDD é uma coleção de objetos distribuída e imutável. Cada conjunto de dados no RDD é dividido em partições lógicas, que podem ser computados em diferentes nodes do cluster. www.datascienceacademy.com.br RDD’s são imutáveis www.datascienceacademy.com.br HDFS RDBMS NoSQL Arquivos www.datascienceacademy.com.br Existem 2 formas de criar o RDD Paralelizando uma coleção existente (função sc.parallelize) Referenciando um dataset externo (HDFS, RDBMS, NoSQL, S3) www.datascienceacademy.com.br As RDD’s são a essência do funcionamento do Spark www.datascienceacademy.com.br Hadoop MapReduce www.datascienceacademy.com.br Spark www.datascienceacademy.com.br Por padrão, os RDD’s são computados cada vez que executamos uma Ação. Entretanto, podemos ”persistir” o RDD na memória (ou mesmo no disco) de modo que os dados estejam disponíveis ao longo do cluster e possam ser processados de forma muito mais rápida pelas operações de análise de dados criadas por você, Cientista de Dados. www.datascienceacademy.com.br O RDD suporta dois tipos de operações: Transformações Ações reduce() collect() first() take() countByKey() www.datascienceacademy.com.br Transformações map() filter() flatMap() reduceByKey() aggregateByKey Transformações e Ações www.datascienceacademy.com.br Transformações e Ações Carrega e Transforma os Dados Resultados Lazy Evaluation www.datascienceacademy.com.br As ”Ações” aplicam as ”Transformações” nos RDD’s e retornam resultado www.datascienceacademy.com.br • Spark é baseado em RDD’s. Criamos, transformamos e armazenamos RDD’s em Spark. • RDD representa uma coleção de elementos de dados particionados que podem ser operados em paralelo. • RDD’s são objetos imutáveis. Eles não podem ser alterados uma vez criados. • RDD’s podem ser colocados em cache e permitem persistência (mesmo objeto usado entre sessões diferentes). • Ao aplicarmos Transformações em RDD’s criamos novos RDD’s. • Ações aplicam as Transformações nos RDD’s e geram um resultado. Características dos RDD’s: www.datascienceacademy.com.br RDD’s Imutablidade Importante quando se realiza processamento paralelo. Particionado e Distribuído Permite processar arquivos através de diversos computadores. Armazenamento em Memória Processamento muito mais veloz, permitindo armazenar os resultados intermediários em memória. www.datascienceacademy.com.br Obrigado www.datascienceacademy.com.br Transformações São operações preguiçosas (lazy operations) executadas sobre os RDD’s e que criam um ou mais RDD’s. www.datascienceacademy.com.br Transformações www.datascienceacademy.com.br Transformações Após executar operações de Transformação no RDD, o RDD resultante será diferente do RDD original e poderá ser menor (se usadas as funções filter, count, distinct, sample) ou maior (se usadas as funções flatMap, union, cartesian) www.datascienceacademy.com.br • Realizam as operações em um RDD e criam um novo RDD • Operações são feitas em um elemento por vez • Lazy Evaluation • Pode ser distribuída através de múltiplos nodes Transformações www.datascienceacademy.com.br Transformações Algumas operações de Tranformação podem ser colocadas no que o Spark chama de Pipeline, que é um encadeamento de transformações visando aumentar a perfomance www.datascienceacademy.com.br Transformações Narrow Wide Resultado de funções como groupByKey() e reduceByKey() e os dados podem vir de diversas partições Resultado de funções como map() e filter() e os dados vem de uma única partição www.datascienceacademy.com.br Transformações mapPartition www.datascienceacademy.com.br Principais Operações de Transformação www.datascienceacademy.com.br Map • Conceito de MapReduce • Age sobre cada elemento e realiza a mesma operação www.datascienceacademy.com.br flatMap • Funciona como a função Map, mas retorna mais elementos www.datascienceacademy.com.br Filter • Filtra um RDD para retornar elementos www.datascienceacademy.com.br Set • São realizadas em duas RDD’s, com operações de união e interseção www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#transformations www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#transformations Obrigado www.datascienceacademy.com.br Ações São operações executadas sobre os RDD’s que geram um resultado. www.datascienceacademy.com.br Ações www.datascienceacademy.com.br Ações Leitura de um arquivo Divisão do arquivo em linhas Mapeamento de cada palavra Redução por agregação Ordenação Impressão das palavras com maior ocorrência Transformação Transformação Transformação Transformação AçãoRDD www.datascienceacademy.com.br Ações Ações são operações síncronas mas podemos usar a função AsyncRDDActions() para tornar as operações assíncronas www.datascienceacademy.com.br Ações www.datascienceacademy.com.br Nós devemos colocar os RDD’s em cache, sempre que for necessário executar duas ou mais Ações no conjunto de dados. Isso melhora a performance. Ações www.datascienceacademy.com.br Ações Caching Persistence cache() persistence() www.datascienceacademy.com.br Ações www.datascienceacademy.com.br E podemos checar o valor usando a função getStorageLevel() www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#actions www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#actions Obrigado www.datascienceacademy.com.br Ações Age no RDD para produzir um resultado www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#actions www.datascienceacademy.com.br http://spark.apache.org/docs/latest/programming-guide.html#actions Obrigado www.datascienceacademy.com.br