Saiba como enviar uma carga de trabalho em lote na infraestrutura de computação do Managed Service for Apache Spark, que dimensiona os recursos conforme necessário.
Antes de começar
Configure seu projeto e, se necessário, conceda papéis do Identity and Access Management.
Criar o projeto
Execute uma ou mais das etapas a seguir, conforme necessário:
- Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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.
Conceder papéis do IAM, se necessário
Alguns papéis do IAM são necessários para executar os exemplos nesta página. Dependendo das políticas da organização, esses papéis já podem ter sido concedidos. Para verificar as concessões de papéis, consulte Você precisa conceder papéis?.
Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Papéis do usuário
Para receber as permissões necessárias para enviar uma carga de trabalho em lote sem servidor, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor do Dataproc (
roles/dataproc.editor) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço padrão do Compute Engine
Papel de conta de serviço
Para garantir que a conta de serviço padrão do Compute Engine tenha as permissões necessárias para enviar uma carga de trabalho em lote sem servidor, peça ao administrador para conceder o papel do IAM de worker do Dataproc (roles/dataproc.worker) à conta de serviço padrão do Compute Engine no projeto.
Enviar uma carga de trabalho em lote do Spark
Use o Google Cloud console, a Google Cloud CLI ou a API REST para criar e enviar uma carga de trabalho em lote do Managed Service for Apache Spark.
Console
No Google Cloud console, acesse Lotes do Managed Service for Apache Spark.
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 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: confirme ou selecione a versão
3.0do ambiente de execução. - Classe principal:
org.apache.spark.examples.SparkPi
- Arquivos JAR (esse arquivo é pré-instalado no ambiente de execução do Spark do Managed Service for Apache Spark).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1000.
- Configuração de execução:selecione Conta de serviço. Por padrão, o lote será executado usando a conta de serviço padrão do Compute Engine. É possível especificar uma conta de serviço personalizada. A conta de serviço padrão ou personalizada precisa ter o papel de worker do Dataproc.
- Configuração de rede:selecione uma sub-rede na região da sessão. O Managed Service for Apache Spark ativa o Acesso privado do Google (PGA) na sub-rede especificada. Para requisitos de conectividade de rede, consulte Configuração de rede do Managed Service for Apache Spark.
- Propriedades: insira a
Key(nome da propriedade) e oValuede propriedades do Spark compatíveis a serem definidas na carga de trabalho em lote do Spark. Observação: ao contrário das propriedades de cluster do Managed Service for Apache Spark , as propriedades de carga de trabalho do Managed Service for Apache 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 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 seguinte comando da CLI gcloud
gcloud dataproc batches submit spark
localmente em uma janela do terminal ou no
Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
Substitua:
- REGION: Especifique a região onde a carga de trabalho será executada.
- Outras opções: é possível adicionar
gcloud dataproc batches submit sparkflags para especificar outras opções de carga de trabalho e propriedades do Spark.--jars: o arquivo JAR de exemplo é pré-instalado no ambiente de execução do Spark. O argumento de comando1000transmitido 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 "-- ").--subnet: é possível adicionar essa flag para especificar o nome de uma sub-rede na região da sessão. Se você não especificar uma sub-rede, o Managed Service for Apache Spark vai selecionar adefaultsub-rede na região da sessão. O Managed Service for Apache Spark ativa o Acesso privado do Google (PGA) na sub-rede. Para requisitos de conectividade de rede, consulte Configuração de rede do Managed Service for Apache Spark.--tags: é possível adicionar essa flag para especificar tags de rede para controle de tráfego. Use tags de rede para limitar a conectividade. Na produção, a prática recomendada é limitar as regras de firewall aos endereços IP usados pelas cargas de trabalho do Spark.--properties: é possível adicionar essa flag para inserir propriedades do Spark compatíveis para uso na carga de trabalho em lote do Spark.--deps-bucket: é possível adicionar essa flag para especificar um bucket do Cloud Storage em que o Managed Service for Apache Spark vai fazer o upload das dependências da carga de trabalho. O prefixo de URIgs://do bucket não é obrigatório. É possível especificar o caminho ou o nome do bucket. O Managed Service for Apache Spark faz o upload dos arquivos locais para uma pasta/dependenciesno bucket antes de executar a carga de trabalho em lote. Observação: essa flag é obrigatória se a carga de trabalho em lote fizer referência a arquivos na máquina local.--ttl: é possível adicionar a--ttlflag para especificar a duração do ciclo de vida do lote. Quando a carga de trabalho excede essa duração, ela é encerrada incondicionalmente sem esperar que o trabalho em andamento termine. Especifique a duração usando ums,m,h, oud(segundos, minutos, horas ou dias) sufixo. 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
--ttlnão for especificado para uma carga de trabalho em lote do ambiente de execução 1.1 ou 2.0, a carga de trabalho poderá ser executada até sair naturalmente (ou executar para sempre se não sair). - Lotes de ambiente de execução 2.1 ou mais recentes:se
--ttlnão for especificado para uma carga de trabalho em lote do ambiente 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
--service-account: é 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. A conta de serviço precisa ter o papel de worker do Dataproc.- Metastore do Hive: o comando a seguir configura uma carga de trabalho em lote para usar um
Metastore do Hive autogerenciado
externo 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 persistente:
- O comando a seguir cria um PHS em um cluster de nó único do Managed Service for Apache Spark
cluster. 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 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 a seguir cria um PHS em um cluster de nó único do Managed Service for Apache Spark
cluster. 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
--versionflag para especificar a versão do ambiente de execução do Managed Service for 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
API
Nesta seção, mostramos como criar uma carga de trabalho em lote
para calcular o valor aproximado
de pi usando o Managed Service for Apache Spark
batches.create`
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: um Google Cloud ID do projeto.
- region: uma região do Compute Engine em que o Managed Service for Apache Spark vai executar a carga de trabalho.
- PROJECT_ID: o ID do projeto do Google Cloud . Os IDs do projeto estão listados na seção Informações do projeto no painel do Google Cloud console Dashboard.
- REGION: a região da sessão.
Observações :
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"
],
"runtimeConfig": {
"version": "2.3",
},
"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":{
"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"
}
Estimar custos de carga de trabalho
As cargas de trabalho do Managed Service for Apache Spark consomem unidades de computação de dados (DCUs, na sigla em inglês) e recursos de armazenamento de embaralhamento. Para conferir um exemplo que gera Managed Service for Apache Spark UsageMetrics para estimar o consumo de recursos e os custos da carga de trabalho, consulte Preços do Managed Service for Apache Spark.
A seguir
Saiba mais sobre: