Serviço Gerenciado para Apache Spark

1. Introdução: Serviço Gerenciado para Apache Spark

O Serviço Gerenciado para Apache Spark é um serviço totalmente gerenciado e altamente escalonável para executar o Apache Spark, o Apache Flink, o Presto e muitas outras ferramentas e frameworks de código aberto. Use o Serviço Gerenciado para Apache Spark para modernização do data lake, ETL / ELT e ciência de dados segura em escala planetária. O Serviço Gerenciado para Apache Spark também é totalmente integrado a vários serviços do Google Cloud, incluindo BigQuery, Cloud Storage, Gemini Enterprise Agent Engine e Knowledge Catalog.

O Serviço Gerenciado para Apache Spark está disponível em dois modos de implantação:

  • O Serverless para Apache Spark gerenciado permite executar jobs do PySpark sem precisar configurar a infraestrutura e o escalonamento automático. O Apache Spark gerenciado oferece suporte a cargas de trabalho e sessões / notebooks em lote do PySpark.
  • Os clusters do Apache Spark gerenciado permitem gerenciar um cluster Hadoop YARN para cargas de trabalho do Spark baseadas em YARN, além de ferramentas de código aberto, como Flink e Presto. É possível personalizar seus clusters baseados na nuvem com o escalonamento vertical ou horizontal que você quiser, incluindo o escalonamento automático.

2. Criar um cluster do Apache Spark gerenciado em uma VPC do Google Cloud

Nesta etapa, você vai criar um cluster do Apache Spark gerenciado no Google Cloud usando o console do Google Cloud.

Como primeira etapa, ative a API do serviço gerenciado do Apache Spark no console. Depois de ativada, pesquise "Apache Spark gerenciado" na barra de pesquisa e clique em Criar cluster.

Selecione Cluster no Compute Engine para usar VMs do Google Compute Engine(GCE) como a infraestrutura subjacente para executar clusters do Apache Spark gerenciado.

a961b2e8895e88da.jpeg

Agora você está na página de criação de clusters.

9583c91204a09c12.jpeg

Nesta página:

  • Forneça um nome exclusivo para o cluster.
  • Selecione a região específica . Também é possível selecionar uma zona. No entanto, o Apache Spark gerenciado oferece a capacidade de escolher uma automaticamente. Para este codelab, selecione "us-central1" e "us-central1-c".
  • Selecione o tipo de cluster "Padrão". Isso garante que haja um nó mestre.
  • Na guia Configurar nós, confirme que o número de workers criados será dois.
  • Na seção Personalizar cluster, marque a caixa ao lado de Ativar o gateway de componentes. Isso permite o acesso a interfaces da Web no cluster, incluindo a interface do Spark, o Yarn Node Manager e os notebooks do Jupyter.
  • Em Componentes opcionais, selecione Notebook do Jupyter. Isso configura o cluster com um servidor de notebooks do Jupyter.
  • Deixe todo o resto como está e clique em Criar cluster.

Isso vai ativar um cluster do Apache Spark gerenciado.

3. Iniciar o cluster e usar o SSH nele

Quando o status do cluster mudar para Em execução, clique no nome do cluster no console do Apache Spark gerenciado.

7332f1c2cb25807d.jpeg

Clique na guia Instância de VM para conferir o nó mestre e os dois nós de worker do cluster.

25be1578e00f669f.jpeg

Clique em SSH ao lado do nó mestre para fazer login nele.

2810ffd97f315bdb.jpeg

Execute comandos hdfs para conferir a estrutura de diretórios.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. Interfaces da Web e gateways de componentes

No console do cluster do Apache Spark gerenciado, clique no nome do cluster e, em seguida, na guia INTERFACES DA WEB.

6398f71d6293d6ff.jpeg

Isso mostra as interfaces da Web disponíveis, incluindo o Jupyter. Clique em Jupyter para abrir um notebook do Jupyter. É possível usar isso para criar notebooks no PySpark armazenados no GCS. para armazenar seu notebook no Google Cloud Storage e abrir um notebook PySpark para usar neste codelab.

5. Monitorar e observar jobs do Spark

Com o cluster do Apache Spark gerenciado em execução, crie um job em lote do PySpark e envie-o para o cluster do Apache Spark gerenciado.

Crie um bucket do Google Cloud Storage (GCS) para armazenar o script do PySpark. Crie o bucket na mesma região do cluster do Apache Spark gerenciado.

679fd2f76806f4e2.jpeg

Agora que o bucket do GCS foi criado, copie o arquivo a seguir para ele.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Esse script cria um DataFrame de amostra do Spark e o grava como uma tabela do Hive.

hive_job.py

from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row

spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()

df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
        (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
    ], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")

Envie esse script como um job em lote do Spark no Apache Spark gerenciado. Clique em Jobs no menu de navegação à esquerda e em Enviar job.

5767fc7c50b706d3.jpeg

Forneça umcódigo da tarefa e uma região. Selecione o cluster e forneça o local do GCS do script do Spark que você copiou. Esse job será executado como um job em lote do Spark no Apache Spark gerenciado.

Em Propriedades , adicione a chave spark.submit.deployMode e o valor client para garantir que o driver seja executado no nó mestre do Apache Spark gerenciado e não nos nós de worker. Clique em Enviar para enviar o job em lote ao Apache Spark gerenciado.

a7ca90f5132faa31.jpeg

O script do Spark vai criar um DataFrame e gravar em uma tabela do Hive test_table_1.

Depois que o job for executado, você poderá conferir as instruções de impressão do console na guia Monitoramento.

bdec2f3ae1055f9.jpeg

Agora que a tabela do Hive foi criada, envie outro job de consulta do Hive para selecionar o conteúdo da tabela e mostrar no console.

Crie outro job com as seguintes propriedades:

c16f02d1b3afaa27.jpeg

Observe que o Tipo de job está definido como Hive e o tipo de origem da consulta é Texto da consulta, o que significa que vamos gravar toda a instrução HiveQL na caixa de texto Texto da consulta.

Envie o job, mantendo o restante dos parâmetros como padrão.

e242e50bc2519bf4.jpeg

Observe como o HiveQL seleciona todos os registros e mostra no console.

6. Escalonamento automático

O escalonamento automático é a tarefa de estimar o número "certo" de nós de worker do cluster para uma carga de trabalho.

A API ScalingPolicies do Apache Spark gerenciado fornece um mecanismo para automatização do gerenciamento de recursos do cluster. Além disso, permite o escalonamento automático da VM de worker do cluster. Uma política de escalonamento automático é uma configuração reutilizável que descreve como os workers do cluster que usam a política de escalonamento automático precisam ser escalonados. Ele define limites de escala, frequência e agressividade para fornecer controle refinado sobre os recursos do cluster durante a vida útil do cluster.

As políticas de escalonamento automático do Apache Spark gerenciado são gravadas usando arquivos YAML, que são transmitidos no comando da CLI para criar o cluster ou selecionados em um bucket do GCS quando um cluster é criado no console do Cloud.

Confira um exemplo de uma política de escalonamento automático do Apache Spark gerenciado :

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. Configurar componentes opcionais do Apache Spark gerenciado

Isso vai ativar um cluster do Apache Spark gerenciado.

Quando você cria um cluster do Apache Spark gerenciado, os componentes padrão do ecossistema Apache Hadoop são instalados automaticamente. Para saber mais, consulte a lista de versões do Apache Spark gerenciado. Ao criar um cluster, é possível instalar componentes adicionais, chamados Componentes opcionais.

e39cc34245af3f01.jpeg

Ao criar o cluster do Apache Spark gerenciado no console, ativamos os componentes opcionais e selecionamos o Notebook do Jupyter como o componente opcional.

8. Limpar recursos

Para limpar o cluster, clique em Parar depois de selecionar o cluster no console do Apache Spark gerenciado. Quando o cluster parar, clique em Excluir para excluir o cluster.

Depois que o cluster do Apache Spark gerenciado for excluído, exclua os buckets do GCS em que o código foi copiado.

Para limpar os recursos e interromper qualquer faturamento indesejado, o cluster do Apache Spark gerenciado precisa ser interrompido e excluído.

Antes de interromper e excluir o cluster, verifique se todos os dados gravados no armazenamento HDFS foram copiados para o GCS para armazenamento durável.

Para interromper o cluster, clique em Parar.

52065de928ab52e7.jpeg

Quando o cluster parar, clique em Excluir para excluir o cluster.

Na caixa de diálogo de confirmação, clique em Excluir para excluir o cluster.

52065de928ab52e7.jpeg