Azure Synapse — Spark
O Apache Spark é um engine de análise unificado focado em Big Data e Machine Learning; O Synapse Spark Pool é uma das implementações da Microsoft do Apache Spark no ambiente Azure.
Antes de seguir com esse artigo, peguei alguns recortes.
Apache Spark no Azure Synapse Analytics: “O Apache Spark é uma estrutura de processamento paralelo que dá suporte ao processamento na memória para aumentar o desempenho de aplicativos de análise de Big Data. O Apache Spark no Azure Synapse Analytics é uma das implementações da Microsoft do Apache Spark na nuvem. O Azure Synapse facilita a criação e a configuração de um Pool do Apache Spark sem servidor no Azure. Os Pools do Spark no Azure Synapse são compatíveis com o Armazenamento do Azure e o Azure Data Lake Generation 2 Storage. Portanto, você pode usar Pools do Spark para processar os dados armazenados no Azure.”
Apache Spark: O Apache Spark oferece primitivos para computação de cluster na memória. Um trabalho do Spark pode carregar e armazenar dados em cache na memória e consultá-los várias vezes. A computação na memória é muito mais rápida do que os aplicativos baseados em disco. O Spark também se integra a diversas linguagens de programação para permitir a manipulação de conjuntos de dados distribuídos como coleções locais. Não é necessário para estruturar tudo como operações de mapeamento e redução.
Voltando…
O workspace do Synapse possui uma integração bem consolidada com o Spark; Ao criar um notebook em seu workspace, o Synapse Spark dá suporte a CSharp, Python,Scala e SQL.
📌 Um Pool do Spark pode ser acessado por vários usuários, mas para cada usuário uma nova instância do Spark será criado.
Arquitetura e Componentes
O Spark funciona em uma arquitetura master-slave, com um master e vários nodes de trabalho. Durante o runtime, a aplicação Spark faz um map de seus processos em curso, para unificalo em cluster.
Descrição dos componentes:
Driver program: É o coração de uma aplicação Spark, ele é responsável por manter as informações sobre o aplicativo durante sua vida útil.
SparkContext: É o gateway de entrada do Spark; As execuções de aplicativos são feitas em conjuntos independentes em processos clusterizados e coordenados pelo Driver Program.Cluster Manager (Yet Another Resource Negotiator [YARN]): É um dos gerenciadores de cluster que controlam as máquinas físicas e alocam recursos necessários para os aplicativos.Seu gerenciamento de cluster no Synapse Spark é o Apache Hadoop YARN.
Worker Node: Os worker nodes, são basicamente executores de tarefas que em seu cenário, são atribuidas pelo gerenciador de cluster para devolve-las para o SparkContext.
Executor: Os Executors são responsáveis pelo trabzlaho na forma de taferas, bem como por armazear qualquer dados em cache.
Existem três maneiras de executar o Apache Spark:
Standalone — O cluster Hadoop pode ser equipado com todos os recursos estaticamente e o Spark pode ser executado com o MapReduce em paralelo. Esta é a implantação mais simples.
No Hadoop YARN — Spark pode ser executado em cima do YARN sem qualquer pré-instalação. Essa implantação utiliza a força máxima do Spark e de outros componentes.
Spark In MapReduce (SIMR) — Se você não tiver o YARN, também poderá usar o Spark junto com o MapReduce. Isso reduz a carga de implantações.
Criando um Pool Synapse Spark
Podemos criar um workspace sem criar um Spark Pool. No entanto, você pode acessar o portal do Azure para criar uma pool em seu workspace, mas não pode criar um pool Spark sem ter um workspace criado no Synapse.(blz?)
Ao se logar no portal da Azure https://portal.azure.com
Navegue até seu Synapse Workspace, em Analytics pool, clique em Apache Spark pools.
Ao entrar na blade, clique em +NEW para criar seu Spark pool, como mostrado abaixo.
Após clicar em +New…
Em BASICS, você precisa informar um nome para o pool Apacha Spark; Defina as opções em Node Size para small e Number of nodes para uma escala reduzida, pois estamos apenas querendo testar e não gastar 😅
Em Autoscale, se você definir como Enable, significa que seu pool aumentará e diminuirá automaticamente com base na quantidade de actitivies. isso implica em custo!
Após finalizar a etapa acima, entramos na guia Additional Settings.
Nessa guia, você tem a opção de definir a duração do tempo ocioso antes da pausa automática entrar em ação, é sempre melhor mantê-lo definido como ativo para não gerar custo sem necessidade.
📍Nota: O Apache Spark no Azure Synapse Analytics possui uma instalação completa do Anaconda, além de libraries adicionais que são incluídas automaticamente quando uma instância é iniciada.
É possível atualizar as libraries existentes e/ou instalar novas durante ou após a criação do pool.
Em seguida, você cairá na guia de tags, após preencher os detalhes da tag, clique em Review +create. se tudo estiver certo, clique em Create.
Você pode criar essa mesma pool diretamente no Synapse Studio.
Vantagens ao usar Spark Pool: Há muitas vantagens ao usar o Spark sozinho, No entanto, a integração com o Azure Synapse Analytics agrega ainda mais valor ao Spark.
Vantagens:
- O spark vem com bibliotecas de alto nível, incluindo suporte para consultas SQL, streaming de dados, Machine Learning e Graph.
- Os notebooks Spark podem ser criados não apenas em Python, Scala e SQL, mas também em C#.
- Criação de triggers por meio de pipelines.
- Interface para usuário simples para configurar um pool do Spark e notebooks.
⚠️Esse artigo é baseado em recortes retirados de documentação e livros sobre Azure Synapse.
Referências:
Engenharia de dados com pools do MS Azure Synapse Apache Spark
Spark — Arquitetura de Sistemas Distribuídos
Apache Spark no Synapse Studio
The Modern Data Warehouse in Azure: Building with Speed and Agility on Microsoft’s Cloud Platform
https://github.com/franckepeixoto/Azure-Synapse-Analytics-Peixoto