A conectividade de rede permite que o Serverless Spark acesse fontes de dados, servidores e serviços em sua VPC (Virtual Private Cloud). Este guia detalha a configuração de uma conexão de rede para integrar jobs do Spark SQL e JAR a um Hive Metastore (HMS) na sua VPC.
Pré-requisitos
Prepare uma fonte de dados. Este exemplo utiliza um cluster de data lake criado na página EMR on ECS. O cluster inclui o service Hive e seus Metadata estão armazenados no Built-in MySQL. Para mais informações, consulte Create a cluster.
Etapa 1: Criar uma conexão de rede
-
Acesse a página Network Connection.
Faça login no console EMR.
No painel de navegação à esquerda, escolha EMR Serverless > Spark.
Na página Spark, clique no nome do workspace desejado.
Na página EMR Serverless Spark, clique em Normal Network Connection no painel de navegação à esquerda.
Na página Normal Network Connection, clique em Create Network Connection.
-
Na caixa de diálogo Create Network Connection, configure os parâmetros abaixo e clique em OK.
Parâmetro
Descrição
Name
Insira um nome para a conexão.
VPC
Selecione a mesma VPC do cluster EMR.
Caso não haja uma VPC disponível, clique em Create VPC para criar uma no console VPC. Para mais informações, consulte VPCs and vSwitches.
NotaSe sua aplicação Serverless Spark precisar de acesso à internet, garanta que a conexão de rede o forneça. Por exemplo, implante um NAT gateway público na VPC para habilitar o acesso à internet nas instâncias do Serverless Spark. Para mais informações, consulte Public NAT Gateway.
vSwitch
Escolha um vSwitch na mesma VPC do cluster EMR.
Se nenhum vSwitch estiver disponível na zona atual, clique em vSwitch para criar um no console VPC. Para mais informações, consulte Create and manage vSwitches.
ImportanteA seleção de vSwitches restringe-se a zonas específicas. Para mais informações, consulte Usage limits.
A conexão de rede será criada quando o Status mudar para Succeeded.
Etapa 2: Adicionar uma regra de grupo de segurança
-
Obtenha o bloco CIDR do vSwitch utilizado pela conexão de rede.
Faça login no console VPC e acesse a página vSwitch para localizar o bloco CIDR do vSwitch.
-
Adicione uma regra ao grupo de segurança.
Faça login no console EMR on ECS.
Na página EMR on ECS, clique no ID do cluster desejado.
Na página Basic Information, na seção Security, clique no link ao lado de Cluster Security Group.
-
Na página Security Group Details, na seção Rules, clique em Add Rule, configure os parâmetros a seguir e clique em OK.
Parâmetro
Descrição
Protocol
Protocolo de rede permitido. Padrão: TCP.
NotaCaso sua conexão de rede utilize autenticação Kerberos, selecione UDP e abra a porta 88. Para mais detalhes sobre autenticação Kerberos, consulte Enable Kerberos authentication.
Source
Insira o bloco CIDR do vSwitch obtido na etapa anterior.
ImportantePara evitar riscos de segurança, não defina Authorization Object como 0.0.0.0/0.
Destination (Current Instance)
Porta de destino a ser aberta. Exemplo: 9083.
(Opcional) Etapa 3: Conectar ao Hive e consultar dados
Ignore esta etapa se já possuir uma tabela Hive.
Conecte-se ao nó mestre do cluster via SSH. Para mais informações, consulte Log on to a cluster.
-
Inicie a linha de comando do Hive.
hive -
Crie uma tabela.
CREATE TABLE my_table (id INT,name STRING); -
Insira dados na tabela.
INSERT INTO my_table VALUES (1, 'John'); INSERT INTO my_table VALUES (2, 'Jane'); -
Consulte os dados.
SELECT * FROM my_table;
(Opcional) Etapa 4: Compilar e enviar artefato JAR
Para executar um job JAR, prepare um artefato antes. Ignore esta etapa para jobs Spark SQL.
-
Crie um projeto Maven na máquina local.
Execute o comando
mvn packagepara empacotar o projeto. Esse comando gera o arquivo sparkDataFrame-1.0-SNAPSHOT.jar.Na página do EMR Serverless Spark do workspace, clique em Artifacts no painel de navegação à esquerda.
Na página Artifacts, clique em Upload File.
Envie o arquivo
sparkDataFrame-1.0-SNAPSHOT.jarda máquina local.
Etapa 5: Criar e executar um job
Job JAR
Na página do EMR Serverless Spark, clique em Development no painel de navegação à esquerda.
Clique em Create.
Insira um nome, selecione como tipo e clique em OK.
-
No editor de jobs, configure os parâmetros a seguir. Mantenha os demais parâmetros com os valores padrão e clique em Run.
Parâmetro
Descrição
Main JAR Resource
Selecione o artefato enviado na etapa anterior. Exemplo: sparkDataFrame-1.0-SNAPSHOT.jar.
Main Class
Insira a classe principal do job. Neste exemplo, use com.example.DataFrameExample.
Normal Network Connection
Selecione a conexão de rede criada na Etapa 1.
Spark Configuration
Configure as propriedades abaixo.
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactorySubstitua
...pelo endereço IP privado do HMS (Hive Metastore Service). Neste exemplo, o HMS reside no nó mestre do cluster EMR. Encontre esse endereço na página Nodes do cluster EMR clicando no ícone
ao lado do grupo de nós emr-master. Após executar o job, vá até a seção Execution Records na parte inferior da página e clique em Log Exploration na coluna Actions do job.
Na aba Log Exploration, visualize os logs do job.
Job Spark SQL
-
Crie e inicie uma sessão SQL. Para mais informações, consulte Manage SQL sessions.
Normal Network Connection: Selecione a conexão de rede criada na Etapa 1.
-
Spark Configuration: Configure as propriedades a seguir.
spark.hadoop.hive.metastore.uris thrift://*.*.*.*:9083 spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactorySubstitua
*.*.*.*pelo endereço IP privado do HMS (Hive Metastore Service). Neste exemplo, o HMS reside no nó mestre do cluster EMR. Encontre esse endereço na página Nodes do cluster EMR clicando no ícone
ao lado do grupo de nós emr-master.
Na página do EMR Serverless Spark, clique em Development no painel de navegação à esquerda.
Na aba Development, clique no ícone
.Na caixa de diálogo Create, insira um nome como users_task, mantenha o Tipo como SparkSQL (padrão) e clique em OK.
-
No novo editor de jobs, selecione o catalog, o banco de dados e a sessão SQL ativa. Insira a consulta abaixo e clique em Run.
SELECT * FROM default.my_table;NotaAo implantar código SQL que usa um Metastore externo em um workflow, certifique-se de que as instruções SQL especifiquem nomes de tabelas no formato
db.table_namee que você selecione um banco de dados padrão no formatocatalog_id.defaultna opção Catalog, no canto superior direito da interface.Os resultados da consulta aparecem na seção Execution Results na parte inferior da página.