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:
- Clique em
.
Se você ainda não estiver conectado, informe as credenciais da tenancy e do usuário.
- Selecione a região na qual você deseja implantar a pilha.
- Siga os prompts na tela e as instruções para criar a pilha.
- Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
- 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.
- Se nenhuma outra alteração for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
- Clique em
- Implante usando o código do Terraform em GitHub:
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- 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
eaws-java-sdk.jar
. Você pode fazer referência a esses pacotes no arquivopom.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
eSECRET
, 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.
-
Para exibir informações sobre o produto, consulte Oracle Cloud Infrastructure Data Flow.
-
Para tentar o serviço Data Flow, use o tutorial Conceitos Básicos do Oracle Cloud Infrastructure Data Flow.
- Para saber mais sobre Python e Oracle Cloud Infrastructure Data Flow, use o workshop Oracle LiveLabs Amostra de Aplicativo Python com o OCI Data Flow
-
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:
17 de agosto de 2022 | Adicionado um diagrama para download e o botão Implantar e atualizado o link GitHub anterior. |
1 de dezembro de 2020 | A seção Implantar agora inclui referências a recursos adicionais necessários para se comunicar com o AWS. |