Analisar Dados de Origens de Armazenamento de Objetos Externos Usando o Oracle Cloud Infrastructure Data Flow

Seus dados residem em nuvens diferentes, como Amazon Web Services S3 ou Azure Blob Storage, mas você deseja analisá-los em uma plataforma de análise comum. O Oracle Cloud Infrastructure Data Flow é um serviço Spark totalmente gerenciado que permite desenvolver e executar análises de big data, independentemente de onde seus dados residam, sem ter que implantar ou gerenciar um cluster de big data.

Arquitetura

Essa arquitetura mostra o Oracle Cloud Infrastructure Data Flow conectando-se a buckets do Amazon Web Service (AWS) S3 ou buckets do Azure Blob Storage, analisando os dados e salvando os resultados no Oracle Cloud Infrastructure Object Storage.

Para estabelecer conexão com a AWS, o aplicativo Data Flow requer uma chave de acesso da AWS e uma chave secreta. Para estabelecer conexão com o Azure, o serviço Data Flow requer o nome da conta do Azure e a chave da conta.

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



oci-dataflow-arquitetura-oracle.zip

A arquitetura tem os seguintes componentes:

  • Região

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

  • Oracle Cloud Infrastructure Data Flow

    O Oracle Cloud Infrastructure Data Flow é uma plataforma baseada na nuvem e sem servidor que permite criar, editar e executar jobs do Spark em qualquer escala sem a necessidade de clusters, uma equipe de operações ou conhecimento altamente especializado do Spark. Durante o runtime, o Data Flow obtém a origem do aplicativo, cria a conexão, recupera os dados, processa-os e grava a saída no Oracle Cloud Infrastructure Object Storage.

  • Armazenamento de objetos

    O armazenamento de objetos fornece acesso rápido a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados de análise e conteúdo avançado, como imagens e vídeos. Você pode armazenar de forma segura e depois recuperar dados diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento de forma integrada sem experimentar qualquer degradação no desempenho ou na confiabilidade do serviço. Use o armazenamento padrão para armazenamento de acesso frequente que você precisa para acessar de forma rápida, imediata e frequente. Use o armazenamento de arquivos compactados para armazenamento " frio" que você mantém por longos períodos de tempo e raramente acessa.

Recomendações

Use as recomendações a seguir como ponto de partida para analisar dados de origens de armazenamento de objetos externos usando o Oracle Cloud Infrastructure Data Flow.

Seus requisitos podem ser diferentes da arquitetura descrita aqui.

  • Local dos Dados

    Essa arquitetura destina-se aos usuários a testar de forma rápida e fácil os aplicativos Spark usando o serviço Data Flow. Após um teste de viabilidade bem-sucedido, recomendamos transferir os dados de origem para o Oracle Cloud Infrastructure Object Storage para melhorar o desempenho e reduzir o custo.

  • Object Storage

    Essa arquitetura usa o Oracle Cloud Infrastructure Object Storage padrão para armazenar a saída processada, de forma que outros serviços de nuvem possam acessar a saída para análise e exibição adicionais.

Considerações

Ao analisar dados de origens de armazenamento de objetos externos usando o Oracle Cloud Infrastructure Data Flow, considere essas opções de implantação.

  • Aplicativo Spark

    Se você tiver um aplicativo Spark existente em execução nos dados do Amazon Web Services S3 ou do Azure Blob Storage, poderá usar o mesmo aplicativo Spark no Oracle Cloud Infrastructure Data Flow.

  • Desempenho

    A leitura de dados entre data centers é inerentemente lenta. Essa arquitetura é adequada para uma prova de conceito ou para aplicações que exigem muita CPU, como trabalhos de aprendizado de máquina. Se sua prova de conceito for bem-sucedida, transfira os dados de origem localmente para o Oracle Cloud Infrastructure Object Storage antes de executar jobs de produção grandes.

  • Segurança

    Use políticas para restringir quem pode acessar os recursos do Oracle Cloud Infrastructure e até que ponto.

    Use o Oracle Cloud Infrastructure Identity and Access Management (IAM) para designar privilégios a usuários e grupos de usuários específicos para o Fluxo de Dados e para executar o gerenciamento no Fluxo de Dados.

    A criptografia está ativada para o Oracle Cloud Infrastructure Object Storage por padrão e não pode ser desativada.

  • Custo

    O Oracle Cloud Infrastructure Data Flow é pago por uso; portanto, você só paga quando executa o aplicativo Data Flow, não quando o cria.

    O processamento de um grande volume de dados do Amazon Web Services S3 pode resultar em altos custos de saída de dados.

Implantar

O código do Terraform para essa arquitetura de referência está disponível como uma pilha de amostra no Oracle Cloud Infrastructure Resource Manager. Esta pilha de amostra do Terraform implanta um ambiente de aplicativo OCI Data Flow, juntamente com políticas do IAM e buckets do OCI Object Storage (não armazenamento de terceiros). Por padrão, um aplicativo Python Spark de demonstração também será implantado. Você também pode fazer download do código em GitHub e personalizá-lo para atender aos seus requisitos específicos.

  • 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 as credenciais da tenancy e do usuário.

    2. Selecione a região na qual você deseja implantar a pilha.
    3. Siga os prompts na tela e as instruções para criar a pilha.
    4. Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
    5. Aguarde a conclusão do job 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.

    6. Se nenhuma outra alteração 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 em 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.

Além do código Terraform fornecido no GitHub, os trechos de código abaixo ilustram como se conectar ao Amazon Web Services S3 e como consultar os dados.

  • Para se conectar e consultar dados do S3, você precisa incluir os pacotes hadoop-aws.jar e aws-java-sdk.jar. Você pode fazer referência a esses pacotes no arquivo pom.xml da seguinte forma:
    <dependency>
    	<groupId>org.apache.hadoop</groupId>
    	<artifactId>hadoop-aws</artifactId>
    	<version>2.9.2</version>
    	<exclusions>
    	<exclusion>
    		<groupId>org.apache.hadoop</groupId>
    		<artifactId>hadoop-common</artifactId>
    	</exclusion>
    	</exclusions>
    </dependency>
    <dependency>
    	<groupId>com.amazonaws</groupId>
    	<artifactId>aws-java-sdk</artifactId>
    	<version>1.7.4</version>
    </dependency>
  • Use um código semelhante ao seguinte para estabelecer conexão com o Amazon Web Services S3. Forneça sua chave de acesso e sua chave secreta. No trecho de código abaixo, esses valores são representados pelas variáveis ACCESS e SECRET, respectivamente:
    SparkSession spark = SparkSession.builder().master("local")
    	.config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    	.config("spark.hadoop.fs.s3a.access.key", ACCESS)
    	.config("spark.hadoop.fs.s3a.secret.key", SECRET)
    	.config("fs.s3a.connection.ssl.enabled", "false")
    	.getOrCreate();
  • Use um código semelhante ao seguinte para consultar os dados usando o local do S3 e o nome da tabela que você especificar.
    Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>");
    ds.createOrReplaceTempView("<Table Name>");
    Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");

Explorar Mais

Saiba mais sobre os recursos desta arquitetura.

Oracle Cloud Infrastructure Data Flow:
Apache Spark:
  • Para saber mais sobre as classes SparkSession e Dataset mostradas nos snippets de código, consulte a documentação do Spark Java API.

  • Para obter informações sobre as outras APIs suportadas pelo Apache Spark, consulte Documentação da API Spark.

Para obter diretrizes gerais de arquitetura do Oracle Cloud Infrastructure, consulte Framework de práticas recomendadas do Oracle Cloud Infrastructure.

Log de Alterações

Este log lista alterações significativas: