Prévia do material em texto
Apache Spark Fundamentação do Apache Spark Fundamentação do Apache Spark Framework para computação distribuída e para processamento de dados. Código aberto. Escrito em Scala. Tolerância a falhas. API de alto nível em Java, Scala, Python e R. Introdução Fundamentação do Apache Spark Recurso Hadoop Spark Processamento MapReduce baseado em disco Processamento em memória (in-memory) Velocidade Mais lento devido ao uso de disco Mais rápido devido ao processamento em memória Programação Principalmente MapReduce em Java Suporta várias linguagens, incluindo Scala, Python e Java Processamento Iterativo Ineficiente para processamento iterativo Eficiente para processamento iterativo Bibliotecas Possui diversas bibliotecas e ecossistema maduro Bibliotecas em expansão, mas ainda menos maduras que o Hadoop Suporte a SQL Suporte limitado a SQL (Hive, HBase) Suporte nativo a SQL (Spark SQL) Streaming Suporta processamento de streaming (Apache Kafka, Storm) Suporte nativo a processamento de streaming (Spark Streaming) Hadoop x Spark Fundamentação do Apache Spark Característica HDFS RDD (Spark) Paradigma Sistema de arquivos distribuído Estrutura de dados distribuída e tolerante a falhas Uso principal Armazenamento de grandes quantidades de dados Processamento e análise de dados em memória Abstração Sistema de arquivos Coleção distribuída e imutável de objetos Escrita de dados Escrita em batch Escrita interativa e em tempo real Tolerância a falhas Alta, replicação de blocos de dados Alta, reconstrução de partições perdidas em caso de falhas Processamento de dados MapReduce é frequentemente usado Transformações e ações são aplicadas aos RDDs Velocidade de processamento Mais lento devido à escrita em disco Mais rápido devido ao processamento em memória Requisitos de hardware Necessita de armazenamento em disco Pode tirar vantagem de memória RAM Hadoop x Spark Fundamentação do Apache Spark Fonte: PEREIRA, M. et al. (2023) Arquitetura Slide 2 Slide 3 Slide 4 Slide 5 Slide 6