Todos os produtos
Search
Central de documentação

E-MapReduce:Gerencie mecanismos de computação do Kyuubi

Última atualização: Jun 27, 2026

O Kyuubi em um cluster E-MapReduce (EMR) executa o Spark 3.x no YARN. Cada mecanismo Spark 3.x corresponde a uma aplicação Spark no YARN. Não há suporte para Flink, Trino e Spark 2.x.

Pré-requisitos

Antes de começar, verifique se:

  • O YARN e o Spark 3.x estão instalados no cluster EMR

  • Todos os usuários estão autenticados via Lightweight Directory Access Protocol (LDAP) ou Kerberos

Níveis de compartilhamento

O nível de compartilhamento define quantos usuários utilizam um único mecanismo Kyuubi. Defina kyuubi.engine.share.level na aba kyuubi-defaults.conf da página de serviço do Kyuubi no console EMR.

Nível de compartilhamento

Escopo do mecanismo

Grau de isolamento

Compartilhamento

Caso de uso

CONNECTION

Um mecanismo por sessão

Alto

Baixo

ETL em larga escala, consultas ad hoc

USER

Um mecanismo por usuário

Médio

Médio

GROUP

Um mecanismo por grupo de recursos

Baixo

Alto

SERVER

Um mecanismo por cluster

Mais alto (cluster de alta segurança) / Mais baixo (cluster padrão)

Clusters de alta segurança: somente administradores

Administradores

Envie jobs para mecanismos Kyuubi

O servidor Kyuubi inicia e interrompe os mecanismos automaticamente. Quando um novo usuário se conecta via kyuubi-beeline pela primeira vez, o servidor lança um novo mecanismo Spark 3.x, sem necessidade de início manual.

Os exemplos a seguir usam o nível de compartilhamento USER. Todos os usuários passaram pela autenticação LDAP ou Kerberos.

Envie um job como novo usuário

Quando o user1 se conecta pela primeira vez, o servidor Kyuubi inicia automaticamente um novo mecanismo Spark 3.x:

kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

Configure recursos do executor Spark

Há dois métodos para configurar os recursos dos mecanismos Spark 3.x.

Método 1: Defina recursos na URL JDBC

Passe os parâmetros do Spark diretamente na URL de conexão:

# Set user config via JDBC connection URL
kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000?spark.dynamicAllocation.enabled=false;spark.executor.cores=2;spark.executor.memory=4g;spark.executor.instances=4" \
  -f query1.sql

Método 2: Defina padrões por usuário no kyuubi-defaults.conf

Adicione entradas específicas de usuário no formato ___username___.spark.param=value na aba kyuubi-defaults.conf:

# Set user default config in kyuubi-defaults.conf
# ___user2___.spark.dynamicAllocation.enabled=false
# ___user2___.spark.executor.memory=5g
# ___user2___.spark.executor.cores=2
# ___user2___.spark.executor.instances=10

kyuubi-beeline -n user2 \
  -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
  -f query1.sql

Reutilize um mecanismo em execução

Após a conclusão de um job, o mecanismo Spark 3.x permanece ativo por um período antes de encerrar. O envio de outro job dentro dessa janela reutiliza o mecanismo existente em vez de lançar uma nova aplicação YARN, o que reduz o tempo de inicialização do job.

O parâmetro kyuubi.session.engine.idle.timeout controla o tempo limite de ociosidade (padrão: PT30M, 30 minutos). Para alterar o tempo limite, atualize esse parâmetro na aba kyuubi-defaults.conf.

Envie jobs para diferentes mecanismos do mesmo usuário

Para executar cargas de trabalho em mecanismos separados para diferentes linhas de negócio, use kyuubi.engine.share.level.subdomain na URL JDBC:

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" \
  -f query1.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" \
  -f query2.sql

kyuubi-beeline -n user4 \
  -u "jdbc:hive2://master-1-1:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" \
  -f query3.sql

Cada subdomínio mapeia para um mecanismo Spark distinto; assim, biz1, biz2 e biz3 são executados de forma isolada.

Compartilhe um mecanismo entre várias sessões

Várias sessões do mesmo usuário compartilham um único mecanismo Spark 3.x. Por exemplo, se o user1 enviar dois jobs de terminais separados simultaneamente, ambos os jobs serão executados no mesmo mecanismo:

# Terminal 1
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz1" \
  -f query1.sql

# Terminal 2
kyuubi-beeline -n user1 \
  -u "jdbc:hive2://master-1-1:10009/biz2" \
  -f query2.sql

Os recursos do executor são alocados conforme as regras de agendamento padrão do Spark.

Próximos passos