Saiba como usar o Serverless para Apache Spark para enviar uma carga de trabalho em lote numa infraestrutura de computação gerida pelo Dataproc que dimensiona 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Na Google Cloud consola, aceda a Dataproc Batches.
Clique em Criar.
Envie uma carga de trabalho em lote do Spark que calcule 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. Este valor tem de ter entre 4 e 63 carateres
em minúsculas. Os carateres válidos são
/[a-z][0-9]-/. - Região: selecione uma região onde a sua carga de trabalho vai ser executada.
- ID do lote: especifique um ID para a carga de trabalho em lote. Este valor tem de ter entre 4 e 63 carateres
em minúsculas. Os carateres válidos são
- Contentor:
- Tipo de lote: Spark.
- Versão do tempo de execução: a versão do tempo de execução predefinida está selecionada. Opcionalmente, pode especificar uma versão de tempo de execução do Serverless para Apache Spark não predefinida.
- Classe principal:
org.apache.spark.examples.SparkPi
- Ficheiros JAR (este ficheiro está pré-instalado no ambiente de execução do Spark do Serverless para Apache Spark).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1000.
- Configuração de execução: pode especificar uma conta de serviço a usar para executar a sua carga de trabalho. Se não especificar uma conta de serviço, a carga de trabalho é executada na conta de serviço predefinida do Compute Engine. A sua conta de serviço tem de ter a função de trabalhador do Dataproc.
- Configuração de rede: selecione uma sub-rede na região da sessão. O Serverless para Apache Spark ativa o Acesso privado do Google (PGA) na sub-rede especificada. Para ver os requisitos de conetividade de rede, consulte o artigo Google Cloud Configuração de rede do Serverless para Apache Spark.
- Propriedades: introduza o
Key(nome da propriedade) e oValuedas propriedades do Spark suportadas para definir na sua carga de trabalho em lote do Spark. Nota: ao contrário das propriedades do cluster do Dataproc no Compute Engine, as propriedades da carga de trabalho do Apache Spark sem servidor não incluem um prefixospark:. - Outras opções:
- Pode configurar a carga de trabalho em lote para usar um Hive Metastore autogerido externo.
- Pode usar um servidor de histórico persistente (PHS). O PHS tem de estar localizado na região onde executa cargas de trabalho em lote.
- Informações do lote:
Clique em Enviar para executar a carga de trabalho em lote do Spark.
- REGION: Especifique a região onde a sua carga de trabalho vai ser executada.
- Outras opções: pode adicionar
gcloud dataproc batches submit sparkflags para especificar outras opções de carga de trabalho e propriedades do Spark.--version: Pode especificar uma versão de tempo de execução do Serverless para Apache Spark não predefinida.--jars: O ficheiro JAR de exemplo está pré-instalado no ambiente de execução do Spark. O argumento de comando1000transmitido à carga de trabalho SparkPi especifica 1000 iterações da lógica de estimativa de pi (os argumentos de entrada da carga de trabalho são incluídos após "-- ").--subnet: Pode adicionar esta marca para especificar o nome de uma sub-rede na região da sessão. Se não especificar uma sub-rede, o Serverless para Apache Spark seleciona a sub-rededefaultna região da sessão. O Serverless para Apache Spark ativa o Acesso privado do Google (PGA) na sub-rede. Para ver os requisitos de conetividade de rede, consulte o artigo Google Cloud Configuração de rede do Serverless para Apache Spark.--properties: Pode adicionar esta flag para introduzir propriedades do Spark suportadas para a sua carga de trabalho em lote do Spark usar.--deps-bucket: Pode adicionar esta flag para especificar um contentor do Cloud Storage onde o Serverless para Apache Spark carrega as dependências da carga de trabalho. O prefixo do URI do contentor não é obrigatório. Pode especificar o caminho ou o nome do contentor.gs://O Serverless para Apache Spark carrega os ficheiros locais para uma pasta/dependenciesno contentor antes de executar a carga de trabalho em lote. Nota: esta flag é obrigatória se a sua carga de trabalho em lote fizer referência a ficheiros na sua máquina local.--ttl: pode adicionar a flag--ttlpara especificar a duração da duração total do lote. Quando a carga de trabalho excede esta duração, é terminada incondicionalmente sem aguardar que o trabalho em curso termine. Especifique a duração com um sufixo des,m,houd(segundos, minutos, horas ou dias). O valor mínimo é de 10 minutos (10m) e o valor máximo é de 14 dias (14d).- Lotes de tempo de execução 1.1 ou 2.0: se
--ttlnão for especificado para uma carga de trabalho de lote de tempo de execução 1.1 ou 2.0, a carga de trabalho pode ser executada até terminar naturalmente (ou ser executada indefinidamente se não terminar). - Lotes de tempo de execução 2.1 ou posterior: se
--ttlnão for especificado para uma carga de trabalho de lote de tempo de execução 2.1 ou posterior, o valor predefinido é4h.
- Lotes de tempo de execução 1.1 ou 2.0: se
--service-account: Pode especificar uma conta de serviço para usar na execução da sua carga de trabalho. Se não especificar uma conta de serviço, a carga de trabalho é executada na conta de serviço predefinida do Compute Engine. A sua conta de serviço tem de ter a função de trabalhador do Dataproc.- Hive Metastore: o comando seguinte configura uma carga de trabalho em lote para usar um
Hive Metastore autogerido
através de 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 persistente:
- O comando seguinte cria um PHS num cluster do Dataproc de nó único. O PHS tem de estar localizado na região onde executa cargas de trabalho em lote e o Cloud Storage bucket-name tem de 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 persistente 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 seguinte cria um PHS num cluster do Dataproc de nó único. O PHS tem de estar localizado na região onde executa cargas de trabalho em lote e o Cloud Storage bucket-name tem de existir.
- Versão de tempo de execução:
Use a flag
--versionpara especificar a versão de tempo de execução do Serverless para Apache Spark 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
- project-id: Um Google Cloud ID do projeto.
- region: Uma região do Compute Engine onde Google Cloud o Serverless para Apache Spark vai executar a carga de trabalho.
Envie uma carga de trabalho em lote do Spark
Pode usar a Google Cloud consola, a CLI do Google Cloud ou a API Serverless para Apache Spark para criar e enviar uma carga de trabalho em lote do Serverless para Apache Spark.
Consola
gcloud
Para enviar uma carga de trabalho em lote do Spark para calcular o valor aproximado de pi, execute o seguinte comando da CLI gcloud gcloud dataproc batches submit spark localmente numa 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
Substitua o seguinte:
API
Esta secção mostra como criar uma carga de trabalho em lote
para calcular o valor aproximado
de pi usando o Serverless para Apache Spark
batches.create`
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
Notas:
Método HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
Corpo JSON do pedido:
{
"sparkBatch":{
"args":[
"1000"
],
"jarFileUris":[
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
],
"mainClass":"org.apache.spark.examples.SparkPi"
}
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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":{
"version":"2.3",
"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"
}
Estime os custos da carga de trabalho
As cargas de trabalho sem servidor para o Apache Spark consomem a unidade de computação de dados (DCU) e os recursos de armazenamento de mistura. Para ver um exemplo que produz UsageMetrics do Dataproc para estimar o consumo de recursos e os custos da carga de trabalho, consulte os preços do Serverless para Apache Spark.
O que se segue?
Saiba mais acerca do: