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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Dataproc API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Dataproc API.
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 seguintes campos 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 ser de 4 a 63
caracteres minúsculos. Os caracteres válidos são
/[a-z][0-9]-/
. - Região: selecione uma região onde a carga de trabalho será executada.
- ID do lote: especifique um ID para a carga de trabalho em lote. Esse valor precisa ser 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. Como opção, é possível especificar Versão não padrão do ambiente de execução do Dataproc sem servidor.
- 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 usar para executar a carga de trabalho. Se você não especificar uma conta de serviço, a carga de trabalho é executado no Conta de serviço padrão do Compute Engine
- Configuração de rede: a sub-rede VPC que executa o Dataproc sem servidor para cargas de trabalho do Spark precisa estar ativado para 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 mostra as sub-redes na rede selecionada que estão ativadas para o Acesso privado do Google.
- Propriedades:insira
Key
(nome da propriedade) eValue
de propriedades do Spark compatíveis que será definido na carga de trabalho em lote do Spark. Observação: diferentemente do Dataproc no Compute Engine propriedades do cluster, As propriedades de carga de trabalho do Dataproc sem servidor para Spark não incluem umspark:
. . - Outras opções:
- É possível configurar a carga de trabalho em lote para usar uma Metastore do Hive (em inglês) 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
Enviar uma carga de trabalho em lote do Spark para calcular o valor aproximado
de pi
, execute a seguinte CLI gcloud
gcloud dataproc batches submit spark
localmente em uma janela de terminal ou
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. onde 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
ter o Acesso privado do Google ativado
e atender aos outros requisitos listados em
Dataproc sem servidor para configuração de rede do Spark.
Se a sub-rede da rede
default
para o A região especificada no comandogcloud dataproc batches submit
não está ativada para 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 a sinalização
--subnet=[SUBNET_URI]
no comando para especificar uma sub-rede que tenha 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.
--jars
:o arquivo JAR de exemplo vem pré-instalado no ambiente de execução do Spark. O argumento de comando1000
passado para a carga de trabalho SparkPi especifica 1.000 iterações da lógica de estimativa de pi (argumentos de entrada da carga de trabalho são incluída depois de "-- ").--properties
:é possível adicionar o--properties
. sinalização para entrar propriedades do Spark com suporte que você quer que a carga de trabalho em lote do Spark use.--deps-bucket
:é possível adicionar essa sinalização a especifique um bucket do Cloud Storage em que o Dataproc sem servidor fará o upload das dependências da 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 da imagem arquivos para uma pasta/dependencies
no bucket antes de executar 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 o--ttl
para especificar a duração do ciclo de vida do lote. Quando a carga de trabalho ultrapassa ele será encerrado incondicionalmente sem aguardar o trabalho em andamento para ser concluído. Especifique a duração usando ums
,m
,h
oud
(segundos, minutos, horas ou dias). O valor mínimo é de 10 minutos (10m
), e o valor máximo é 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 pode ser executada até sair naturalmente (ou executada para sempre se não sair). - 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 ambiente de execução 1.1 ou 2.0:se
- Outras opções:você pode adicionar
gcloud dataproc batches submit
sinalizações de comando 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 um
Metastore Hive autogerenciado
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 Dataproc de nó único
aglomerado. 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
existem.
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 Dataproc de nó único
aglomerado. 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
existem.
- Versão do ambiente de execução:
Use a sinalização
--version
para especificar o Dataproc sem servidor do ambiente de execução 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 um
Metastore Hive autogerenciado
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
do pi
usando o Dataproc sem servidor 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:
- Imagem-do-contêiner-personalizado: especifique a imagem do contêiner personalizado usando o formato de nomenclatura da 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. - Sub-rede:
A sub-rede VPC que executa o Dataproc sem servidor para cargas de trabalho do Spark precisa
ter o Acesso privado do Google ativado
e atender aos outros requisitos listados em
Dataproc sem servidor para configuração de rede do Spark.
Se o
default
sub-rede da rede da região especificada não está ativada para 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
ExecutionConfig.subnetworkUri
para especificar uma sub-rede que tenha 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é-instaladas no ambiente de execução do Spark. Os "1000"sparkBatch.args
é passado para a carga de trabalho SparkPi e especifica 1.000 iterações da estimativa de pi lógica.Spark properties
:use o RuntimeConfig.properties campo para inserir propriedades do Spark com suporte que você quer que a carga de trabalho em lote do Spark use.--ttl
:use oEnvironmentConfig.ttl
para especificar a duração do ciclo de vida do lote. Quando a carga de trabalho ultrapassa ele será encerrado incondicionalmente sem aguardar o trabalho em andamento para ser 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 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 pode ser executada até sair naturalmente (ou executada para sempre se não sair). - 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 ambiente de execução 1.1 ou 2.0:se
- Outras opções:
- Configurar a carga de trabalho em lote para usar externo autogerenciado Metastore do Hive.
- 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.
- Usar o
RuntimeConfig.version
como parte da solicitaçãobatches.create
para especificar um 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 a unidade de computação de dados (DCU) e embaralhar os recursos de armazenamento. Para um exemplo de saída para o Dataproc UsageMetrics para estimar o consumo e os custos dos recursos da carga de trabalho, consulte Preços do Dataproc sem servidor .
A seguir
Saiba mais sobre: