Implante um Data Lakehouse de código-fonte aberto no OCI

Um data lakehouse é uma arquitetura moderna e aberta que permite armazenar, entender e analisar todos os seus dados. Ele combina as habilidades de um data lake e um data warehouse para processar uma ampla gama de dados empresariais para análises avançadas e insights de negócios. Um data lakehouse oferece uma arquitetura que elimina silos de dados, permitindo analisar dados em seu estado. Você pode criar um data lakehouse do zero no Oracle Cloud Infrastructure (OCI).

Arquitetura

Essa arquitetura apresenta uma topologia de plataforma, visão geral de componentes, melhores práticas recomendadas e automação do Terraform para implantar um data lakehouse de código aberto na OCI.

Um data lakehouse pode armazenar e agregar dados de aplicativos empresariais. Os dados podem ser enviados ao data lake ou ao data warehouse. Os dados presentes no data lake podem ser processados e carregados no data warehouse ou podem ser lidos diretamente no data lake para análise avançada.

O diagrama a seguir ilustra essa arquitetura de referência.

Veja a seguir a descrição da ilustração open-source-data-lakehouse.png
Descrição da ilustração open-source-data-lakehouse.png

open-source-data-lakehouse-oracle.zip

Nesta arquitetura de data lakehouse na OCI, o Oracle MySQL HeatWave é usado para data warehousing. O Oracle MySQL HeatWave é o único serviço de nuvem MySQL com um acelerador de consultas incorporado, de alto desempenho e na memória. Para administradores de banco de dados e desenvolvedores de aplicativos, é o único serviço que permite a eles executar cargas de trabalho OLTP e OLAP diretamente de seu banco de dados MySQL. Como o MySQL é otimizado para OLTP, muitas implementações do MySQL usam um banco de dados OLAP separado para análise de negócios.

O Oracle MySQL HeatWave aumenta o desempenho do MySQL em ordem de magnitude para cargas de trabalho mistas e de análise, sem qualquer alteração nos aplicativos existentes. O Oracle MySQL HeatWave fornece uma plataforma única e unificada para cargas de trabalho transacionais e de análise. Isso elimina a necessidade do ETL complexo, demorado e caro, e a integração com um banco de dados de análise separado. O MySQL Autopilot no Oracle MySQL HeatWave automatiza o provisionamento, o carregamento de dados, a execução de consultas e o tratamento de falhas, o que economiza tempo significativo de desenvolvedores e DBAs.

O Oracle Cloud Infrastructure Object Storage serve como data lake nesta arquitetura. O OCI Object Storage permite que uma empresa armazene todos os seus dados em um ambiente elástico e econômico, fornecendo o processamento, a persistência e os serviços analíticos necessários para descobrir novos insights de negócios. Com um data lake no OCI Object Storage, você pode armazenar e adaptar dados estruturados e não estruturados e utilizar métodos para organizar grandes volumes de dados altamente diversos de diversas fontes.

A arquitetura apresentada contém os seguintes componentes de código-fonte aberto:

  • Apache Zeppelin

    O Apache Zeppelin é um notebook baseado na Web que permite análises de dados interativas orientadas por dados e documentos colaborativos com SQL, Scala, Python, R e muito mais.

    O Zeppelin é usado para ciência de dados e exploração de dados nesta arquitetura. No Zeppelin, você pode criar notebooks e aproveitar o conceito de interpretador do Zeppelin, que permite que qualquer idioma ou sistema de processamento de dados de back-end seja conectado. Com a conectividade estabelecida do Zeppelin para o MySQL e para o Object Storage, você pode executar consultas conjuntas e recuperar dados do data warehouse e do data lake simultaneamente, em uma verdadeira experiência de consulta do data lakehouse.

  • Grafana

    O Grafana é a plataforma de código aberto nesta arquitetura. O Grafana é um aplicativo web popular, escrito em TypeScript (front-end) e Go (back-end). Ele fornece gráficos para as origens de dados suportadas, uma delas sendo o MySQL. Vários plugins estão disponíveis on-line para permitir que você estenda o Grafana.

O Zeppelin e o Grafana utilizam um NFS (Network File System), que é compartilhado por duas instâncias de máquina virtual colocadas em uma sub-rede privada. Essas instâncias existem em dois domínios de falha distintos dentro de um domínio de disponibilidade. O sistema de arquivos existe em uma sub-rede privada dedicada com um Grupo de Segurança de Rede (NSG), que permite acesso ao ponto de acesso NFS de todas as instâncias. Os usuários podem acessar o Zeppelin e o Grafana por meio de um Balanceador de Carga da OCI, que faz parte desse design altamente disponível.

Essa arquitetura usa o Oracle Cloud Infrastructure Data Integration para carregar arquivos do Object Storage para o MySQL. O MySQL, Data Integration e Data Science for Marine Life Workshop explica como configurar e executar fluxos de dados com o Object Storage como origem e o MySQL como destino.

A arquitetura tem os seguintes componentes do OCI:

  • Locação

    Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você acessa o Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de uma empresa ou organização. Normalmente, uma empresa terá uma única locação e refletirá sua estrutura organizacional nessa locação. Em geral, uma única tenancy está associada a uma única assinatura e uma única assinatura geralmente só tem uma tenancy.

  • Compartimento

    Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.

  • Política

    Uma política do Oracle Cloud Infrastructure Identity and Access Management especifica quem pode acessar quais recursos e como. O acesso é concedido no nível de grupo e compartimento, o que significa que você pode gravar uma política que dá a um grupo um tipo específico de acesso em um compartimento específico ou à tenancy.

  • Região

    Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominados domínios de disponibilidade. As regiões são independentes das outras regiões, e grandes distâncias podem se separar (em países ou até mesmo continentes).

  • Rede virtual na nuvem (VCN) e sub-redes

    Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes de data center tradicionais, as VCNs dão a você total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, que podem ter escopo em uma região ou em um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contínuo de endereços que não se sobrepõem com as outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.

  • Domínios de disponibilidade

    Os domínios de disponibilidade são data centers independentes e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, que oferecem tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou resfriamento ou rede interna. Portanto, é pouco provável que uma falha em um domínio de disponibilidade afete os outros domínios

  • Domínios de falha

    Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com energia e hardware independentes. Quando você distribui recursos entre diversos domínios de falha, seus aplicativos podem tolerar falha física do servidor, manutenção do sistema e falhas de alimentação dentro de um domínio de falha.

  • Object Storage

    O OCI Object Storage é uma plataforma de armazenamento de alto desempenho em escala de internet que oferece durabilidade de dados confiável e econômica. O Object Storage pode armazenar uma quantidade ilimitada de dados não estruturados de qualquer tipo de conteúdo, incluindo dados analíticos. Você pode armazenar e recuperar dados com segurança e segurança diretamente da internet ou de dentro da plataforma de nuvem. Várias interfaces de gerenciamento permitem que você comece pequeno facilmente e dimensione facilmente, sem experimentar qualquer degradação no desempenho ou confiabilidade do serviço.

    Use o Object Storage como camada de armazenamento a frio para o data warehouse, armazenando dados usados com pouca frequência e unindo-os facilmente aos dados mais recentes com o Apache Zeppelin. Use o armazenamento de arquivos compactados para arquivos que precisam ser retidos por longos períodos de tempo e raramente acessados.

  • MySQL HeatWave

    O Oracle MySQL Database Service é um serviço de banco de dados totalmente gerenciado que permite aos desenvolvedores desenvolver e implantar rapidamente aplicativos nativos da nuvem seguros usando o banco de dados de código aberto mais popular do mundo. O Oracle MySQL HeatWave é um novo acelerador de consultas em memória, integrado, de alto desempenho, para o Oracle MySQL Database Service, que acelera o desempenho do MySQL para análises e consultas transacionais.

  • Data Integration

    O Oracle Cloud Infrastructure Data Integration é um serviço nativo da nuvem totalmente gerenciado e sem servidor que extrai, carrega, transforma, limpa e remodela dados de uma variedade de origens de dados nos serviços do Oracle Cloud Infrastructure de destino. O ETL (extrair carga de transformação) aproveita o processamento de expansão totalmente gerenciado no Spark. Os usuários criam processos de integração de dados usando uma interface de usuário intuitiva e sem código que otimiza fluxos de integração para gerar o mecanismo e a orquestração mais eficientes, alocando e dimensionando automaticamente o ambiente de execução. O OCI Data Integration fornece exploração interativa e preparação de dados e ajuda os engenheiros de dados a proteger contra desvios de esquema, definindo regras para tratar alterações de esquema.

  • Balanceador de carga

    O serviço Oracle Cloud Infrastructure Load Balancing fornece distribuição automatizada de tráfego de um único ponto de entrada para vários servidores no back-end.

  • Instâncias de computação

    O serviço Oracle Cloud Infrastructure Compute permite provisionar e gerenciar hosts de computação na nuvem. Você pode iniciar instâncias de computação com formas que atendem aos requisitos de recursos de CPU, memória, largura de banda da rede e armazenamento. Depois de criar uma instância de computação, você pode acessá-la de forma segura, reiniciá-la, anexá-la e desconectar volumes e encerrá-la quando não precisar mais dela.

  • File Storage

    O Oracle Cloud Infrastructure File Storage fornece um sistema de arquivos de rede durável, escalável e seguro e de nível empresarial. Você pode se conectar a um sistema de arquivos do File Storage Service de qualquer instância bare metal, máquina virtual ou contêiner em uma VCN. Você também pode acessar um sistema de arquivos de fora da VCN usando o Oracle Cloud Infrastructure FastConnect e a IPSec VPN.

  • Gateway de internet

    O gateway de internet permite o tráfego entre as sub-redes públicas em uma VCN e a internet pública.

  • Gateway NAT (Network address translation)

    Um gateway NAT permite que recursos privados em uma VCN acessem hosts na internet, sem expor esses recursos a conexões provenientes da internet.

  • Grupo de segurança de rede (NSG)

    Os NSGs atuam como firewalls virtuais para seus recursos de nuvem. Com o modelo de segurança de confiança zero do Oracle Cloud Infrastructure, todo o tráfego é negado e você pode controlar o tráfego de rede dentro de uma VCN. Um NSG consiste em um conjunto de regras de segurança de entrada e saída que se aplicam somente a um conjunto especificado de VNICs em uma única VCN.

Recomendações

Use as recomendações a seguir como ponto de partida.Seus requisitos podem ser diferentes da arquitetura descrita aqui.
  • VCN

    Ao criar uma VCN, determine o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que você planeja anexar às sub-redes na VCN. Use blocos CIDR que estão dentro do espaço de endereço IP privado padrão.

    Selecione uma faixa de endereços que não se sobreponha à sua rede local ou a qualquer outra rede, para que você possa configurar uma conexão entre a VCN e a sua rede local, se necessário.

    Ao projetar as sub-redes, considere seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como limite de segurança.

  • Segurança

    Use políticas para restringir quem pode acessar os recursos do Oracle Cloud Infrastructure (OCI) que sua empresa tem e como eles podem acessá-los.

    Políticas específicas são necessárias para uma implementação de segurança bem-sucedida. Considere usar o Oracle Cloud Infrastructure Vault para obter proteção adicional de suas chaves, certificados e segredos.

    O serviço de Rede oferece duas funcionalidades de firewall virtual que usam regras de segurança para controlar o tráfego no nível do pacote: listas de segurança e grupos de segurança de rede (NSG). Um NSG consiste em um conjunto de regras de segurança de entrada e saída que se aplicam somente a um conjunto de VNICs de sua escolha em uma única VCN. Por exemplo, você pode escolher todas as instâncias de computação que atuem como servidores Web na camada Web de um aplicativo de várias camadas na sua VCN.

    As regras de segurança NSG funcionam igual às regras de lista de segurança. No entanto, para a origem ou o destino de uma regra de segurança NSG, você pode especificar um NSG em vez de um bloco CIDR. Dessa forma, você pode criar facilmente regras de segurança para controlar o tráfego entre dois NSGs na mesma VCN ou no mesmo tráfego em um único NSG. Ao criar um sistema de banco de dados, você pode especificar um ou mais NSGs. Você também pode atualizar um sistema de banco de dados existente para usar um ou mais NSGs.

  • Computação

    Selecione as configurações com a combinação apropriada de OCPUs e memória e provisione armazenamento local em NVMe e/ou bloco de acordo com a necessidade, para cada instância. Considere o uso das configurações flexíveis disponíveis, que oferecem mais flexibilidade na combinação de OCPUs e memória.

Considerações

Ao implantar um data lakehouse na Oracle Cloud Infrastructure (OCI), considere o seguinte:

  • Integração de fontes de dados

    Para a integração do Object Storage com o MySQL, escolhemos o Oracle Cloud Infrastructure Data Integration. Se você quiser usar uma ferramenta de código aberto, Talend é uma opção. Talend não foi incluído nesta arquitetura porque seu download não pode ser automatizado (o download exige que você se inscreva no Talend).

  • Ciência de Dados e Aprendizado de Máquina

    Escolhemos o Apache Zeppelin de código aberto como nossa plataforma para ciência de dados e descoberta de dados. Como alternativa, você pode usar o Oracle Cloud Infrastructure Data Science, um capacitador importante de insights e aplicativos avançados baseados em dados que fornece aos cientistas de dados acesso a workflows automatizados, notebooks JupyterLab e centenas de ferramentas de código aberto, e uma abordagem simplificada para a criação de modelos. É uma plataforma colaborativa, permitindo que as equipes trabalhem juntas com maneiras de compartilhar e reproduzir modelos em uma forma estruturada e segura de obter resultados de nível empresarial. A plataforma é totalmente gerenciada, atendendo às necessidades da empresa moderna.

  • Análises e relatórios

    Nesta arquitetura, o Grafana foi escolhido como a plataforma de análise. Considere usar o Oracle Analytics Cloud, um serviço gerenciado avançado que pode atender de forma abrangente aos seus requisitos de análise e relatório.

  • Disponibilidade e escalabilidade da instância

    Neste exemplo, na arquitetura de alta disponibilidade, mostramos duas instâncias de diferentes domínios de falha dentro do mesmo domínio de disponibilidade. Você pode optar por colocar as instâncias em diferentes domínios de disponibilidade (em regiões, onde disponíveis), para obter uma tolerância a falhas ainda mais alta.

    Uma abordagem alternativa, que representa uma adaptação mais dinâmica às necessidades de desempenho mais exigentes e variadas, é o uso de um pool de instâncias e dimensionamento automático.

    Os pools de instâncias permitem provisionar e criar várias instâncias do Oracle Cloud Infrastructure Compute com base na mesma configuração dentro da mesma região.

    O dimensionamento automático permite que você ajuste automaticamente o número de instâncias do serviço Compute em um pool de instâncias com base nas métricas de desempenho, como utilização da CPU. O dimensionamento automático ajuda a fornecer desempenho consistente para os usuários durante períodos de alta demanda e ajuda a reduzir seus custos durante períodos de demanda baixa.

  • Disponibilidade e escalabilidade do banco de dados

    Considere a implantação de um Sistema de BD Oracle MySQL adicional como uma réplica standby, para alta disponibilidade. Você pode colocar a réplica em outro domínio de falha, domínio de disponibilidade ou região.

  • Backups de banco de dados

    O Oracle MySQL Database Service suporta dois tipos de backup: backup completo de todos os dados contidos no sistema de banco de dados e backup incremental somente dos dados que foram adicionados ou alterados desde o último backup completo. Os backups são executados das seguintes maneiras:

    • Manual: Uma ação na Console ou solicitação feita por meio da API inicia o backup. Você pode reter backups manuais por no mínimo um dia e no máximo 365 dias.
    • Automático: os backups programados automaticamente são executados sem nenhuma interação necessária no momento de sua escolha. Os backups automáticos são mantidos por um a 35 dias. O valor de retenção padrão é sete dias. Quando definido, você não pode editar o período de retenção de um backup automático.
  • Armazenamento de arquivos

    Neste exemplo, estamos aproveitando o serviço Oracle Cloud Infrastructure File Storage. Como alternativa, uma arquitetura com vários nós pode ter um volume em blocos compartilhado. Um volume em blocos pode ser anexado a várias instâncias como leitura/gravação. Nesse caso, um sistema ou solução com reconhecimento de cluster, como o Oracle Cluster File System versão 2 (OCFS2), deve ser instalado.

  • Segurança

    Considere usar o Oracle Cloud Guard para monitorar e manter a segurança dos seus recursos na OCI de forma proativa. O Oracle Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos quanto a falhas de segurança e monitorar operadores e usuários quanto a atividades de risco. Quando qualquer configuração incorreta ou atividade não segura é detectada, o Oracle Cloud Guard recomenda ações corretivas e auxilia com essas ações, com base nas receitas do respondedor que você pode definir. Para recursos que exigem segurança máxima, a Oracle recomenda que você use zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança que se baseiam nas melhores práticas. Por exemplo, os recursos em uma zona de segurança não podem ser acessados pela internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você cria e atualiza recursos em uma zona de segurança, o OCI valida as operações com relação às políticas na receita de zona de segurança e nega operações que violam qualquer uma das políticas.

  • Desenvolvimento de aplicativos

    O Oracle Application Express (Oracle APEX), a plataforma de desenvolvimento de baixo código da Oracle, é um exemplo de ferramenta que você pode usar para criar aplicativos empresariais escaláveis e seguros em cima do data lakehouse.

    Usando o Oracle APEX, os desenvolvedores podem desenvolver e implantar rapidamente aplicativos atraentes que resolvem problemas reais e fornecem valor imediato. Você não precisará ser especialista em uma vasta gama de tecnologias para fornecer soluções sofisticadas. Foque na solução do problema e deixe o Oracle APEX cuidar do resto. Ele tem recursos de classe mundial e você pode implantá-lo em qualquer lugar.

Implantar

O código do Terraform para esta arquitetura de referência está disponível no GitHub. Você pode acessar o código no Oracle Cloud Infrastructure Resource Manager com um único clique, criar a pilha e implantá-la. Como alternativa, você pode fazer download do código do GitHub para seu computador, personalizar o código e implantar a arquitetura usando a CLI do Terraform.

  • Implante usando a pilha de amostra no Oracle Cloud Infrastructure Resource Manager:
    1. Clique em Implante no Oracle Cloud

      Se você ainda não estiver conectado, informe a tenancy e as credenciais do usuário.

    2. Revise e aceite os termos e condições.
    3. Selecione a região na qual você deseja implantar a pilha.
    4. Siga os prompts na tela e as instruções para criar a pilha.
    5. Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
    6. Aguarde a conclusão da tarefa e revise o plano.

      Para fazer qualquer alteração, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Planejar novamente.

    7. Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
  • Implante usando o código do Terraform no GitHub:
    1. Vá para GitHub.
    2. Clone ou faça download do repositório para seu computador local.
    3. Siga as instruções no documento README.

Avaliações

Author: Nuno Goncalves