Trabalhando com grandes quantidades de dados Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento.

Slides:



Advertisements
Apresentações semelhantes
Redes Windows.
Advertisements

Sistemas Distribuídos
Software Aging em uma Infraestrutura de Cloud Computing
Encontro Computação em Nuvem
Desempenho da Computação Paralela em Ambientes Virtualizados
INTRODUÇÃO À COMPUTAÇÃO Sistemas Operacionais
Paulo Pedrosa Tiago Nogueira
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Distribuídos
IBM Blue Cloud computer
Sistemas Cliente/Servidor Introdução
Noções de Sistemas Operacionais
Sistemas operacionais
SISTEMAS DE INFORMAÇÕES GERENCIAIS CONTÁBEIS
Sistemas Operacionais de Rede Professor: João Paulo de Brito Gonçalves
Introdução à Informática
Prefeitura de Santo André
O Portal do Estudante de Computação
Transparência Total! O Software Secullum TI.Net foi desenvolvido para facilitar o gerenciamento das informações que circulam nos computadores conectados.
Fernando Seabra Chirigati
Componentes e Dispositivos de uma Rede
Computação em Nuvem.
Cloud Computing.
Discos SCSI Fonte de alimentação Controlador SCSI Disco SAS
Professora Vanessa Fonseca
Mandic Partner Program
Luiz Augusto da Silva Alves Professo Luís Henrique Maciel Kosmalski Costa Professor Otto Carlos Muniz Bandeira Duarte Redes 2 Novembro 2010.
XEn Universidade Federal do Rio de Janeiro
Cloud Computing Universidade Federal do Rio de Janeiro
Redundant Array of Independent Drives Raid
Sistemas Distribuídos
Cluster Beowulf.
Virtualização.
Gerencia de Redes Redes de Computadores II
MapReduce Conceitos e Aplicações
Sistemas Distribuídos
Faculdade de Tecnologia SENAI de Desenvolvimento Gerencial
Cloud Computing Também conhecido no Brasil como computação nas nuvens ou computação em nuvem, cloud computing se refere, essencialmente, à ideia de utilizarmos,
Universidade de Mogi das Cruzes Tec
BOA NOITE Alex Sandro Souza de Oliveira 23/09/2010.
Augusto Martins e José Luís Zem Universidade Metodista de Piracicaba - UNIMEP Curso de Bacharelado em Sistemas de Informação Utilização de Cluster de Computadores.
Microsoft Azure Apresentação de visão geral para parceiros
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
SISTEMAS OPERACIONAIS I
Alexandre Barbosa de Lima SF/PMSP
11 13/01/10 CLOUD COMPUTING O QUE É COMPUTAÇÃO EM NUVEM ?
Intercloud Cauê R P Moresi.
O primeiro passo para a nuvem
Processos.
COMPUTAÇÃO NAS NUVENS.
Cloud Computing Willamys Araújo.
Aplicações de redes em sistemas de informação
Sistemas Distribuidos
CONECTIVIDADE Prof.: Alessandro V. Soares Ferreira
Tópicos Avançados Prof. Bal. Emerson Meneses Inocente.
Rede Bruno Rafael de Oliveira Rodrigues. Backup  Um dos pontos importantes nos sistemas baseados em redes de computadores é a possibilidade de recuperação.
Convergência Digital Porque ela aconteceu:
Introdução aos Sistemas Operacionais
Computação em Nuvem Felipe Carvalho UFES 2009/2 Conceitos Básicos.
Serviços de rede e internet Jackson Eduardo da Silva.
Cloud Computing e os Sistemas Empresariais Móveis.
Virtualização de sistemas operacionais Uma solução para quem não tem muita infra-estrutura para testes, ou até mesmo para criação de VPS.
Computação em Nuvem Felipe Carvalho UFES 2009/2 Windows Azure.
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Banco de Dados Distribuídos Sílvia Cristina de Matos Soares
Emerson Felipe GOVERNO DO ESTADO DE PERNAMBUCO ESCOLA TÉCNICA ESTADUAL MARIA EDUARDA RAMOS DE BARROS.
COMPUTAÇÃO NAS NUVENS Prof. André Aparecido da Silva Disponível em:
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Gestão de Operações e Logística Unidade 04. Definição de Gestão de Estoque O estoque é definido como certa quantidade de matériaprima ou produto acabado.
Segurança Lógica e Física de Redes Gestão da Segurança da Informação Criptografia Proteção de Perímetro Anderson Aparecido Alves da Silva – Aula 12_2 1.
Transcrição da apresentação:

Trabalhando com grandes quantidades de dados Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Disciplina: TECC – Analise de Dados 2 Período: Professores: Andrey Brito, Leandro Balby

Nas última aulas Exploração dos dados e estatística descritiva Coleta Pré-processamento Sumarização Análise Interpretação Est. Descritiva: Como resumir conjuntos de números? Box plots, scatter plots Médias/medianas/moda, dispersão (variância, faixa), distribuição (histograma) Amostragem

Nas última aulas O primeiro problema: Exercitar a exploração (usando R como ferramenta) Antes disso, uma breve introdução sobre computação na nuvem

Problema 2: introdução a Big Data Ferramentas de big data 1.Usando a Cloud: criar uma imagem com Hadoop local, ao ser instanciada, essa imagem monta um volume (que poderia ter alguns dados), lista o conteúdo do volume e faz um upload da listagem para o Swift 1.Resultado: uma imagem/snapshot, um apontador para o Swift com os resultados e um relatório com o que foi feito 2.Usando Hadoop localmente: uma análise usando MapReduce 1.Resultado: relatório com os dados de entrada, código MapReduce e os dados de saída 3.Submetendo uma tarefa MapReduce no Sahara 1.Relatório: Escalabilidade? Comparação com R?

O que é Cloud Computing (aka. Computação na nuvem)? Uma forma de oferecer recursos de TI que permite que usuários comprem recursos... Sob demanda; De forma automática; Com uma granularidade adequada às suas necessidades; Cuja utilização será medida de forma acurada; (Exemplos de recursos: espaço de armazenamento, capacidade de executar tarefas, capacidade de comunicação)

O que é Cloud Computing (aka. Computação na nuvem)? Uma forma de oferecer recursos de TI que permite que usuários comprem recursos... Sob demanda; Só são adquiridos quando necessário De forma automática; Não envolve negociações entre humanos (De certa forma) Rapidamente adquiridos Com uma granularidade adequada às suas necessidades; Você compra um recurso na quantidade adequada Não compra um servidor inteiro, não compra um disco inteiro Cuja utilização será medida de forma acurada; É possível medir armazenamento, transferências “em bytes” É possível medir processamento em tempo de CPU (mais sobre isso depois...)

Por que cloud computing? Se fala muito nisso, é uma moda? Vai passar? O que alguém poderia ganhar com isso? Você não se preocupa em montar a infraestrutura Você não se preocupa em manter a infraestrutura Você não se preocupa em dimensionar a infraestrutura

Por que cloud computing? Se fala muito nisso, é uma moda? Vai passar? Por que é útil! Reduz custo! Cobrança mais justa; maior confiabilidade; Você tem um gerador elétrico próprio? O que alguém poderia ganhar com isso? Você não se preocupa em montar a infraestrutura Comprar equipamentos, esperar chegarem, instalá-los Você não se preocupa em manter a infraestrutura Quando alguma coisa quebra, quando o técnico vem? Quanto tempo dura? Quanto custa? Você não se preocupa em dimensionar a infraestrutura Superdimensionado? Subdimensionado? Não seria justo falar de infraestrutura como um item só!

Modelos de implantação Participantes: consumidores, provedores e clientes Consumidores: compram recursos computacionais Provedores: vendem recursos Clientes: usam serviços dos consumidores (podem ser eles mesmos os consumidores finais) Implantação física no provedor Nuvem privada Nuvem comunitária Nuvem pública Nuvem híbrida

Modelos de implantação Participantes: consumidores, provedores e clientes Implantação física no provedor Nuvem privada Todos os consumidores estão vinculados à mesma organização Uma empresa grande pode lucrar com a provisão de um serviço de nuvem Nuvem comunitária Um conjunto de organizações compartilham a nuvem Nuvem pública Consumidores não tem vínculos com os provedores Qualquer um pode se tornar um usuário Nuvem híbrida Combina caraterísticas da nuvem pública com características da nuvem privada

Modelos de implantação Fonte:

Modelos de implantação (2) Características comuns Dependem do bom funcionamento da rede Usuários têm pouco controle da localização exata do recurso As cargas são balanceadas de forma transparente Todos os usuários estão sujeitos ao problemas de compartilhamento de máquinas Perigo de erros de segurança no servidor Segurança: controle e visibilidade Quem pode acessar o quê? Recursos são remotos, proteção precisa usar tecnologias de rede Redes virtuais privadas (Virtual Private Network – VPN) Firewall

Problemas com a nuvem (2013) Dropbox 10/01 – 16 h: usa a Amazon mas a culpa não teria sido dela 30/05 – 1,5 h: sem explicação Facebook 28/01 – 3 h: Aparentemente um problema de DNS 18/05 – 1 h: sem justificativa Bing, 02/02 – 2 h: manutenção programada teria dado errado Microsoft Azure Storage, 22/02 – +12 horas: certificado expirado Google drive 18/03 – 17 h: problemas no software controle de rede (balanceamento) 10/07 – 1 h: (vários serviços) sem explicação AWS 25/08 – 1h: problema em um dispositivo de rede 13/09 – 2h: problemas de rede

Modelos de serviço Até agora consideramos que a cloud oferece “recursos” O que podem ser estes recursos? Infraestrutura: máquinas, discos e ligações com a Internet (virtuais) Processamento, armazenamento, comunicação Infraestrutura como um serviço: IaaS (Infrastructure as a Service) Plataformas: ambientes que rodam aplicações Java, Go, MapReduce (ou até Matlab, R) Plataforma como um serviço: PaaS (Platform as a Service) Software: um sistema pronto para usar (primeiro modelo!) Google Docs, Webmail Sofware como um Serviço: SaaS (Software as a Service)

Responsabilidades Fonte:

IaaS – Infraestructure as a Service O consumidor acessa máquinas virtuais (VM) é disponibilizadas No caso de VMs Linux: programas podem ser instalados via linha de comando remota (SSH) No caso de Windows: pode ser usada uma conexão de desktop remoto (RDP) Componentes (no provedor) Gerenciador de nuvem (portal para o consumidor) Gerenciador de cluster (lida com pedidos de alocação) Supervisor (gerencia as VMs em um servidor físico)

Exemplo – Repassando o risco/custo Fonte: M. Armbrust, A. Fox, R. Griffith et. al. Above the Clouds: A Berkeley View of Cloud Computing. Relatório técnico. Fevereiro, Eixo vertical: recursos Eixo horizontal: tempo

IaaS (Infrastucture as a Service) Infraestrutura como um serviço Máquinas (virtuais) alugadas na hora (ou até no minuto) Seu sistema operacional, acesso remoto total, configure como queira Principais provedores Amazon Web Services (AWS) Microsoft Azure RackSpace Exemplo de custo AWS: 8 CPUs, 32 GB de RAM, disco sob-demanda  US$ (US$ no mercado “oportunista” e US$ 0,277 se for hora fechada) Azure: 8 CPUs, 14 GB, 240 GB de disco  US$ 0,376 (US$ 1 se for com 56 GB de RAM)

PaaS O usuário cria aplicações online ou faz o upload da sua aplicação Não se preocupa com detalhes da plataforma Não se preocupa com detalhes de execução (VMs, escalabilidade) Componentes Consumidor recebe um ambiente para o desenvolvimento e gerência da aplicação e um ambiente de execução As vezes, tudo funciona via Web (nada a ser instalado pelo desenvolvedor ou pelo cliente) Mas um problema é que isso pode significar dificuldade de migração (sem portabilidade) Administração centralizada pelo consumidor

PaaS – Plataforma as a Service Plataforma como um serviço Ambientes de execução já configurados Não é preciso lidar com a instalação e configuração das máquinas Exemplos para processamento de dados ElasticMapReduce e Kinesis (AWS) HDInsight (Microsoft) Managed Cloud BigData (RackSpace) Custos semelhantes ao da infraestrutura utilizada, porém menos controle IDC estima que até 2020, 40% da processamento de Big Data será em nuvens públicas

Usando o potencial da nuvem

Rodando aplicações na nuvem Você tem uma aplicação rodando no seu laptop... O que você precisa para usar a nuvem?

Rodando aplicações na nuvem Você tem uma aplicação rodando em seu laptop O que você precisa? Identificar uma imagem (de SO) que seja compatível com sua aplicação (ou cria-la) Alugar uma VM que caiba toda a aplicação, passando a imagem que você escoheu Transferir sua aplicação e dos dados

Vantagens Se sua máquina ficar pequena para a aplicação, só precisa de um reboot Em períodos que você não precisa da aplicação, você pode pausá-la e depois continua-la Fazer backup é tão simples quanto fazer um snapshot de sua máquina virtual Snapshot = cópia do disco, armazenada separadamente na nuvem (normalmente replicado), que pode ser usado para disparar outras máquinas

O que pode ser feito de diferente, melhor?

Antes de continuar... Componentes básicos da cloud... Instâncias: VMs com armazenamento local, não persistente Armazenamento de bloco: discos persistentes que podem ser “montados” por uma VM, podem ser depois desmontados e montados em outra Armazenamento de objeto: armazenamento de blocos de dados que não são modificados (inseridos, removidos, sobrescritos) Redes: controlam quem fala com quem, incluindo redes privadas, VPNs, load-balancers

O que pode ser feito de diferente? Modelo tradicional Aplicações têm alta disponibilidade (talvez 99.9%, 8h46 min/ano) Hardware precisa ter altíssima disponibilidade ($$$$, RAID, fontes redundantes, switches e placas redundantes,...) Máquinas menores ou maiores (scale up), bem configuradas Modelo “cloud/gado/rebanho” Infraestrutura barata (“shit happens”) Aplicações com alta disponibilidade Muitas máquinas (scale out) Tanto faz usar 1 máquina por 10h ou 10 máquinas por 1h

Outro exemplo interessante: oportunismo Uma VM muito grande, com 36 processadores e 244 GB de RAM, custa R$ 25/hora O mercado de leilão (spot): a maior parte do tempo, desde que sem garantias, você consegue ela por R$ 2,50/hora Mas você pode perder a qualquer momento A aplicação de processamento tem que gerenciar as perdas Mais barato que a energia que você gastaria se tivesse uma máquina física de graça

O que vem a seguir? Computação na nuvem na prática OpenStack – middleware para nuvens privadas Criando e acessando VMs Criaremos contas para vocês Passamos tutoriais de como usar os serviços Depois, vocês exercitam Como criar e configurar uma VM (Linux) Como usar o armazenamento de bloco Como usar o armazenamento de objeto Como fazer uma análise estilo big data, mas com poucos dados

Processando Big Data

Como dividir o processamento de dados? 3 formas básicas… Dividir os itens a serem processados Dividir o trabalho de processamento de um item Também pode usar um estilo “linha de produção” (algo intermediário)

Decomposição do domínio (dos dados) Baseado em: Intel Software College Introduction to Parallel Programming with Java

Decomposição da tarefa Baseado em: Intel Software College Introduction to Parallel Programming with Java

Linha de produção (pipeline) Baseado em: Intel Software College Introduction to Parallel Programming with Java

Hadoop É uma ferramenta de processamento de lote Você escreve um programa qualquer no modelo de programação Entrega o programa e os dados E ela executa o programa para você O modelo de programação é o MapReduce Restringe a organização dos seus programas Qualquer algoritmo pode ser implementado nele Mas alguns seriam muito ineficientes, ou seja... Na prática, restringe o tipo de algoritmo Mas graças a isso consegue cuidar dos bastidores por você Se encaixa bem com o modelo de decomposição dos dados e de linha de produção

MapReduce (MR) O que o usuário faz? Especifica seleção/filtragem/transformação Especifica a agregação O que a ferramenta faz? Cria trabalhadores e instanciá-los remotamente Particiona e distribui a entrada Comunica dados intermediários, busca resultados Monitora máquinas e lida com falhas

Modelo de programação Map(chave, valor)  (chave’, valor’) Recebe uma chave de entrada e um valor Produz um ou mais pares Bom para: desagregar, filtrar, transformar, converter Reduce(chave, lista de valores)  (chave, valor’) Recebe uma chave de entrada e uma lista de valores Produz um (ou nenhum) par Chave é frequentemente a mesma e o valor é uma agregação de todos os valores da lista Bom para: agregar resultados parciais

Exemplo Contar palavras em um grande conjunto de dados Por que? Porque é simples Porque é a base para muitas outras operações Correção ortográfica usa palavras e termos frequentes Otimização para queries frequentes, tradução Identificação de padrões, predição Escalabilidade e eficiência aparente podem ter uma relação estranha…

Contando palavras – Pseudocódigo map(chave k, valor v) { // v’ é um “tokenizer”, por exemplo, criado a partir de v foreach p in v’: emit(p, 1); } reduce(chave k, valor [] lista) { int sum; foreach v in lista: sum += v; emit(k, sum); }

Exemplo de execução Vamos considerar 3 trabalhadores (workers) Cada trabalhador recebe um arquivo de entrada Arquivo 1: isto é um teste Arquivo 2: testando o hadoop Arquivo 3: testando com um teste

Exemplo de execução Vamos considerar 3 trabalhadores (workers) Cada trabalhador recebe um arquivo de entrada Arquivo 1: isto é um teste Arquivo 2: testando o hadoop Arquivo 3: testando com um teste

Saída do Map Worker 1: (isto 1), (é 1), (um 1), (teste 1). Worker 2: (testando 1), (hadoop 1). Worker 3: (testando 1), (com 1), (um 1), (teste 1).

Entrada do Reduce Reduce 1: (isto,[1]) Reduce 2: (é, [1]) Reduce 3: (testando, [1,1]) Reduce 4: (um, [1, 1]) Reduce 5: (Hadoop, [1]) Reduce 6: (com, [1]) Reduce 7: (teste, [1,1])

Saída do Reduce Reduce 1: – (isto 1) Reduce 2: – (é 1) Reduce 3: – (testando 2) Reduce 4: – (um 2) Reduce 5: – (Hadoop 1) Reduce 6: – (com 1) Reduce 7: – (teste 2)

Escalabilidade e eficência do código podem ter uma relação estranha: contar palavras assim parece ineficiente, mas escala.

Depois... Hadoop HDFS MapReduce Lembra daquele slide sobre paralelização? Outros... (Pig, Hive, Spark) Sahara Spark