Programação em Sistemas Distribuídos MEI-MI-MSI 2015/16. MapReduce: Hadoop. Prof. António Casimiro. MapReduce

Documentos relacionados
Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Hadoop - HDFS. Universidade Federal de Goiás Ciência da Computação

Weather Search System

Aprenda a instalar a plataforma de monitorização Cacti

Arquiteturas Java Pragmá1cas para usar Big Data na Nuvem. Fabiane Bizinella Nardon Fernando Babadopulos

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS

Título da Apresentação

(HDFS) Usando o. hadoop_

Estratégia para dentificação dos fatores de maior impacto de aplicações Mapreduce

Simulado de Linguagem de Programação Java

FORMAÇÃO WORDPRESS. Desenvolvimento de sites com a plataforma Wordpress. Abel Soares abelbarbosasoares@gmail.com

Flávia Rodrigues. Silves, 26 de Abril de 2010

Desenvolvimento de Software no Contexto Big Data

BIG DATA: UTILIZANDO A INTERNET PARA TOMADA DE DECISÕES

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

Lab 2 MapReduce e o Console Web

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

T.I. para o DealerSuite: Servidores Versão: 1.1

Configuração para Uso do Tablet no GigaChef e Outros Dispositivos

Redes de Computadores

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Arquitecturas de Software Enunciado de Projecto

Descubra as novas funcionalidades com Office 365 My I-365, uma nova forma de colaborar Ipsos

UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH)

Estrutura de Diretórios Linux. Rodrigo Gentini

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Criação de uma aplicação Web ASP.NET MVC 4

Fundamentos de Programação. Diagrama de blocos

Unidade 1: O Computador

Lista de Exercícios 1

PROCEDIMENTO INSTALAÇÃO SINAI ALUGUEL

Configurando uma aplicação Struts

Microprocessadores. Memórias

Exercício de Estrutura de dados. Java Fila

Manual SOFIA (Software Inteligente ARPEN-SP) versão 0.1

Programação por Objectos

2 Segmentação de imagens e Componentes conexas

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Informática I. Aula Aula 19-20/06/06 1

Current Contents Connect

OI CLOUD SEJA BEM-VINDO!

SISTEMAS DISTRIBUÍDOS

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Introdução ao. Script. Baltazar Tavares (Psycho Mantys)

Conceitos básicos sobre computadores

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Joomla na otimização de sites para buscadores de Internet SEO. Marcio Junior Vieira

MANUAL DE INSTALAÇÃO DO MILLENNIUM BASIC

Tecnologia da Informação

Biblioteca Escolar da EB2 Dr. Manuel de Oliveira Perpétua. Como pesquisar na internet

Índice. Manual De instalação ProjectNet Manager

Introdução a conceitos e a prática de programação

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

POO Programação Orientada a Objetos

aplicação arquivo Condições Gerais de Utilização

Hoje em dia é muito comum utilizar uma API de logging de mensagens como o Log4j para indicar os comportamentos de uma aplicação.

Framework Hadoop em Plataformas de Cloud e Cluster Computing

Computação Paralela. ParAspJ Aplicações Paralelas em Java (parte 1) João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Ferramenta Nessus e suas funcionalidades

Módulo de Aprendizagem I

Método de ordenação - objetivos:

NoSQL como suporte à análise de dados nãonormalizados. volume

MapReduce - Conceitos e Aplicações

FACULDADE MULTIVIX CURSO DE ENGENHARIA DE PRODUÇÃO 2º PERÍODO MARIANA DE OLIVEIRA BERGAMIN MONIQUE MATIELLO GOMES THANIELE ALMEIDA ALVES

Disciplina: Unidade III: Prof.: Período:

Laboratório de Redes de Computadores INSTALANDO SERVIDOR APACHE NOS CENTOS 6.5

Os salários de 15 áreas de TI nas cinco regiões do Brasil

Introdução à Programação de Computadores Parte I

JAVA. Professor: Bruno Toledo

Introdução à orientação a objetos

testo Saveris Web Access Software Manual de instruções

Arquivos Indexados por Chaves Secundárias. Vanessa Braganholo

Driver Next Versão 1.0 de Português

Sistemas Distribuídos

Cassandra: Requisições de clientes e integração com Hadoop. Jorge Faria Fernandes Mycke Richard Guntijo

Passos para a instalação

Livro de Receitas. Modelação Engenharia de Software Sistemas Distribuídos Versão 1.1. Framework de aplicações com Web Services

Inteligência Artificial

Manual FPO 22-Jan-2007 Actualizado em 03-Fev-2015

Rede VPN UFBA Procedimento para configuração

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Diagrama de Componentes e Implantação

Reader e Writer para streams de caracteres (texto).

Google File System. Danilo Silva Marshall Érika R. C. de Almeida

Modelagem de Sistemas Web. Metodologias para o desenvolvimento de sistemas web

5a. Aula - XML

Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Manual de instalação do Microsoft SQL Server 2008 R2 Express no Windows 10

Instituto de Pesquisas Energéticas e Nucleares, IPEN CNEN/SP. Biblioteca Terezine Arantes Ferraz

Banco de Dados I. Prof. Edson Thizon

Criando scanner para dectar BackupExec vulneráveis ao exploit do Metasploit. Inj3cti0n P4ck3t

Administração Portal Controle Público

Arquitetura de Aplicações J2EE. Jorge Fernandes Outubro de 2003

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Transcrição:

Programação em Sistemas Distribuídos MEI-MI-MSI 2015/16 MapReduce: Hadoop Prof. António Casimiro MapReduce MapReduce.2

Tópicos Analise e Armazenamento de Grandes Quantidades de Dados Google pioneira Processamento: modelo Map Reduce Armazenamento: GFS (Google File System) Apache Hadoop lançou projecto similar, open source MapReduce.3 Grandes volumes de dados Estamos na era dos grandes volumes de dados! Dos sistemas peta-escala! Bolsa de valores de Nova York gera um terabyte de dados por dia Facebook armazena mais de 10 milhares de milhões de fotos (mais de um petabyte de dados) O maior acelerador de particulas do CERN vai produzir aproximadamente 15 petabytes de dados por ano Como armazenar e analisar esses dados? 1 petabyte = 10 15 1.000.000.000.000.000 Byte = 1 petabyte =? 1 125 899 906 842 624 Byte = 1 024 TB = 1 048 576 GB MapReduce.4

O Google Responde! Eles tiveram que resolver esse problema: Como indexar a web? Como classificar as páginas (page ranking)? Infraestrutura do Google: Muitas máquinas de baixo custo Middleware que dá fiabilidade e proporciona recuperação rápida de falhas Tendo em conta o problema e a infraestrutura, o Google definiu um modelo de programação chamado MapReduce que faz uso do seu GFS (Google File System) Estas duas tecnologias foram publicadas em 2003-04 MapReduce.5 MapReduce e GFS MapReduce Próprio para tarefas altamente paralelizáveis Tarefas são divididas em Maps e Reduces Estas tarefas são distribuídas por um nó mestre, num cluster de máquinas GFS Sistema de ficheiros distribuído Voltado fundamentalmente para o armazenamento de dados single-write/multiple-reads (e.g., logs, arquivos de páginas web, etc ), e append-only MapReduce.6

MapReduce Input data Map tasks (GFS) map 1 Reduce tasks Output (GFS) split 1 split 2 split n map 2 map 3 reduce 1 reduce m output 1 output m map n Each task is executed in any of the servers MapReduce.7 MapReduce Dados de entrada são lidos do GFS (ou HDFS, Hadoop FS) map (in_key, in_value) list(out_key, intermediate_value) Recebe pares chave-valor (key-value) (e.g., linhas de um ficheiro de log) Produz um conjunto de pares (chave-valor) intermédios reduce (out_key, list(intermediate_value)) list(out_value) Recebe um conjunto de pares chave-lista de valores Reduz esses valores a um único valor para uma chave Produz um conjunto de saídas chave-valor Dados de saída são armazenados no GFS (ou HDFS, Hadoop FS) MapReduce.8

Google MapReduce em Ação MapReduce.9 Apache Hadoop Concretização do MapReduce em Java Inicialmente concebido pelo Yahoo! como uma concretização livre do middleware do Google: Modelo de programação MapReduce GFS (Google File System) Em 2008 o projecto Hadoop tornou-se um projecto independente, da Apache Software Foundation Curiosidades: Instalado e a correr em clusters de 4000 nós no Yahoo! Capaz de ordenar um terabyte de dados em 62 segundos Yahoo! e Google tem mais de 500 aplicações MapReduce concretizadas MapReduce.10

Como é que o Hadoop MapReduce Funciona? COMMAND & CTL CENTRE or MASTER LIEUTENANTS or SLAVES WORKERS E se houver falhas: Na Task? Recria-se a tarefa No TaskTracker? Reafectam-se as tarefas a outros TaskTrackers No JobTracker? Pára tudo MapReduce.11 HDFS: Hadoop File System O MR do Hadoop (HMR) só é eficiente porque lê e escreve dados de um sistema de ficheiros distribuído, chamado HDFS Suporta as seguintes operações sobre ficheiros: create delete append read É portanto um SF append-only Os blocos têm como dimensão padrão 64M (!!!) Só para comparar, os blocos do NFS tem 4K Cada bloco é tipicamente replicado em 3 máquinas MapReduce.12

HDFS: Hadoop File System Há dois tipos de servidores num cluster HDFS Namenode: armazena os metadados dos ficheiros (em memória) Datanode: armazena os blocos dos ficheiros get f2 2,3,5 Namenode f1,1,2,3,6 f2,2,3,5 f3,1,4 Data node Data node Data node Data node Data node Data node 1 2 3 4 5 6 MapReduce.13 Leitura no HDFS MapReduce.14

Escrita no HDFS MapReduce.15 Como o Namenode escolhe onde colocar as cópias dos blocos? Caso das três cópias (valor por omissão) Primeira cópia na máquina em que escreve Segunda cópia numa máquina em outro rack aleatório Terceira cópia numa outra máquina do rack da segunda cópia MapReduce.16

Exemplo: Contagem de Palavras Considere o problema de contar quantas vezes cada palavra aparece num conjunto de ficheiros Podemos fazer isso facilmente com scripts bash ou um programa sequencial em Java E se tivermos terabytes de ficheiros de dados? O programa sequencial vai ficar dias a correr Podemos fazer uma versão distribuída e paralela, mas a programação está longe de ser trivial. MapReduce.17 Contagem de Palavras com HMR Entrada: ficheiros com multiplas linhas como Lisboa London Madrid Lisboa Lisboa Lisboa Paris Paris Madrid Lisboa map (in_key, in_value)->list(out_key, intermediate_value) Recebe pares chave-valor (key-value) Criação de Tarefas Map, atribuíndo várias linhas a cada (2 tarefas no ex., uma a cada linha) e exec. da tarefa (contagem) Lisboa, 2 Lisboa, 3 London, 1 Paris, 2 Madrid, 1 Madrid, 1 Recebe pares chave-valor (key-value) Produz um conjunto de pares (chave-valor) intermédios Mistura das saídas (Merge) <Lisboa,{2,3>,<London,{1>,<Madrid,{1,1>,<Paris,{2> Tarefas Reduce <Lisboa,5>,<London,1>,<Madrid,2>,<Paris,2> reduce (out_key, list(intermediate_value))-> list(out_value) Recebe um conjunto de pares chave-lista de valores Reduz esses valores a um único valor para uma chave Produz um conjunto de saídas chave-valor MapReduce.18

Contagem de Palavras com HMR Madrid Lisbon Lisbon,1 Madrid,1 Lisbon,1 Lisbon,1 London,1 Lisbon, <1, 1> London, <1> Lisbon, 2 London, 1 Lisbon Paris Lisbon,1 Paris,1 Madrid,1 Paris,1 Paris,1 Madrid, <1> Paris, <1, 1> Madrid, 1 Paris, 2 Paris London London,1 Paris,1 MapReduce.19 Bibliografia Livro: Tom White. Hadoop: The Definitive Guide (2nd Edition). O Reilly 2010. Artigos: J. Dean and S. Gehemawat. MapReduce: Simplified Data Processing on Large Clusters. Communications of ACM vol. 51, num. 1. 2008. Versão extendida com o mesmo nome (e o dobro de páginas) publicada na conferência OSDI 04. Página web: http://hadoop.apache.org/mapreduce/ http://hadoop.apache.org/hdfs/ Há também muita documentação nessas páginas! MapReduce.20

Design elements As is, culled from several sources on manuals and the Internet, with aim of giving design and programming examples Tópicos Modos de Operação do Hadoop Aplicações MapReduce com o Hadoop Exemplo de Aplicação (Word Counter) Instalação do Hadoop MapReduce.22

Modos de Operação do Apache Hadoop Local (ou Standalone) Não é preciso definir nada mais Pseudo-distribuído http://hadoop.apache.org/common/docs/r0.20.2/quickstart.html#ps eudodistributed Criar ficheiro de configuração (usar config <ficheiro>) Instalar cliente e servidor ssh e criar chaves (opcional) Formatar hdfs (hadoop namenode format) Ligar serviços (start-dfs.sh e start-mapred.sh) Distribuído (em um cluster - ver web) http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html MapReduce.23 Aplicações MapReduce com Hadoop Escrever Map Implementar org.apache.hadoop.mapred.mapper Implementar método map Estender org.apache.hadoop.mapred.mapreducebase Escrever Reduce Implementar org.apache.hadoop.mapred.reducer Implementar método reduce Estender org.apache.hadoop.mapred.mapreducebase Escrever Job Implementar método main Escrever testes de Unidade É importante só executar aquilo que tens certeza que está bem, pois é dificil fazer o debug distribuído Configurar e executar a aplicação localmente Possivelmente com um input menor MapReduce.24

Aplicações MapReduce com Hadoop Alguns passos opcionais Formatadores de input e output personalizados Escrever particioner e combiner Configurar e executar a aplicação num cluster Outras considerações A API que usamos é deprecated, e existe uma API mais nova (considerada instável). Estas novas classes podem ser encontradas em org.apache.hadoop.mapreduce Existem plugins para o Eclipse e NetBeans que facilitam muito o desenvolvimento em Hadoop MapReduce.25 Aplicação Exemplo: Word Counter Criar uma directoria/package wc com os ficheiros wc/wcmapper.java wc/wcreducer.java wc/wcjob.java Executar javac -classpath $HADOOP_INSTALL/hadoop-0.20.2- core.jar wc/*.java jar -cvf wc.jar wc/*.class export HADOOP_CLASSPATH=wc.jar hadoop wc.wcjob <inputdir> <outputdir> <inputdir>: directoria com os ficheiros de entrada <outputdir>: directoria a ser criada com os ficheiros de saída MapReduce.26

WCMapper.java /* imports */ public class WCMapper extends MapReduceBase implements Mapper<LongWritable,Text,Text,IntWritable> { @Override public void map(longwritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { StringTokenizer tok = new StringTokenizer(value.toString(),",;.:"); IntWritable one = new IntWritable(1); while(tok.hasmoretokens()) { output.collect(new Text(tok.nextToken()), one); MapReduce.27 WCReducer.java /* imports */ public class WCReducer extends MapReduceBase implements Reducer<Text,IntWritable,Text,LongWritable> { @Override public void reduce(text key, Iterator<IntWritable> value, OutputCollector<Text, LongWritable> output, Reporter reporter) throws IOException { long wordcounter = 0; while(value.hasnext()) { wordcounter += value.next().get(); output.collect(key, new LongWritable(wordCounter)); MapReduce.28

WCJob.java /* imports */ public class WCJob { public static void main(string[] args) { JobConf conf = new JobConf(WCJob.class); conf.setjobname("countwords"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(intwritable.class); conf.setmapperclass(wcmapper.class); conf.setreducerclass(wcreducer.class); conf.setinputformat(textinputformat.class); conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); try { JobClient.runJob(conf); catch (IOException e) { e.printstacktrace(); MapReduce.29 Instalação do Hadoop Sacar hadoop na página da Apache http://hadoop.apache.org/common/releases.html Versão estável (11/2010): 0.20.2 Descompactar em uma directoria onde haja 130 MB de espaço disponível (ex., área de grupos) Editar ~/.bashrc export HADOOP_INSTALL=< /hadoop-0.20.2> export PATH=$PATH:$HADOOP_INSTALL/bin Iniciar um novo terminal e executar hadoop version MapReduce.30