Saiba como enviar uma carga de trabalho em lote no Google Cloud Serverless para Apache Spark: uma infraestrutura de computação gerida que dimensiona os recursos conforme necessário.
Antes de começar
Configure o seu projeto e, se necessário, conceda funções de gestão de identidade e acesso.
Configure o seu projeto
Efetue um ou mais dos seguintes passos, conforme necessário:
- 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 role
(
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 role
(
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. -
Editor do Dataproc (
roles/dataproc.editor) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço predefinida do Compute Engine 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: confirme ou selecione a
2.3versão do tempo de execução. - 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: selecione Conta de serviço. Por predefinição, o lote é executado com a conta de serviço predefinida do Compute Engine. Pode especificar uma conta de serviço personalizada. A conta de serviço predefinida ou personalizada 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 flags para especificar outras opções de carga de trabalho e propriedades do Spark.
gcloud dataproc batches submit spark--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 validade 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 o Google Cloud Serverless para Apache Spark vai executar a carga de trabalho.
Conceda funções IAM, se necessário
São necessárias determinadas funções de IAM para executar os exemplos nesta página. Consoante as políticas da organização, estas funções podem já ter sido concedidas. Para verificar as concessões de funções, consulte a secção Precisa de conceder funções?.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Funções do utilizador
Para receber as autorizações de que precisa para enviar uma carga de trabalho em lote sem servidor, peça ao seu administrador que lhe conceda as seguintes funções da IAM:
Função da conta de serviço
Para garantir que a conta de serviço predefinida do Compute Engine tem as autorizações necessárias para enviar uma carga de trabalho em lote sem servidor,
peça ao seu administrador para conceder à conta de serviço predefinida do Compute Engine a função de IAM Trabalhador do Dataproc (roles/dataproc.worker) no projeto.
Envie uma carga de trabalho em lote do Spark
Pode usar a Google Cloud consola, a CLI Google Cloud ou a API Dataproc para criar e enviar uma carga de trabalho em lote sem servidor 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 \ --version=2.3 \ --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"
],
"runtimeConfig": {
"version": "2.3",
},
"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: