Sistemas para Processamento de Big Data

Objetivos

Na UC será dado particular ênfase aos modelos programação suportados e à sua aplicação.

Os objetivos principais:

Conhecimento

  • Conhecer as diferentes facetas do processamento em Big Data
  • Conhecer as principais classes de sistemas para armazenamento de grandes volumes de dados
  • Conhecer os modelos de programação genéricos dominantes
  • Conhecer soluções para domínios específicos

Aplicação

  • Identificar qual o tipo de sistema apropriado para a resolução dum problema concreto
  • Codificar (a solução para) um problema concreto usando o modelo de programação mais adequado
  • Executar uma aplicação numa plataforma distribuída

Caracterização geral

Código

12078

Créditos

6.0

Professor responsável

João Manuel dos Santos Lourenço, Sérgio Marco Duarte

Horas

Semanais - 4

Totais - 48

Idioma de ensino

Português

Pré-requisitos

 Conhecimentos de programação de computadores, preferencialmente em Python.

Conhecimento prévio de outras linguagens de programação como o C e Java são boas alternativas aos conhecimentos prévio de Python.

Bibliografia

Selected set of book chapters and papers -- these materials will be made available at CLIP.

Método de ensino

Nas aulas teóricas expõe-se e discutem-se os tópicos do programa da UC, recorrendo a sistemas existentes para ilustrar as questões em destaque. 

As aulas práticas fornecem aos alunos a experiência no desenvolvimento de soluções de processamento de dados em grande escala, usando uma seleção das plataformas existentes. São realizadas demonstrações, resolvidos exercícios e o acompanhamento dos dois pequenos trabalhos práticos a resolver durante o semestre.

A avaliação será baseada nos seguintes componentes: dois testes (25% cada); dois trabalhos de programação, resolvidos em grupo (15% + 35%).

Método de avaliação

2 testes (30%+30%) ou exame (60%)
– Classificação mínima (média dos dois testes ou exame) de 8,50 valores.

1 projeto de programação (40%)
– Grupos de 3 estudantes

Nos casos de melhoria (da componente teórica), aplicam-se as regras acima, comparando a nota final existente, com a nota resultante aplicando os pesos do ano corrente.

Conteúdo

1. Visão Geral

  • Motivação, Aplicações
  • Desafios

2. Modelos de programação

  • Batch vs. Incremental vs. tempo-real
  • Dados estruturados vs. dados não-estruturados
  • Programação declarative vs. generalista

3. Armazenamento de Dados

  • Sistemas de ficheiros distribuídos (e.g. HDFS)
  • Base de dados relacionais.
  • Bases de dados NoSQL (e.g. key-value stores, arquivos de documentos)
  • Integração de múltiplas IGNOREes de dados (e.g. Hive)

4. Plataformas de processamento genéricas

  • Infraestrutura: contexto, propriedades e implicações
  • Modelo map-reduce and plataforma de suporte (e.g. Hadoop)
  • Plataformas de segunda geração (e.g Pig, Spark)

5. Processamento em domínios específicos

  • Bibliotecas para aprendizagem automatic (e.g. Spark MLlib)
  • Plataformas para processamento em grafos (e.g. GraphX)

6. Introdução às plataformas para processamento em tempo-real

  • Fontes de dados (e.g. Flume, Kafka)
  • Modelos de dados: micro-batches vs. fluxos contínuos
  • Plataformas de processamento (e.g. Storm, Spark Streaming)

Cursos

Cursos onde a unidade curricular é leccionada: