Zephyrnet Logo

Simplifique a ingestão de streaming de dados para análise usando Amazon MSK e Amazon Redshift | Amazon Web Services

Data:

No final do 2022, AWS anunciou a disponibilidade geral de ingestão de streaming em tempo real para Amazon RedShift para Fluxos de dados do Amazon Kinesis e Amazon Managed Streaming para Apache Kafka (Amazon MSK), eliminando a necessidade de preparar dados de streaming em Serviço de armazenamento simples da Amazon (Amazon S3) antes de ingeri-lo no Amazon Redshift.

Ingestão de streaming do Amazon MSK ao Amazon Redshift, representa uma abordagem de ponta para processamento e análise de dados em tempo real. O Amazon MSK atua como um serviço altamente escalável e totalmente gerenciado para Apache Kafka, permitindo a coleta e o processamento contínuos de vastos fluxos de dados. A integração de dados de streaming ao Amazon Redshift traz imenso valor ao permitir que as organizações aproveitem o potencial da análise em tempo real e da tomada de decisões orientada por dados.

Essa integração permite alcançar baixa latência, medida em segundos, enquanto ingere centenas de megabytes de dados de streaming por segundo no Amazon Redshift. Ao mesmo tempo, esta integração ajuda a garantir que as informações mais atualizadas estejam prontamente disponíveis para análise. Como a integração não exige dados de preparação no Amazon S3, o Amazon Redshift pode ingerir dados de streaming com latência mais baixa e sem custo de armazenamento intermediário.

Você pode configurar a ingestão de streaming do Amazon Redshift em um cluster Redshift usando instruções SQL para autenticar e conectar-se a um tópico MSK. Esta solução é uma excelente opção para engenheiros de dados que buscam simplificar pipelines de dados e reduzir custos operacionais.

Nesta postagem, fornecemos uma visão geral completa sobre como configurar Ingestão de streaming do Amazon Redshift da Amazon MSK.

Visão geral da solução

O diagrama de arquitetura a seguir descreve os serviços e recursos da AWS que você usará.

diagrama de arquitetura que descreve os serviços e recursos da AWS que você usará

O fluxo de trabalho inclui as seguintes etapas:

  1. Você começa configurando um Amazon MSK Conectar conector de origem, para criar um tópico MSK, gerar dados simulados e gravá-los no tópico MSK. Para esta postagem, trabalhamos com dados simulados de clientes.
  2. A próxima etapa é conectar-se a um cluster Redshift usando o Editor de consultas v2.
  3. Por fim, você configura um esquema externo e cria uma visualização materializada no Amazon Redshift para consumir os dados do tópico MSK. Esta solução não depende de um conector de coletor MSK Connect para exportar os dados do Amazon MSK para o Amazon Redshift.

O diagrama de arquitetura da solução a seguir descreve com mais detalhes a configuração e a integração dos serviços da AWS que você usará.
diagrama de arquitetura da solução descrevendo com mais detalhes a configuração e integração dos serviços AWS que você usará
O fluxo de trabalho inclui as seguintes etapas:

  1. Você implanta um conector de origem MSK Connect, um cluster MSK e um cluster Redshift nas sub-redes privadas em uma VPC.
  2. O conector de origem MSK Connect usa permissões granulares definidas em um AWS Identity and Access Management (IAM) política em linha anexado a um Papel do IAM, que permite que o conector de origem execute ações no cluster MSK.
  3. Os logs do conector de origem do MSK Connect são capturados e enviados para um Amazon CloudWatch grupo de registros.
  4. O cluster MSK usa um configuração de cluster MSK personalizada, permitindo que o conector MSK Connect crie tópicos no cluster MSK.
  5. Os logs do cluster MSK são capturados e enviados para um grupo de logs do Amazon CloudWatch.
  6. O cluster Redshift usa permissões granulares definidas em uma política em linha do IAM anexada a uma função do IAM, o que permite que o cluster Redshift execute ações no cluster MSK.
  7. Você pode usar o Query Editor v2 para se conectar ao cluster Redshift.

Pré-requisitos

Para simplificar o provisionamento e a configuração dos recursos de pré-requisito, você pode usar o seguinte Formação da Nuvem AWS modelo:

Conclua as etapas a seguir ao iniciar a pilha:

  1. Escolha Nome da pilha, insira um nome significativo para a pilha, por exemplo, prerequisites.
  2. Escolha Avançar.
  3. Escolha Avançar.
  4. Selecionar Eu reconheço que o AWS CloudFormation pode criar recursos IAM com nomes personalizados.
  5. Escolha Enviar.

A pilha do CloudFormation cria os seguintes recursos:

  • Uma VPC custom-vpc, criado em três zonas de disponibilidade, com três sub-redes públicas e três sub-redes privadas:
    • As sub-redes públicas estão associadas a uma tabela de rotas públicas e o tráfego de saída é direcionado para um gateway de Internet.
    • As sub-redes privadas estão associadas a uma tabela de rotas privada e o tráfego de saída é enviado para um gateway NAT.
  • An gateway de internet anexado ao Amazon VPC.
  • A Gateway NAT que está associado a um IP elástico e é implantado em uma das sub-redes públicas.
  • Três grupos de segurança:
    • msk-connect-sg, que será posteriormente associado ao conector MSK Connect.
    • redshift-sg, que será posteriormente associado ao cluster Redshift.
    • msk-cluster-sg, que será posteriormente associado ao cluster MSK. Ele permite o tráfego de entrada de msk-connect-sg e redshift-sg.
  • Dois grupos de logs do CloudWatch:
    • msk-connect-logs, a ser usado para os logs do MSK Connect.
    • msk-cluster-logs, a ser usado para os logs de cluster MSK.
  • Duas funções IAM:
    • msk-connect-role, que inclui permissões granulares do IAM para MSK Connect.
    • redshift-role, que inclui permissões granulares do IAM para o Amazon Redshift.
  • A configuração de cluster MSK personalizada, permitindo que o conector MSK Connect crie tópicos no cluster MSK.
  • Um cluster MSK, com três corretores implantados nas três sub-redes privadas do custom-vpc. A msk-cluster-sg grupo de segurança e o custom-msk-cluster-configuration configuração são aplicadas ao cluster MSK. Os logs do corretor são entregues ao msk-cluster-logs Grupo de logs do CloudWatch.
  • A Grupo de sub-redes do cluster Redshift, que está usando as três sub-redes privadas de custom-vpc.
  • Um cluster Redshift, com um único nó implantado em uma sub-rede privada dentro do grupo de sub-redes de cluster Redshift. O redshift-sg grupo de segurança e redshift-role A função IAM é aplicada ao cluster Redshift.

Crie um plugin personalizado do MSK Connect

Para esta postagem, usamos um Gerador de dados Amazon MSK implantado no MSK Connect, para gerar dados simulados do cliente e gravá-los em um tópico MSK.

Conclua as seguintes etapas:

  1. Faça o download do Gerador de dados Amazon MSK Arquivo JAR com dependências do GitHub.
    página awslabs github para baixar o arquivo jar do gerador de dados amazon msk
  2. Faça upload do arquivo JAR em um bucket S3 em sua conta AWS.
    imagem do console amazon s3 mostrando o arquivo jar carregado em um bucket s3
  3. No console do Amazon MSK, escolha Plug-ins personalizados para Conexão MSK no painel de navegação.
  4. Escolha Crie um plugin personalizado.
  5. Escolha Navegar S3, procure o arquivo JAR do gerador de dados do Amazon MSK que você carregou no Amazon S3 e escolha Escolha.
  6. Escolha Nome do plug-in personalizado, entrar msk-datagen-plugin.
  7. Escolha Crie um plugin personalizado.

Quando o plugin personalizado for criado, você verá que seu status é Ativoe você pode passar para a próxima etapa.
console amazon msk mostrando o plugin personalizado do msk connect sendo criado com sucesso

Crie um conector MSK Connect

Conclua as etapas a seguir para criar seu conector:

  1. No console do Amazon MSK, escolha conectores para Conexão MSK no painel de navegação.
  2. Escolha Crie um conector.
  3. Escolha Tipo de plugin personalizado, escolha Use o plugin existente.
  4. Selecionar msk-datagen-plugin, Em seguida, escolha Avançar.
  5. Escolha Nome do conector, entrar msk-datagen-connector.
  6. Escolha Tipo de cluster, escolha Cluster Apache Kafka autogerenciado.
  7. Escolha VPC, escolha custom-vpc.
  8. Escolha Sub-rede 1, escolha a sub-rede privada na sua primeira zona de disponibilidade.

Para o custom-vpc criado pelo modelo CloudFormation, estamos usando intervalos CIDR ímpares para sub-redes públicas e até intervalos CIDR para sub-redes privadas:

    • Os CIDRs para as sub-redes públicas são 10.10.1.0/24, 10.10.3.0/24 e 10.10.5.0/24
    • Os CIDRs para as sub-redes privadas são 10.10.2.0/24, 10.10.4.0/24 e 10.10.6.0/24
  1. Escolha Sub-rede 2, selecione a sub-rede privada na sua segunda zona de disponibilidade.
  2. Escolha Sub-rede 3, selecione a sub-rede privada na sua terceira zona de disponibilidade.
  3. Escolha Servidores de inicialização, insira a lista de servidores de inicialização para autenticação TLS do seu cluster MSK.

Para recupere os servidores de inicialização para seu cluster MSK, navegue até o console do Amazon MSK e escolha Clusters, escolha msk-cluster, Em seguida, escolha Ver informações do cliente. Copie os valores TLS para os servidores de inicialização.

  1. Escolha Grupos de segurança, escolha Use grupos de segurança específicos com acesso a este clustere escolha msk-connect-sg.
  2. Escolha Configuração do conector, substitua as configurações padrão pelas seguintes:
connector.class=com.amazonaws.mskdatagen.GeneratorSourceConnector
tasks.max=2
genkp.customer.with=#{Code.isbn10}
genv.customer.name.with=#{Name.full_name}
genv.customer.gender.with=#{Demographic.sex}
genv.customer.favorite_beer.with=#{Beer.name}
genv.customer.state.with=#{Address.state}
genkp.order.with=#{Code.isbn10}
genv.order.product_id.with=#{number.number_between '101','109'}
genv.order.quantity.with=#{number.number_between '1','5'}
genv.order.customer_id.matching=customer.key
global.throttle.ms=2000
global.history.records.max=1000
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false

  1. Para capacidade do conector, escolha Provisionado.
  2. Escolha Contagem de MCU por trabalhador, escolha 1.
  3. Escolha Número de trabalhadores, escolha 1.
  4. Escolha configuração do trabalhador, escolha Use a configuração padrão do MSK.
  5. Escolha Permissões de acesso, escolha msk-connect-role.
  6. Escolha Avançar.
  7. Para criptografia, selecione Tráfego criptografado TLS.
  8. Escolha Avançar.
  9. Escolha Log de entrega, escolha Entregue no Amazon CloudWatch Logs.
  10. Escolha Procurar, selecione msk-connect-logse escolha Escolha.
  11. Escolha Avançar.
  12. Revise e escolha Crie um conector.

Após a criação do conector personalizado, você verá que seu status é Corridae você pode passar para a próxima etapa.
console amazon msk mostrando o conector msk connect sendo criado com sucesso

Configurar a ingestão de streaming do Amazon Redshift para Amazon MSK

Conclua as etapas a seguir para configurar a ingestão de streaming:

  1. Conecte-se ao seu cluster Redshift usando o Query Editor v2 e autentique-se com o nome de usuário do banco de dados awsuser, e senha Awsuser123.
  2. Crie um esquema externo do Amazon MSK usando a instrução SQL a seguir.

No código a seguir, insira os valores para o redshift-role Função do IAM e o msk-cluster cluster ARN.

CREATE EXTERNAL SCHEMA msk_external_schema
FROM MSK
IAM_ROLE '<insert your redshift-role arn>'
AUTHENTICATION iam
CLUSTER_ARN '<insert your msk-cluster arn>';

  1. Escolha Execute para executar a instrução SQL.

editor de consulta redshift v2 mostrando a instrução SQL usada para criar um esquema externo do amazon msk

  1. Crie uma visão materializada usando a seguinte instrução SQL:
CREATE MATERIALIZED VIEW msk_mview AUTO REFRESH YES AS
SELECT
    "kafka_partition",
    "kafka_offset",
    "kafka_timestamp_type",
    "kafka_timestamp",
    "kafka_key",
    JSON_PARSE(kafka_value) as Data,
    "kafka_headers"
FROM
    "dev"."msk_external_schema"."customer"

  1. Escolha Execute para executar a instrução SQL.

editor de consulta redshift v2 mostrando a instrução SQL usada para criar uma visualização materializada

  1. Agora você pode consultar a visualização materializada usando a seguinte instrução SQL:
select * from msk_mview LIMIT 100;

  1. Escolha Execute para executar a instrução SQL.

editor de consulta redshift v2 mostrando a instrução SQL usada para consultar a visualização materializada

  1. Para monitorar o progresso dos registros carregados por meio da ingestão de streaming, você pode aproveitar o recurso SYS_STREAM_SCAN_STATES visualização de monitoramento usando a seguinte instrução SQL:
select * from SYS_STREAM_SCAN_STATES;

  1. Escolha Execute para executar a instrução SQL.

editor de consulta redshift v2 mostrando a instrução SQL usada para consultar a visualização de monitoramento de estados de varredura de fluxo sys

  1. Para monitorar erros encontrados em registros carregados por meio de ingestão de streaming, você pode aproveitar a opção SYS_STREAM_SCAN_ERRORS visualização de monitoramento usando a seguinte instrução SQL:
select * from SYS_STREAM_SCAN_ERRORS;

  1. Escolha Execute para executar a instrução SQL.redshift query editor v2 mostrando a instrução SQL usada para consultar a visualização de monitoramento de erros de varredura de fluxo do sys

limpar

Depois de acompanhar, se você não precisar mais dos recursos criados, exclua-os na seguinte ordem para evitar cobranças adicionais:

  1. Exclua o conector MSK Connect msk-datagen-connector.
  2. Exclua o plug-in MSK Connect msk-datagen-plugin.
  3. Exclua o arquivo JAR do gerador de dados do Amazon MSK que você baixou e exclua o bucket do S3 que você criou.
  4. Depois de excluir o conector MSK Connect, você poderá excluir o modelo CloudFormation. Todos os recursos criados pelo modelo CloudFormation serão automaticamente excluídos da sua conta AWS.

Conclusão

Nesta postagem, demonstramos como configurar a ingestão de streaming do Amazon Redshift no Amazon MSK, com foco em privacidade e segurança.

A combinação da capacidade do Amazon MSK de lidar com fluxos de dados de alta produtividade com os recursos analíticos robustos do Amazon Redshift permite que as empresas obtenham insights acionáveis ​​prontamente. Essa integração de dados em tempo real aumenta a agilidade e a capacidade de resposta das organizações na compreensão das mudanças nas tendências de dados, nos comportamentos dos clientes e nos padrões operacionais. Permite a tomada de decisões oportuna e informada, ganhando assim uma vantagem competitiva no cenário empresarial dinâmico de hoje.

Esta solução também é aplicável para clientes que desejam utilizar Amazon MSK sem servidor e Sem servidor Amazon Redshift.

Esperamos que esta postagem tenha sido uma boa oportunidade para aprender mais sobre integração e configuração de serviços AWS. Deixe-nos saber seu feedback na seção de comentários.


Sobre os autores

Sebastião Vlad é arquiteto de soluções parceiro sênior da Amazon Web Services, apaixonado por soluções de dados e análise e sucesso do cliente. Sebastian trabalha com clientes empresariais para ajudá-los a projetar e construir soluções modernas, seguras e escaláveis ​​para alcançar seus resultados de negócios.

Sharad Pai é consultor técnico líder na AWS. Ele é especialista em análise de streaming e ajuda os clientes a criar soluções escaláveis ​​usando Amazon MSK e Amazon Kinesis. Ele tem mais de 16 anos de experiência no setor e atualmente trabalha com clientes de mídia que hospedam plataformas de streaming ao vivo na AWS, gerenciando picos de simultaneidade de mais de 50 milhões. Antes de ingressar na AWS, a carreira de Sharad como desenvolvedor líder de software incluiu 9 anos de codificação, trabalhando com tecnologias de código aberto como JavaScript, Python e PHP.

local_img

Café VC

LifeSciVC

Inteligência mais recente

Café VC

LifeSciVC

local_img