Amazon EMR no Amazon EKS fornece uma opção de implantação para Amazon EMR que permite executar cargas de trabalho analíticas em Serviço Amazon Elastic Kubernetes (Amazon EKS). Essa é uma opção atraente porque permite executar aplicativos em um pool comum de recursos sem precisar provisionar a infraestrutura. Além disso, você pode usar Estúdio Amazon EMR para criar código de análise em execução em clusters do Amazon EKS. O EMR Studio é um ambiente de desenvolvimento integrado (IDE) baseado na Web que usa notebooks Jupyter totalmente gerenciados que podem ser anexados a qualquer cluster EMR, incluindo EMR em EKS. ele usa Logon único da AWS (SSO) ou um provedor de identidade compatível (IdP) para fazer login diretamente no EMR Studio por meio de um URL seguro usando credenciais corporativas.
A implantação do EMR Studio para anexar ao EMR no EKS requer a integração de vários serviços da AWS:
Além disso, você precisa instalar os seguintes componentes do EMR no EKS:
Esta postagem ajuda você a criar todos os componentes necessários e uni-los executando um único script. Também descrevemos a arquitetura dessa configuração e como os componentes funcionam juntos.
Visão geral da arquitetura
Com o EMR no EKS, você pode executar aplicativos Spark juntamente com outros tipos de aplicativos no mesmo cluster do Amazon EKS, o que melhora a alocação de recursos e simplifica o gerenciamento da infraestrutura. Para obter mais informações sobre como o Amazon EMR opera dentro de um cluster do Amazon EKS, consulte Novo – Amazon EMR no Amazon Elastic Kubernetes Service (EKS). O EMR Studio fornece um IDE baseado na Web que facilita o desenvolvimento, a visualização e a depuração de aplicativos executados no EMR. Para mais informações, veja Amazon EMR Studio (visualização): uma nova experiência de IDE para notebook com o Amazon EMR.
Os kernels Spark são pods agendados em um namespace em um cluster do Amazon EKS. O EMR Studio usa o Jupyter Enterprise Gateway (JEG) para iniciar kernels Spark no Amazon EKS. Um endpoint gerenciado do tipo JEG é provisionado como uma implementação Kubernetes no namespace associado do cluster virtual EMR e exposto como um serviço Kubernetes. Cada cluster virtual EMR é mapeado para um namespace Kubernetes registrado com o cluster Amazon EKS; os clusters virtuais não gerenciam computação física ou armazenamento, mas apontam para o namespace Kubernetes onde a carga de trabalho está agendada. Cada cluster virtual pode ter vários endpoints gerenciados, cada um com seus próprios kernels configurados para diferentes casos de uso e necessidades. Os endpoints gerenciados por JEG fornecem endpoints HTTPS, atendidos por um Application Load Balancer (ALB), que podem ser acessados apenas pelo EMR Studio e notebooks auto-hospedados criados em uma sub-rede privada do Amazon EKS VPC.
O diagrama a seguir ilustra a arquitetura da solução.
O endpoint gerenciado é criado no namespace Amazon EKS do cluster virtual (neste caso, sparkns
) e os endpoints HTTPS são atendidos por sub-redes privadas. Os pods de kernel são executados com a função IAM de execução de trabalho definida no endpoint gerenciado. Durante a criação do endpoint gerenciado, o EMR no EKS usa o AWS Load Balancer Controller no kube-system
namespace para criar um ALB com um grupo de destino que se conecta ao terminal gerenciado JEG no namespace Kubernetes do cluster virtual.
Você pode configurar o kernel de cada terminal gerenciado de forma diferente. Por exemplo, para permitir que um kernel Spark use Cola AWS como seu catálogo, você pode aplicar o seguinte arquivo JSON de configuração no —configuration-overrides
flag ao criar um endpoint gerenciado:
O endpoint gerenciado é uma implantação do Kubernetes liderada por um serviço dentro do namespace configurado (neste caso, sparkns
). Quando rastreamos as informações do endpoint, podemos ver como a implantação do Jupyter Enterprise Gateway se conecta ao ALB e ao grupo de destino:
Para ver como isso se conecta, considere duas sessões do EMR Studio. O ALB expõe a porta 18888 para as sessões do EMR Studio. O serviço JEG mapeia a porta externa 18888 no ALB para o dinâmico NodePort
no serviço JEG (neste caso, 30091). O serviço JEG encaminha o tráfego para o TargetPort
9547, que roteia o tráfego para o pod do driver Spark apropriado. Cada sessão de notebook tem seu próprio kernel, que tem seus respectivos pods de driver e executor Spark, conforme ilustrado no diagrama a seguir.
Anexe o EMR Studio a um cluster virtual e endpoint gerenciado
Cada vez que um usuário anexa um cluster virtual e um endpoint gerenciado ao Studio Workspace e inicia uma sessão do Spark, os drivers Spark e os executores do Spark são agendados. Você pode ver isso quando você corre kubectl
para verificar quais pods foram iniciados:
Cada sessão do kernel do Spark do notebook implanta um pod de driver e pods de executor que continuam em execução até que a sessão do kernel seja encerrada.
O código nas células do notebook é executado nos pods do executor que foram implantados no cluster do Amazon EKS.
Configurar o EMR no EKS e no EMR Studio
Várias etapas e partes são necessárias para configurar o EMR no EKS e o EMR Studio. Habilitar o AWS SSO é um pré-requisito. Você pode usar os dois scripts de inicialização fornecidos nesta seção ou implantá-lo manualmente usando as etapas fornecidas posteriormente nesta postagem.
Fornecemos dois scripts de inicialização neste post. Um é um script bash que usa Formação da Nuvem AWS, eksctl e Interface de linha de comando da AWS (AWS CLI) para fornecer uma implantação completa de uma solução completa. O outro usa o Kit de desenvolvimento em nuvem da AWS (AWS CDK) para fazer isso.
O diagrama a seguir mostra a arquitetura e os componentes que implantamos.
Pré-requisitos
Certifique-se de concluir os seguintes pré-requisitos:
Para obter informações sobre os IdPs com suporte, consulte Habilitar AWS Single Sign-On para Amazon EMR Studio.
Script Bash
O script está disponível em GitHub.
Pré-requisitos
O script exige que você use Nuvem AWS9. Siga as instruções no Workshop Amazon EKS. Certifique-se de seguir estas instruções cuidadosamente:
Depois de implantar a área de trabalho do AWS Cloud9, prossiga para as próximas etapas.
PREPARAÇÃO
Use o código a seguir para clonar o repositório do GitHub e preparar os pré-requisitos do AWS Cloud9:
Implantar a pilha
Antes de executar o script, forneça as seguintes informações:
- O ID e a região da conta da AWS, se o desktop do AWS Cloud9 não estiver no mesmo ID ou região da conta em que você deseja implantar o EMR no EKS
- O nome do Serviço de armazenamento simples da Amazon (Amazon S3) balde para criar
- O usuário do AWS SSO a ser associado à sessão do EMR Studio
Depois que o script implanta a pilha, o URL para o EMR Studio implantado é exibido:
Script de CDK da AWS
Os scripts do AWS CDK estão disponíveis em GitHub. Você precisa fazer o check-out main
filial. As pilhas implantam um cluster Amazon EKS e EMR no cluster virtual EKS em uma nova VPC com sub-redes privadas e, opcionalmente, um Fluxo de ar Apache gerenciado pela Amazon (Amazon MWAA) e EMR Studio.
Pré-requisitos
Você precisa do AWS CDK versão 1.90.1 ou superior. Para mais informações, veja Introdução ao AWS CDK.
Usamos uma lista de prefixos para restringir o acesso a alguns recursos para intervalos de IP de rede que você aprova. Criar uma lista de prefixos se você ainda não tem um.
Se você planeja usar o EMR Studio, precisa do AWS SSO configurado na sua conta.
PREPARAÇÃO
Depois de clonar o repositório e verificar o main
branch, crie e ative um novo ambiente virtual Python:
Agora instale as dependências do Python:
Por fim, inicialize o AWS CDK:
Implantar as pilhas
Sintetize as pilhas do AWS CDK com o seguinte código:
Este comando gera quatro pilhas:
- emr-eks-cdk – A pilha principal
- mwaa-cdk – Adiciona Amazon MWAA
- estúdio-cdk – Adiciona pré-requisitos do EMR Studio
- estúdio-cdk-live – Adiciona EMR Studio
O diagrama a seguir ilustra os recursos implantados pelas pilhas do AWS CDK.
Comece implantando a primeira pilha:
Se você quiser usar o Apache Airflow como seu orquestrador, implante essa pilha:
Implante a primeira pilha do EMR Studio:
Aguarde até que o endpoint gerenciado se torne ativo. Você pode verificar o status executando o seguinte código:
O ID do cluster virtual está disponível na saída do AWS CDK da pilha emr-eks-cdk.
Quando o endpoint estiver ativo, implante a segunda pilha do EMR Studio:
implantação manual
Se você preferir implantar manualmente o EMR no EKS e no EMR Studio, use as etapas nesta seção.
Configurar uma VPC
Se você estiver usando o Amazon EKS v. 1.18, configure uma VPC que também tenha sub-redes privadas e marcada adequadamente para balanceadores de carga externos. Para marcar, consulte: Balanceamento de carga de aplicativos no Amazon EKS e Criar uma função de serviço do EMR Studio.
Criar um cluster do Amazon EKS
Inicie um cluster do Amazon EKS com pelo menos um grupo de nós gerenciados. Para obter instruções, consulte Configurando e Conceitos básicos do Amazon EKS.
Crie políticas IAM relevantes, funções, IdP e certificado SSL/TLS
Para criar suas políticas, funções, IdP e certificado SSL/TLS do IAM, conclua as seguintes etapas:
- Habilite o acesso ao cluster para EMR no EKS.
- Crie um IdP no IAM com base na URL do provedor EKS OIDC.
- Crie um certificado SSL/TLS e coloque-o em Gerenciador de certificados da AWS.
- Crie as políticas e funções relevantes do IAM:
- Função de execução do trabalho
- Atualize a política de confiança para a função de execução do trabalho
- Implante e crie a política IAM para o AWS Load Balancer Controller
- Função de serviço do EMR Studio
- Função de usuário do EMR Studio
- Políticas de usuário do EMR Studio associados a usuários e grupos do AWS SSO
- Registre o cluster do Amazon EKS com o Amazon EMR para criar o cluster EMR virtual
- Crie o apropriado grupos de segurança a ser anexado a cada EMR Studio criado:
- Grupo de segurança do espaço de trabalho
- Grupo de segurança do mecanismo
- Marque os grupos de segurança com as tags apropriadas. Para obter instruções, consulte Criar uma função de serviço do EMR Studio.
Instalações necessárias no Amazon EKS
Implante o Controlador do balanceador de carga da AWS no cluster do Amazon EKS, caso ainda não o tenha feito.
Crie EMR em peças relevantes do EKS e mapeie o usuário para o EMR Studio
Conclua as seguintes etapas:
- Crie pelo menos um cluster virtual EMR associado ao cluster Amazon EKS. Para obter instruções, consulte a Etapa 1 de Configurar o Amazon EMR no EKS para EMR Studio.
- Crie pelo menos um endpoint gerenciado. Para obter instruções, consulte a Etapa 2 de Configurar o Amazon EMR no EKS para EMR Studio.
- Crie pelo menos um EMR Studio; associe o EMR Studio às sub-redes privadas configuradas com o cluster do Amazon EKS. Para obter instruções, consulte Criar um estúdio EMR.
- Quando o EMR Studio estiver disponível, mapear um usuário ou grupo do AWS SSO para o EMR Studio e aplique uma política de IAM apropriada a esse usuário.
Usar EMR Studio
Para começar a usar o EMR Studio, conclua as seguintes etapas:
- Encontre o URL do EMR Studio pelos estúdios em uma região:
- Com o URL listado, faça login usando o nome de usuário do AWS SSO usado anteriormente.
Após a autenticação, o usuário é encaminhado para o painel do EMR Studio.
- Escolha Criar espaço de trabalho.
- Escolha Nome do espaço de trabalho, Insira o nome.
- Escolha Sub-rede, escolha a sub-rede que corresponde a uma das sub-redes associadas ao grupo de nós gerenciados.
- Escolha Localização S3, insira um bucket do S3 onde você pode armazenar o conteúdo do bloco de anotações.
- Depois de criar o Workspace, escolha um que esteja no
Ready
estado.
- Na barra lateral, escolha o ícone do cluster EMR.
- Debaixo Tipo de cluster¸ escolher Cluster EMR no EKS.
- Escolha o cluster virtual disponível e o endpoint gerenciado disponível.
- Escolha Anexar.
Depois de anexado, o EMR Studio exibe os kernels disponíveis no Portátil e cônsul seção.
- Escolha PySpark (Kubernetes) para iniciar um kernel de notebook e iniciar uma sessão do Spark.
Como a configuração do endpoint aqui usa o AWS Glue para seu metastore, você pode listar os bancos de dados e tabelas conectados ao Catálogo de dados do AWS Glue. Você pode usar o script de exemplo a seguir para testar a configuração. Modifique o script conforme necessário para o banco de dados e tabela apropriados que você possui em seu Catálogo de Dados:
limpar
Para evitar cobranças futuras, exclua os recursos iniciados aqui executando remove_setup.sh:
Conclusão
O EMR no EKS permite que você execute aplicativos em um pool comum de recursos dentro de um cluster do Amazon EKS sem precisar provisionar a infraestrutura. O EMR Studio é um notebook Jupyter totalmente gerenciado e uma ferramenta que provisiona kernels executados em clusters EMR, incluindo clusters virtuais no Amazon EKS. Nesta postagem, descrevemos a arquitetura de como o EMR Studio se conecta ao EMR no EKS e fornecemos scripts para implantar automaticamente todos os componentes para conectar os dois serviços.
Se você tiver dúvidas ou sugestões, por favor deixe um comentário.
Sobre os autores
Randy De Fauw é Arquiteto Principal de Soluções da Amazon Web Services. Ele trabalha com os clientes da AWS para fornecer orientação e assistência técnica em projetos de banco de dados, ajudando-os a melhorar o valor de suas soluções ao usar a AWS.
Mateus Tan é arquiteto de soluções de análise sênior da Amazon Web Services e fornece orientação aos clientes que desenvolvem soluções com serviços do AWS Analytics em suas cargas de trabalho de análise.
- '
- "
- 100
- 7
- 9
- Acesso
- Conta
- ativo
- Todos os Produtos
- alocação
- Amazon
- Amazon Web Services
- analítica
- apache
- Aplicação
- aplicações
- arquitetura
- Autenticação
- AWS
- balanceador
- construir
- casos
- certificado
- acusações
- Finalizar compra
- classificação
- Na nuvem
- código
- comum
- Computar
- conteúdo
- continuar
- controlador
- Criar
- Credenciais
- Clientes
- painel de instrumentos
- dados,
- banco de dados
- bases de dados
- desenvolver
- Desenvolvimento
- motorista
- Ponto final
- Empreendimento
- Meio Ambiente
- execução
- vasta experiência
- fábrica
- Primeiro nome
- seguir
- Com frente
- futuro
- Git
- GitHub
- Grupo
- Hadoop
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Colméia
- Como funciona o dobrador de carta de canal
- HTTPS
- IAM
- ÍCONE
- Dados de identificação:
- Incluindo
- INFORMAÇÕES
- Infraestrutura
- IP
- IT
- Trabalho
- Caderno Jupyter
- Kubernetes
- lançamento
- lança
- Line
- Lista
- carregar
- de grupos
- mapa,
- mapas
- rede
- laptops
- Opção
- Outros
- físico
- vagens
- políticas
- Privacidade
- piscina
- visualização
- Diretor
- privado
- projetos
- Python
- Requisitos
- recurso
- Recursos
- Execute
- corrida
- segurança
- Serviços
- conjunto
- simples
- So
- Soluções
- SQL
- começo
- começado
- Estado
- Status
- armazenamento
- loja
- Suportado
- Target
- Dados Técnicos:
- teste
- tempo
- tráfego
- Confiança
- usuários
- valor
- Virtual
- web
- serviços web
- dentro
- palavras
- Atividades:
- trabalho