(This will be translated soon, sorry for the delay.)

Goal

O objetivo da disciplina é abordar tópicos avançados relacionados ao desenvolvimento de aplicações distribuídas para processamento de volumes massivos de dados. (Basicamente, o que costuma de chamar de Big-Data.)

Com o surgimento de diversas fontes que oferecem enormes volumes de dados, bem como outras que oferecem dados em tempo real, as demandas de processamento têm crescido de forma significativa. Ambientes de processamento como Hadoop se tornaram comuns e outros ambientes mais modernos ou mais específicos também surgem a cada dia.

Nesse contexto, esta disciplina pretende discutir os conceitos básicos relacionados com a área de processamento de dados massivos. O foco será no desenvolvimento de aplicações usando ambientes de processamento como Hadoop e Spark, bem como no desenvolvimento de soluções em termos de novos ambientes de processamento ou melhorias nos ambientes existentes.

Pré-requisites

Pela característica do curso, conhecimento anterior de processamento distribuído, como apresentado em AEDs 3 e/ou Sistemas Operacionais é pré-requisito. Isso normalmente significa ter cursado as disciplinas, mas em casos excepcionais, conforme avaliação do professor, isso pode ser liberado.

Program

Os tópicos abordados pretendem cobrir os principais elementos para o desenvolvimento de novas aplicações no contexto de Big-data. Para esse fim serão discutidos princípios gerais de organização de sistemas distribuídos, organização das novas aplicações que estão surgindo na Internet e soluções para simplificar a tarefa dos desenvolvedores, bem como aspectos de sistemas operacionais avançados, como virtualização.

  • Conceitos básicos de sistemas distribuídos.
  • Princípios de processamento e armazenamento de volumes de dados massivos.
  • Definição de modelos de consistência.
  • Hadoop.
  • Spark.
  • Outros ambientes de processamento.

Grading

A primeira parte do curso será baseada em aulas expositivas apresentadas pelo professor. Ao final dessa fase (aproximadamente na metade do semestre) será realizada uma prova (com consulta, para fazer em casa) sobre os temas discutidos. Durante a segunda parte do curso os alunos deverão apresentar seminários preparados sobre temas correntes de pesquisa e artigos recentes. Todos os alunos deverão ler os artigos assinalados para cada aula e participar das discussões. Em paralelo, os alunos deverão desenvolver um trabalho com três entregas ao longo do semestre sobre um tema relacionado à disciplina. Uma lista de possíveis tópicos para trabalhos será apresentada posteriormente.

Distribution of points

Esta distribuição ainda está sujeita a alterações mas, a princípio, os pontos serão distribuídos da seguinte forma:

  • Prova: uma, 15% da nota final
  • Leitura dos artigos: pelo menos um por aula, normalmente dois, 25% da nota final
  • Seminários: cada aluno deverá apresentar um seminário, 25% da nota final
  • Trabalho: desenvolvido ao longo do semestre, 30% da nota
  • Participação em sala e no moodle: aproximadamente 5% da nota final.

Final Project

Esse projeto (a ser desenvolvido em grupo) deverá abordar temas relacionados aos assuntos discutidos em sala durante o curso. O formato preciso dependerá muito do tema escolhido. Simulações, implementações, desenvolvimento de modelos formais e avaliações de desempenho são todos possíveis. Em alguns casos, levantamentos bibliográficos também podem ser aceitos.

O trabalho constará de três entregas:

  • Especificação: proposta do que será implementado, objetivos, possíveis problemas, referências relevantes, resultados esperados, cronograma, critérios para aprovação do trabalho. 5% da nota.
  • Andamento: relatório de andamento do projeto, atualização do cronograma, discussão de problemas e resultados positivos. 10% da nota
  • Relatório final: relatório final, no formato de artigos da SBC, com aproximadamente 15 páginas, descrevendo os resultados alcançados em comparação com os critérios de aprovação propostos. 25% da nota

Papers

Não há livro texto para a disciplina. Os artigos a serem lidos para cada aula, bem como outros artigos de apoio para temas específicos, serão publicados através do espaço do curso no minha.ufmg.

Detailed class schedule

  1. Introdução. Motivação, histórico. Leitura de artigos.
  2. A estrutura de datacenters modernos.
  3. Discussão sobre os trabalhos.
  4. Google File System (HDFS) e MapReduce (Hadoop).
  5. Tachyon e Spark.
  6. Anthill e Watershed
  7. Watershed - nova versão
  8. Introdução à Mineração de Dados
  9. Identificação de elementos similares (LSH)
  10. Identificação de elementos similares - artigos
  11. Itemsets frequentes; regras de associação
  12. Itemsets frequentes - artigos
  13. Agrupamento (clustering)
  14. Agrupamento (clustering) - artigos
  15. Processamento de streams de dados
  16. Processamento de streams - artigos
  17. Processamento de grafos de grandes dimensões
  18. Processamento de grafos - artigos
  19. Seminários sobre artigos relevantes
  20. Seminários sobre artigos relevantes
  21. Seminários sobre artigos relevantes
  22. Seminários sobre artigos relevantes
  23. Seminários sobre artigos relevantes
  24. Seminários sobre artigos relevantes
  25. Seminários sobre artigos relevantes
  26. Seminários sobre artigos relevantes
  27. Seminários sobre artigos relevantes
  28. Seminários sobre artigos relevantes
  29. Apresentação dos trabalhos