Saiba como usar o Dataproc sem servidor 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
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Dataproc.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Dataproc.
Enviar uma carga de trabalho em lote do Spark
Console
No console do Google Cloud, acesse Lotes do Dataproc. Clique em Criar para abrir a página Criar lote.
Selecione e preencha os campos a seguir na página para enviar uma carga de trabalho em lote do Spark que calcula o valor aproximado de pi:
- 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 minúsculos. 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 minúsculos. Os caracteres válidos são
- Contêiner:
- Tipo de lote: Spark.
- Versão do ambiente de execução: é selecionada a versão padrão do ambiente de execução. Se quiser, especifique uma versão de ambiente de execução do Dataproc sem servidor não padrão.
- Classe principal:
org.apache.spark.examples.SparkPi
- Arquivos jar, que são pré-instalados no ambiente de execução Spark do Dataproc sem servidor.
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1.000.
- Configuração de execução: é possível especificar uma conta de serviço a ser usada 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.
- Configuração de rede: a sub-rede VPC que executa o Dataproc Serverless para cargas de trabalho do Spark precisa ser ativada para o Acesso privado do Google e atender aos outros requisitos listados em Dataproc sem servidor para configuração de rede do Spark. A lista de sub-redes exibe sub-redes na rede selecionada que estão ativadas para o Acesso privado do Google.
- Propriedades: insira o
Key
(nome da propriedade) eValue
das propriedades do Spark compatíveis para definir na carga de trabalho em lote do Spark. Observação: diferentemente das propriedades de cluster do Dataproc no Compute Engine, as propriedades de carga de trabalho do Dataproc sem servidor 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 externo autogerenciado .
- É possível usar um Persistent History Server (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 seguinte comando gcloud dataproc batches submit spark
da CLI gcloud localmente em uma janela do 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 VPC que executa o Dataproc sem servidor para cargas de trabalho do Spark precisa
ser ativada para Acesso privado do Google
e atender aos outros requisitos listados em
Configuração de rede do Dataproc sem servidor 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, será preciso executar um dos seguintes procedimentos:- Ative a sub-rede da rede padrão para o Acesso privado do Google na região ou
- Use a sinalização
--subnet=[SUBNET_URI]
no comando para especificar uma sub-rede que tenha o Acesso privado do Google ativado. Execute o comandogcloud compute networks describe [NETWORK_NAME]
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 da carga de trabalho são incluídos após "-- ").--properties
: é possível adicionar a sinalização--properties
para inserir as propriedades do Spark compatíveis que você quer que a carga de trabalho em lote do Spark use.--deps-bucket
: é possível adicionar essa sinalização para especificar um bucket do Cloud Storage em que o Dataproc sem servidor fará upload das dependências de carga de trabalho. O prefixo 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 sinalização será obrigatória se a carga de trabalho em lote referenciar arquivos na sua máquina local.--ttl
: é possível adicionar a sinalização--ttl
para especificar a duração do ciclo de vida do lote. Quando a carga de trabalho excede essa duração, ela é encerrada incondicionalmente sem aguardar a conclusão do trabalho em andamento. 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 valor máximo é de 14 dias (14d
).- Lotes de ambiente de execução 1.1 ou 2.0: se
--ttl
não for especificado para uma carga de trabalho em lote de ambiente de execução 1.1 ou 2.0, a carga de trabalho poderá ser executada até sair naturalmente (ou executar para sempre, caso não seja encerrada). - Lotes de ambiente de execução 2.1+: se
--ttl
não for especificado para uma carga de trabalho em lote de ambiente de execução 2.1 ou posterior, o padrão será4h
.
- Lotes de ambiente de execução 1.1 ou 2.0: se
- Outras opções:é possível adicionar
flags do comando
gcloud dataproc batches submit
para especificar outras opções de carga de trabalho e propriedades do Spark.- Metastore Hive: o comando a seguir configura uma carga de trabalho em lote para usar um
Metastore Hive autogerenciado externo usando uma configuração padrão do Spark.
gcloud dataproc batches submit \ --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 Persistent History Server 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 sinalização
--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 Hive: o comando a seguir configura uma carga de trabalho em lote para usar um
Metastore Hive autogerenciado externo usando uma configuração padrão do Spark.
API
Nesta seção, mostramos como criar uma carga de trabalho em lote
para calcular o valor aproximado
de pi
usando o Dataproc sem servidor para Spark
batches.create
`.
Antes de usar os dados da solicitação, 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 executará a carga de trabalho. Observações:
- Custom-container-image: especifique a imagem personalizada do contêiner 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: você precisa hospedar seu contêiner personalizado no Container Registry. - Sub-rede:
a sub-rede VPC que executa o Dataproc sem servidor para cargas de trabalho do Spark precisa
ser ativada para Acesso privado do Google
e atender aos outros requisitos listados em
Configuração de rede do Dataproc sem servidor para Spark.
Se a sub-rede da rede
default
para a região especificada não estiver ativada para o Acesso privado do Google, siga um destes procedimentos:- Ative a sub-rede da rede padrão para o Acesso privado do Google na região ou
- Use o campo
ExecutionConfig.subnetworkUri
para especificar uma sub-rede que tenha o Acesso privado do Google ativado. Execute o comandogcloud compute networks describe [NETWORK_NAME]
para listar os URIs das sub-redes em uma rede.
sparkBatch.jarFileUris
: o arquivo jar de exemplo vem pré-instalado no ambiente de execução do Spark. O valor de "1.000"sparkBatch.args
é transmitido para a carga de trabalho SparkPi e especifica 1.000 iterações da lógica de estimativa de pi.Spark properties
: é possível usar o campo RuntimeConfig.properties para inserir as propriedades do Spark compatíveis que você quer que a carga de trabalho em lote do Spark use.--ttl
: é possível usar o campoEnvironmentConfig.ttl
para especificar a duração do ciclo de vida do lote. Quando a carga de trabalho excede essa duração, ela é encerrada incondicionalmente sem aguardar a conclusão do trabalho em andamento. Especifique a duração como a representação JSON de Duração. O valor mínimo é 10 minutos, e o valor máximo é 14 dias.- Lotes de ambiente de execução 1.1 ou 2.0: se
--ttl
não for especificado para uma carga de trabalho em lote de ambiente de execução 1.1 ou 2.0, a carga de trabalho poderá ser executada até sair naturalmente (ou executar para sempre, caso não seja encerrada). - Lotes de ambiente de execução 2.1+: se
--ttl
não for especificado para uma carga de trabalho em lote de ambiente de execução 2.1 ou posterior, o padrão será quatro horas.
- Lotes de ambiente 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 externo e autogerenciado.
- Use um servidor de histórico permanente (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 não padrão do ambiente de execuçã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 sem servidor para cargas de trabalho do Spark consome recursos de unidade de computação de dados (DCU, na sigla em inglês) e de armazenamento de embaralhamento. Para um exemplo de saída do Dataproc UsageMetrics para estimar o consumo e os custos de recursos de carga de trabalho, consulte Preços do Dataproc sem servidor .
A seguir
Saiba mais sobre: