Saiba como usar o Dataproc Serverless para enviar uma carga de trabalho em lote em uma infraestrutura de computação gerenciada pelo Dataproc que escalona os recursos conforme necessário.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Enviar uma carga de trabalho em lote do Spark
É possível usar o console do Google Cloud, a Google Cloud CLI ou a API Dataproc Serverless para criar e enviar uma carga de trabalho em lote do Dataproc Serverless para o Spark.
Console
No console do Google Cloud, acesse os lotes do Dataproc.
Clique em Criar.
Envie uma carga de trabalho em lote do Spark que calcula o valor aproximado de pi selecionando e preenchendo os seguintes campos:
- Informações do lote:
- ID do lote: especifique um ID para a carga de trabalho em lote. Esse valor precisa ter de 4 a 63
caracteres em letras minúsculas. Os caracteres válidos são
/[a-z][0-9]-/
. - Região: selecione uma região em que a carga de trabalho será executada.
- ID do lote: especifique um ID para a carga de trabalho em lote. Esse valor precisa ter de 4 a 63
caracteres em letras minúsculas. Os caracteres válidos são
- Contêiner:
- Tipo de lote: Spark.
- Versão do ambiente de execução: a versão padrão do ambiente de execução é selecionada. Você pode especificar uma versão de ambiente de execução não padrão do Dataproc Serverless.
- Classe principal:
org.apache.spark.examples.SparkPi
- Arquivos JAR: esse arquivo é pré-instalado no ambiente de execução do Dataproc Serverless para Spark.
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1000.
- Configuração de execução:é possível especificar uma conta de serviço para executar a carga de trabalho. Se você não especificar uma conta de serviço, a carga de trabalho será executada na conta de serviço padrão do Compute Engine. Sua conta de serviço precisa ter o papel de worker do Dataproc.
- Configuração de rede:a sub-rede da VPC que executa cargas de trabalho do Dataproc Serverless para Spark precisa estar ativada para o Acesso particular do Google e atender aos outros requisitos listados em Configuração de rede do Dataproc Serverless para Spark. A lista de sub-redes mostra as sub-redes na rede selecionada que estão ativadas para o Acesso privado do Google.
- Propriedades:insira
Key
(nome da propriedade) eValue
das propriedades do Spark com suporte para definir na carga de trabalho em lote do Spark. Observação: ao contrário do Dataproc nas propriedades de cluster do Compute Engine, as propriedades de carga de trabalho do Dataproc Serverless para Spark não incluem um prefixospark:
. - Outras opções:
- É possível configurar a carga de trabalho em lote para usar um metastore do Hive autogerenciado externo.
- Você pode usar um servidor de histórico persistente (PHS). O PHS precisa estar localizado na região em que você executa cargas de trabalho em lote.
- Informações do lote:
Clique em Enviar para executar a carga de trabalho em lote do Spark.
gcloud
Para enviar uma carga de trabalho em lote do Spark para calcular o valor aproximado
de pi
, execute o comando
gcloud dataproc batches submit spark
da CLI gcloud localmente em uma janela de terminal ou no
Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
Observações:
- REGION: Especifique a região em que a carga de trabalho será executada.
- Sub-rede:a sub-rede da VPC que executa cargas de trabalho do Dataproc Serverless para Spark precisa
ter o Acesso particular do Google ativado
e atender aos outros requisitos listados em
Configuração de rede do Dataproc Serverless para Spark.
Se a sub-rede da rede
default
para a região especificada no comandogcloud dataproc batches submit
não estiver ativada para o Acesso privado do Google, faça uma das seguintes ações:- Ative a sub-rede da rede padrão para a região no Acesso privado do Google ou
- Use a flag
--subnet=SUBNET_URI
para especificar uma sub-rede com o Acesso privado do Google ativado. É possível executar o comandogcloud compute networks describe <var>NETWORK_NAME</var>
para listar os URIs das sub-redes em uma rede.
--jars
: O arquivo JAR de exemplo é pré-instalado no ambiente de execução do Spark. O argumento de comando1000
transmitido para a carga de trabalho do SparkPi especifica 1.000 iterações da lógica de estimativa de pi. Os argumentos de entrada de carga de trabalho são incluídos após o "-- ".--properties
: É possível adicionar essa flag para inserir propriedades do Spark com suporte para que sua carga de trabalho em lote do Spark seja usada.--deps-bucket
: você pode adicionar essa flag para especificar um bucket do Cloud Storage em que o Dataproc Serverless vai fazer upload das dependências de carga de trabalho. O prefixo do URIgs://
do bucket não é obrigatório. É possível especificar o caminho ou o nome do bucket, por exemplo, "mybucketname". O Dataproc Serverless para Spark faz o upload dos arquivos locais para uma pasta/dependencies
no bucket antes de executar a carga de trabalho em lote. Observação:essa flag é obrigatória se a carga de trabalho em lote referencia arquivos na máquina local.--ttl
: é possível adicionar a flag--ttl
para especificar a duração da vida útil do lote. Quando a carga de trabalho excede essa duração, ela é encerrada incondicionalmente sem esperar que o trabalho em andamento seja concluído. Especifique a duração usando um sufixos
,m
,h
oud
(segundos, minutos, horas ou dias). O valor mínimo é de 10 minutos (10m
), e o máximo é de 14 dias (14d
).- Lotes de execução 1.1 ou 2.0:se
--ttl
não for especificado para uma carga de trabalho de lote de execução 1.1 ou 2.0, ela poderá ser executada até que seja encerrada naturalmente (ou será executada para sempre, se não for encerrada). - Lotes de execução 2.1 ou mais recentes:se
--ttl
não for especificado para uma carga de trabalho de lote de execução 2.1 ou mais recente, o padrão será4h
.
- Lotes de execução 1.1 ou 2.0:se
--service-account
: É possível especificar uma conta de serviço para executar a carga de trabalho. Se você não especificar uma conta de serviço, a carga de trabalho será executada na conta de serviço padrão do Compute Engine. Sua conta de serviço precisa ter o papel de worker do Dataproc.- Outras opções:é possível adicionar flags
gcloud dataproc batches submit spark
para especificar outras opções de carga de trabalho e propriedades do Spark.- Metastore do Hive: o comando a seguir configura uma carga de trabalho em lote para usar uma metastore autogerenciada do Hive externa usando uma configuração padrão do Spark.
gcloud dataproc batches submit spark\ --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \ other args ...
- Servidor de histórico permanente:
- O comando a seguir cria um PHS em um cluster do Dataproc de nó único. O PHS precisa estar localizado na região em que você executa cargas de trabalho em lote, e o bucket-name do Cloud Storage precisa existir.
gcloud dataproc clusters create PHS_CLUSTER_NAME \ --region=REGION \ --single-node \ --enable-component-gateway \ --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
- Envie uma carga de trabalho em lote, especificando o servidor de histórico permanente em execução.
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \ -- 1000
- O comando a seguir cria um PHS em um cluster do Dataproc de nó único. O PHS precisa estar localizado na região em que você executa cargas de trabalho em lote, e o bucket-name do Cloud Storage precisa existir.
- Versão do ambiente de execução:
use a flag
--version
para especificar a versão do ambiente de execução do Dataproc sem servidor para a carga de trabalho.gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --version=VERSION -- 1000
- Metastore do Hive: o comando a seguir configura uma carga de trabalho em lote para usar uma metastore autogerenciada do Hive externa usando uma configuração padrão do Spark.
API
Esta seção mostra como criar uma carga de trabalho em lote para calcular o valor aproximado de pi
usando o Dataproc Serverless para Spark batches.create
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: um ID do projeto do Google Cloud.
- region: uma região do Compute Engine em que o Dataproc sem servidor vai executar a carga de trabalho. Observações:
RuntimeConfig.containerImage
: Você pode especificar uma imagem de contêiner personalizada usando o formato de nomenclatura de imagem do Docker:{hostname}/{project-id}/{image}:{tag}
, por exemplo, "gcr.io/my-project-id/my-image:1.0.1". Observação:é necessário hospedar o contêiner personalizado no Container Registry.ExecutionConfig.subnetworkUri
: A sub-rede da VPC que executa cargas de trabalho do Dataproc Serverless para Spark precisa ser ativada para o Acesso privado do Google e atender aos outros requisitos listados em Configuração de rede do Dataproc Serverless para Spark. Se a sub-rede da rededefault
para a região especificada não estiver ativada para o Acesso privado do Google, faça o seguinte:- Ative a sub-rede da rede padrão para a região no Acesso privado do Google ou
- Use o campo
ExecutionConfig.subnetworkUri
para especificar uma sub-rede com o Acesso privado do Google ativado. É possível executar o comandogcloud compute networks describe [NETWORK_NAME]
para listar os URIs das sub-redes em uma rede.
sparkBatch.jarFileUris
: O arquivo JAR de exemplo é pré-instalado no ambiente de execução do Spark. O valor "1000"sparkBatch.args
é transmitido para a carga de trabalho do SparkPi e especifica 1.000 iterações da lógica de estimativa de pi.RuntimeConfig.properties
:use esse campo para inserir propriedades do Spark com suporte para que sua carga de trabalho em lote do Spark seja usada.ExecutionConfig.serviceAccount
: É possível especificar uma conta de serviço para executar a carga de trabalho. Se você não especificar uma conta de serviço, a carga de trabalho será executada na conta de serviço padrão do Compute Engine. Sua conta de serviço precisa ter o papel de worker do Dataproc.EnvironmentConfig.ttl
:use este campo para especificar a duração da vida útil do lote. Quando a carga de trabalho excede essa duração, ela é encerrada incondicionalmente sem esperar que o trabalho em andamento seja concluído. Especifique a duração como a representação JSON para Duração. O valor mínimo é de 10 minutos, e o máximo é de 14 dias.- Lotes de execução 1.1 ou 2.0:se
--ttl
não for especificado para uma carga de trabalho de lote de execução 1.1 ou 2.0, ela poderá ser executada até ser encerrada naturalmente (ou ser executada para sempre, se não for encerrada). - 2.1+ lotes de execução:se
--ttl
não for especificado para uma carga de trabalho de lote de execução 2.1 ou mais recente, o padrão será 4 horas.
- Lotes de execução 1.1 ou 2.0:se
- Outras opções:
- Configure a carga de trabalho em lote para usar um metastore do Hive autogerenciado externo.
- Use um servidor de histórico persistente (PHS, na sigla em inglês). O PHS precisa estar localizado na região em que você executa cargas de trabalho em lote.
- Use o campo
RuntimeConfig.version
como parte da solicitaçãobatches.create
para especificar uma versão de ambiente de execução não padrão do Dataproc sem servidor. .
Método HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
Corpo JSON da solicitação:
{ "sparkBatch":{ "args":[ "1000" ], "jarFileUris":[ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ], "mainClass":"org.apache.spark.examples.SparkPi" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name":"projects/project-id/locations/region/batches/batch-id", "uuid":",uuid", "createTime":"2021-07-22T17:03:46.393957Z", "sparkBatch":{ "mainClass":"org.apache.spark.examples.SparkPi", "args":[ "1000" ], "jarFileUris":[ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ] }, "runtimeInfo":{ "outputUri":"gs://dataproc-.../driveroutput" }, "state":"SUCCEEDED", "stateTime":"2021-07-22T17:06:30.301789Z", "creator":"account-email-address", "runtimeConfig":{ "properties":{ "spark:spark.executor.instances":"2", "spark:spark.driver.cores":"2", "spark:spark.executor.cores":"2", "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id" } }, "environmentConfig":{ "peripheralsConfig":{ "sparkHistoryServerConfig":{ } } }, "operation":"projects/project-id/regions/region/operation-id" }
Estimar custos de carga de trabalho
O Dataproc Serverless para cargas de trabalho do Spark consome unidades de computação de dados (DCUs) e recursos de armazenamento de shuffle. Para conferir um exemplo que gera UsageMetrics do Dataproc para estimar o consumo de recursos e os custos da carga de trabalho, consulte Preços do Dataproc sem servidor.
A seguir
Saiba mais sobre: