Skip to content

Instantly share code, notes, and snippets.

@NaelsonDouglas
Last active August 12, 2018 12:37
Show Gist options
  • Save NaelsonDouglas/ff61983b9f5b9dc8c8cd6298bc3fe7c2 to your computer and use it in GitHub Desktop.
Save NaelsonDouglas/ff61983b9f5b9dc8c8cd6298bc3fe7c2 to your computer and use it in GitHub Desktop.
Tıtulo do Plano de Trabalho: Projeto e Implementação de um protótipo para a paralelização automática do processamento de imagens utilizando a Computação em Nuvem
Resumo
A crescente demanda de armazenamento de dados de imagens digitais atingiu o ordem de grandeza de terabytes. Aplicações que envolvem grande quantidade de dados de imagens requerem a utilização de infraestruturas distribuídas para aumentar a capacidade de armazenamento e processar os dados paralelamente. No contexto dessas aplicações, destaca-se o processamento de imagens de sensoriamento remoto que também utilizando a computação em nuvem como infraestrutura de execução. Os serviços ofertados pela computação em nuvem utilizam tecnologias de virtualização para gerir automaticamente as infraestruturas físicas de processamento e de rede. Entretanto, as interfaces de programação disponibilizadas pela computação em nuvem não são de fácil utilização para os desenvolvedores de aplicações que envolvem grande quantidade de imagens. Esse projeto tem como objetivo prover abstrações e operações de programação que facilitem o processamento de grande quantidade de dados de imagens utilizando a computação em nuvem como infraestrutura de execução. A metodologia empregada consiste em formalizar as soluções em algoritmos e validadas em protótipos de pesquisa. Os protótipos serão implementados utilizando serviços de computação em nuvem com estudo de caso que utiliza imagens reais da NASA extraídos de radares do tipo PolSAR (Polarimetric Synthetic Aperture Radar)
Introdução e Objetivos
O principal objetivo do projeto é responder a seguinte pergunta científica principal: como viabilizar e facilitar o processamento de imagens que contém grande quantidade de dados?
O processamento de imagens não é uma tarefa trivial devido à heterogeneidade dos tipos de dados, ao acesso de leitura e escrita aos dados, ao tempo de processamento de cálculos que demoram muito para serem executados. Esse problema torna-se mais difı́cil quando envolve grande volume de dados pois exige muito espaço de memória para armazenamento e técnicas de computação de alto desempenho para diminuir o tempo de processamento das imagens. Dessa maneira, para viabilizar o processamento de imagens muito grandes, precisa-se uma infraestrutura de execução distribuı́da para ampliar a capacidade de armazenamento de dados e poder processá-los simultaneamente.
A necessidade de uma infraestrutura de execução distribuı́da exige do usuário conhecimentos específicos em programação paralela e gestão de aplicações distribuídas como configuração, instalação e implantação. Finalmente, facilitar o processamento dessas aplicações é um grande desafio uma vez que não deve ser exposto ao usuário as dificuldades inerentes ao armazenamento e processamento de grande quantidade de dados de imagens em um ambiente distribuído.
Esse Projeto considera a seguinte hipótese para a pergunta cientı́fica levantada anteriormente: o processamento de grande quantidade de dados de imagens de sensoriamento remoto pode ser facilitado através de uma interface gráfica e/ou um modelo de programação de alto nı́vel cujas operações de acesso e processamento de dados são viabilizadas através de execução em infraestruturas distribuídas de computação em nuvem.
Metodologia
Resultados e Discussões
Foi elaborada a modelagem do projeto protótipo, definindo os módulos da aplicação a serem implementados e todas as formas de interação entre eles para chegar-se a um protótipo modular e flexível.
A linguagem escolhida para a implementação do protótipo foi a linguagem de programação Julia. A sua escolha foi causada pelo motivo de Julia ser uma linguagem com implementação nativa para computação paralela através do pacote ParallelAccelerator, o que facilita consideravelmente os objetivos do projeto.
O protótipo foi organizado para funcionar em módulos que se interligam entre sí. São eles:
DataHubBackend, que tem por finalidade servir como um serviço facilitador de gerenciamento de dados. É possível utilizar o DataHubBackend para implementar módulos de dados e acessar bases de dados específicas, como por exemplo Google Drive ou Descarteslabs, não se limitando a um único módulo. Para efeito do protótipo foi implementado um módulo de acesso a arquivos locais.
Infraestructure, tem por finalidade ser um gerenciador de infraestutura do sistema. Através do Infraestructure é possível fazer a acoplagem de sistemas externos que ofereçam serviços em nuvem, como por exemplo: Amazon AWS e Microsoft Azure. Para efeito do protótipo, foi implementado o módulo que utiliza Docker para oferecer serviços computacionais.
RSProcessingService, este módulo tem por finalidade realizar o gerenciamento e da aplicação final do usuário, assim como dos mecanismos de autenticação, controle de acesso de dados e mecanismos de cobrança. Através do RSProcessingService o usuário pode fazer a aplicação inicie um sistema com uma quantidade específica de memória, processadores e espaço em disco. Em sequência o serviço se comunica com os outros módulos, requerindo de cada um deles os recursos que lhe competem o gerenciamento, para finalmente etregar ao usuário o acesso aos recursos requeridos. Só então o RSProcessingService inicia o processo de cobrança previamente assinado pela disponibilização do serviço.
Conclusões
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment