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: