GUILHERME JOSÉ HENRIQUE CONSULTAS POR SIMILARIDADE EM UM AMBIENTE DISTRIBUÍDO

Tamanho: px
Começar a partir da página:

Download "GUILHERME JOSÉ HENRIQUE CONSULTAS POR SIMILARIDADE EM UM AMBIENTE DISTRIBUÍDO"

Transcrição

1 GUILHERME JOSÉ HENRIQUE CONSULTAS POR SIMILARIDADE EM UM AMBIENTE DISTRIBUÍDO LONDRINA PR 2013

2

3 GUILHERME JOSÉ HENRIQUE CONSULTAS POR SIMILARIDADE EM UM AMBIENTE DISTRIBUÍDO Trabalho de Conclusão de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Dr. Daniel dos Santos Kaster LONDRINA PR 2013

4 Guilherme José Henrique Consultas por similaridade em um ambiente distribuído/ Guilherme José Henrique. Londrina PR, p. : il. (algumas col6or.) ; 30 cm. Orientador: Prof. Dr. Daniel dos Santos Kaster Universidade Estadual de Londrina, Palavra-chave1. 2. Palavra-chave2. I. Orientador. II. Universidade xxx. III. Faculdade de xxx. IV. Título CDU 02:141:005.7

5 GUILHERME JOSÉ HENRIQUE CONSULTAS POR SIMILARIDADE EM UM AMBIENTE DISTRIBUÍDO Trabalho de Conclusão de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em Ciência da Computação. BANCA EXAMINADORA Prof. Dr. Daniel dos Santos Kaster Universidade Estadual de Londrina Orientador Prof. Dr. Segundo Membro da Banca Universidade/Instituição do Segundo Membro da Banca Prof. Msc. Terceiro Membro da Banca Universidade/Instituição do Terceiro Membro da Banca Londrina PR, 24 de novembrode 2013 LONDRINA PR 2013

6

7 AGRADECIMENTOS Á minha família pela formação do meu caráter, pelo suporte nos momentos mais tortuosos da minha vida, por acreditarem no meu trabalho e por todos esses anos de companheirismo. Ao Daniel Kaster, pela extaordinária orientação, por sua imensa paciência, pelas excelementes correções, pelos sábios conselhos e, principalmente, pela nossa amizade. À minha namorada Patrícia, pela ajuda nas horas mais difíceis, pelas nossas conversas, que sempre foram minha válvula de escape, e pelo amor oferecido a mim desde o início da graduação. Graças à você, esses anos com foram muito mais felizes. Aos meus amigos do QSF, Felipe, Gustavo, Jonas, Sean e Vinícius, pelas risadas e pela amizade.

8

9 HENRIQUE, G. J.. Consultas por similaridade em um ambiente distribuído. 72 p. Trabalho de Conclusão de Curso (Graduação). Bacharelado em Ciência da Computação Universidade Estadual de Londrina, RESUMO A quantidade de dados complexos (vídeos, imagens, informações geo-referenciadas) cresce a cada dia. Para responder consultas por similaridades nesses conjuntos de dados em um tempo reduzido, foram elaborados os Métodos de Acesso Métricos (MAMs). Esses MAMs, como a Slim-Tree, são materializados através de estruturas de índice hierárquicas chamadas de árvores métricas. Nessas árvores, os acessos a disco e cálculos de distância são os grandes gargalos de tais consultas. E uma propriedade em comum dessas computações é que eles podem ser realizados concorrentemente. Então, com computadores mais baratos e processadores com cada vez mais núcleos, as consultas por similaridade nessas árvores utilizando um sistema distribuído teria grande potencial. Com isso, este trabalho apresenta uma nova aplicação distribuída que realiza consultas por similaridade em uma Slim-Tree. Este programa é baseada no modelo mestre-escravo e faz uso do Hadoop Distributed FileSystem (HDFS), responsável por gerenciar o armazenamento dos nós e executar as operações sobre a árvore, que se encontra replicada entre as máquinas de um cluster. Os resultados experimentais provaram que esse novo modelo distribuído obteve bons speedups, forneceu um balanceamento de carga sem desperdícios e conseguiu escalar com a adição de novas máquinas. Palavras-chave: slim-tree. consultas por similaridade. hdfs., mam.

10

11 HENRIQUE, G. J.. Similarity queries in a distributed environment. 72 p. Final Project (Undergraduation). Bachelor of Science in Computer Science State University of Londrina, ABSTRACT The amount of complex data (videos, images, geo-referenced information) grows every day. To answer query similarity in these data sets in a short time, it arose the Metric Access Methods (MAMs). These MAMs, such as Slim -Tree, are materialized through index hierarchical structure called metric trees. In these trees, the disk accesses and distance calculations are the major bottlenecks of such queries. And a common property of these computations is that they can be performed concurrently. Then, with cheaper computers and processors with ever more cores, similarity queries on these trees using a distributed system would have great potential. Therefore, this work presents a new distributed application that performs similarity queries in a Slim-Tree. This program is based on the master-slave model and makes use of the Hadoop Distributed Filesystem (HDFS), which is responsible for managing the storage nodes and perform the operations on the tree, that is replicated between the machines of a cluster. The experimental results proved that this new distributed model achieved good speedups, provided a load balancing without wastes and managed to scale with the addition of new machines. Keywords: slim-tree. similarity query. hdfs., mam.

12

13 LISTA DE ILUSTRAÇÕES Figura 1 (a) simboliza a consulta por abrangência e (b) retrata a consulta aos 6-vizinhos mais próximos Figura 2 Exemplo de uma Slim-tree com 3 níveis. Os círculos brancos são os nós folhas e os cinzas são os nós internos. Os elementos representantes estão vinculados com a cor preta e o restante com a cor cinza Figura 3 (a) Um sistema de memória compartilhado e (b) um sistema de memória distribuído [1] Figura 4 Sistema de computação em cluster [2] Figura 5 Um exemplo de um arquivo único com três blocos e a sua replicação entre as máquinas do cluster HDFS [3] Figura 6 Fluxo de escrita de um arquivo no HDFS Figura 7 Passos para a leitura de um arquivo no HDFS Figura 8 A Figura retrata a desserialização de um nó em um arquivo de índice com quatro páginas (nós). As setas indicam o ponteiro do arquivo antes e depois do acesso. Esse acesso randômico não é apropriado para arquivos armazenados no HDFS Figura 9 Análise do tamanho de entradas do nó pelo tamanho do bloco. O nó índice tende a acomodar menos entradas devido à sua entrada possuir atributos adicionais, como o raio de cobertura, o ponteiro e o número de elementos. O objeto armazenado nos folhas é um long com 8 bytes.. 37 Figura 10 Disposição dos blocos da árvore entre as máquinas. Note que o acesso é randômico e cada bloco é replicados entre três máquinas de forma equilibrada Figura 11 Estrutura do cluster e a relação entre slim-master - namenode e slimworker - datanode. O slim-master se comunica com todos os slimworkers e nenhum slim-worker se comunica entre si. Repare como os nós estão replicados entre as máquinas e o slim-master envia as requisições do processamento dos nós para a máquina que armazena tal nó Figura 12 Representação das comunicações entre os componentes da Slim-Tree distribuída Figura 13 Diagrama de classe dospagemanagers distintos do sistema Figura 14 Análises de acessos à disco e ao cache. (a) Acessos à disco para escrita dos nós. (b) Acertos do cache. (c) Faltas do cache

14 Figura 15 Resultados dos tempo para contrução dos índices. a) Tempo para construção local do índice. b) Média do tempo para a escrita de um nó do disco. c) Média do tempo para leitura de um nó do disco. d) Tempo total da inserção dos blocos (arquivos) no HDFS Figura 16 Cálculos de distância durante a construção dos índices Figura 17 Consultas por abrangência com 500 mil elementos. a) Tamanho de bloco de 1 MB. b) Tamanho de bloco de 2MB. c) Tamanho de bloco de 4MB Figura 18 Consultas por abrangência com 1 milhão de elementos. a) Tamanho de bloco de 1 MB. b) Tamanho de bloco de 2MB. c) Tamanho de bloco de 4MB Figura 19 Consultas por abrangência com 2 milhões de elementos. a) Tamanho de bloco de 1 MB. b) Tamanho de bloco de 2MB. c) Tamanho de bloco de 4MB Figura 20 Tempo das 10 primeiras consultas utilizando o algoritmo sequencial. a) Árvore de 500 mil elementos e 1 MB. b) Árvore de 1 milhão de elementos e 1MB Figura 21 Speedup (T S /T P ) das consultas por abrangência. a) Árvore de 500 mil elementos. b) Árvore de 1 milhão de elementos c) Árvore de 2 milhões de elementos

15 SUMÁRIO 1 Introdução Métodos de Acessos Métricos e Consultas por Similaridade Consultas por Similaridade e Espaços métricos Métodos de Acesso métricos Estrutura da Slim-tree Consultas por similaridade na Slim-tree Paralelismo e Sistemas Distribuídos Computação Paralela Taxonomia de Flynn Organização de Sistemas MIMD Métricas Tempo de Execução Speedup Eficiência Características dos Sistemas Distribuídos Motivação Desafios Classificação Falácias da Computação Distribuída Teorema CAP Sistemas de arquivos distribuídos HDFS Escrita de um arquivo no HDFS Leitura de um arquivo no HDFS Trabalhos Relacionados Slim-Tree em um ambiente distribuído Proposta Arquitetura Consultas por Similaridade Implementação Resultados Construção da árvore

16 5.1.1 Acessos a Disco Tempos de Computação Computação de Distâncias Consultas por abrangência Tempos das Consultas Medidas de Paralelismo Conclusão Considerações Finais Principais Contribuições Trabalhos Futuros Referências Apêndices 69 Anexos 71

17 15 1 INTRODUÇÃO Dados complexos, como dados multimídia, informações geo-referenciadas, sequencias de proteínas e dados estatísticos, são cada vez mais utilizados no dos sistemas de computação. A principal técnica para otimizar os acessos a esses tipos dados é por meio dos Métodos de Acesso Métricos Métricos (MAMs), que usam apenas os objetos e as medidas de similaridade entre eles. A M-Tree e a Slim-Tree são estruturas paginadas em árvore e são exemplos dessas estruturas de indexação dinâmicas, ou seja, que não degeneram com a adição de novos elementos depois da estrutura já estar construída. Além disso, consultas por similaridade são empregadas para recuperar os elementos mais próximos entre si. Nesses MAMs, determinadas computações, como os acessos ao disco e os cálculos de distância, demoram mais para serem realizadas. Uma das formas encontradas para amenizar o tempo das consultas sobre os MAMs é efetuar essas computações simultaneamente entre várias máquinas, discos ou processadores. Entretanto, os algoritmos sequenciais não começarão a usar magicamente esses componentes e, por isso, esses programas precisarão ser reescritos se tiverem a intenção de empregar com eficiência as computações concorrentes. Este trabalho apresenta um novo modelo que realiza consultas por similaridade em uma Slim-Tree de modo distribuído explorando a troca de mensagens entre as máquinas de um cluster e o paralelismo de processador. Este modelo faz uso do modelo mestreescravo, no qual o mestre despacha ordens de processamento e gerencia o resultado global e o escravo realiza as computações próprias das consultas. Para replicar os nós da Slim- Tree e facilitar o acesso aos nós no cluster, o sistemas de arquivos distribuídos Hadoop Distributed FileSystem (HDFS) é empregado. Este trabalho apresenta a seguinte organização: O Capítulo 2 apresenta e formaliza os dois tipos de consultas por similaridade mais comuns: a consulta por abrangência e o k-vizinhos mais próximos. Também são apresentados as definições de espaço métrico e exemplos dos principais MAMs. O Capítulo 3 descreve alguns conceitos relacionados ao paralelismo e explicita suas diferentes categorias, apresenta noções de sistemas distribuídos e dá uma visão geral nos sistemas de arquivos distribuídos, principalmente do HDFS. O Capítulo 4 mostra as motivações, estrutura e arquitetura do modelo proposto. O Capítulo 5 exibe os resultados experimentais do modelo distribuído. Testes como

18 16 Capítulo 1. Introdução escalabilidade, diferentes tamanhos de bloco e operações no HDFS são demonstrados. Por fim, o Capítulo 6 traz as principais contribuições e os trabalhos futuros

19 17 2 MÉTODOS DE ACESSOS MÉTRICOS E CON- SULTAS POR SIMILARIDADE 2.1 Consultas por Similaridade e Espaços métricos Uma consulta por abrangência retorna todos os elementos dissimilares de um elemento de consulta até uma certa distância máxima de um objeto de consulta. Formalmente, seja S um domínio de dados, S S um conjunto de elementos, s q S um elemento de consulta, δ uma função de distância sobre elementos de S e ε um limiar de dissimilaridade, uma consulta por é dada por [4]: {s i S δ(s q, s i ) ε} Já as consultas aos k-vizinhos mais próximos retornam os k elementos mais similares da consulta. Formalmente, dado um domínio S, um conjunto de elementos S S, um elemento de consulta s q ε S, uma função de distância δ definida sobre S e um inteiro k 1, o resultado de uma consulta será [4]: K = {s i S s j S K, K = l, δ(s q, s i ) δ(sq, sj)} A Figura 1(a) representa um consulta por abrangência com elemento de consulta s q e raio ξ no plano R 2. Os elementos localizados no interior da região apresentada compõem o resultado da consulta. A Figura 1(b) ilustra uma 5-NNq, com s q S como elemento de consulta. Figura 1 (a) simboliza a consulta por abrangência e (b) retrata a consulta aos 6-vizinhos mais próximos. Já as funções de distância medem a dissimilaridade entre dois objetos e, em seguida, retornam um valor real não negativo e um valor da função de distância igual a zero equivale à total similaridade [4]. As funções de distância mais famosas são da família Minkowski(L p ), entre elas de distância euclidiana(l 2 ) e a distância Manhattan(L 1 ). As

20 18 Capítulo 2. Métodos de Acessos Métricos e Consultas por Similaridade funções da família Minkowski são representados por [5]: ni=1 d(x 1... x 2 )(y 1... y n ) = p x 1 y 1 p Um espaço métrico é formalmente definido como um par S, δ, onde S é um domínio de dados e δ é uma métrica,isto é, uma função δ : S S R que expressa a distância entre elementos de S e que satisfaz as seguintes propriedades, para quaisquer s 1, s 2, s 3 S [4]. identidade: δ(s 1, s 2 ) = 0 simetria: δ(s 1, s 2 ) = δ(s 2, s 1 ) não-negativa: 0 < δ(s 1, s 2 ) < 2.2 Métodos de Acesso métricos Um método de acesso (MA) utiliza algum tipo de estrutura de dados para uma consulta não realizar uma busca sequencial sobre todos os elementos do conjunto de dados [6]. Através de propriedades dos elementos indexados, um MA pode descartar parte desse conjunto, o que economiza acessos a disco. Os MAs mais importantes são as estruturas hierárquicas ou as árvores, como a B-Tree [7], R-Tree [8] e Slim-Tree [9]. Inicialmente esses MAs receberam enfoque para tratamento de dados numéricos e pequenas cadeias de caracteres, ou seja, dados que definem uma ordem total entre eles. Porém, para dados mais complexos, como dados espaciais, foi necessária a criação de novos MAs, que lidam com dados de mais de uma dimensão. Um dos métodos de acesso que tratam esses tipos de dados foram os Métodos de Acessos Espaciais (MAEs), tendo no geoprocessamento sua principal aplicação. Alguns exemplos dessas árvores são a R-tree e a R*-tree [10]. Contudo, essas árvores degradam quando tratam dados de altas dimensionalidades [4]. Para dados com muitas dimensões, foram criados os Métodos de Acessos Métricos (MAMs). Esse tipo de MA requer que os objetos estejam em um espaço métrico e os associa a partir de suas relações de similaridade. Os MAMs selecionam seus elementos e os colocam como representantes dos subconjuntos de dados. A partir disso, a distância de cada elemento inserido com seu representante é calculada e disposta em sua estrutura. Com essas informações, a desigualdade triangular pode ser aplicada, o que permite o descarte de elementos que não estarão no conjunto resposta [4]. Esses MAMs podem ser classificados pela forma que os representantes são escolhidos; como os objetos estão dispostos em relação ao representante; e se é permitido inserir ou remover os objetos sem degenerar a estrutura já criada (estático ou dinâmico). [4]

21 2.2. Métodos de Acesso métricos 19 Vários MAMs estáticos foram criados, como o Vantage Point Tree (vp-tree) [11], Multi-Vantage Point Tree(MVP-tree) [12] e Fixed-Queries Tree (FQ-tree) [13]. Contudo, esses métodos, depois de criados, não podem ser atualizados, pois eles perdem as propriedades de sua estrutura. O primeiro MAM dinâmico criado foi o M-tree, que é uma árvore balanceada com crescimento bottom-up, com dois tipos de nós (internos e folhas) e que permite a inserção de elementos a qualquer momento. A Slim-Tree é uma evolução da M-tree, e entre suas contribuições, está um novo algoritmo de escolha dos representativos, baseado na árvore de cobertura minimal (Minimal Spanning Tree - MST) [4] Estrutura da Slim-tree Na Slim-tree, assim como na B-tree e na M-tree, os elementos são reunidos em um tamanho fixo de acordo com o tamanho da página do disco. Todos os seus elementos são armazenados nas folhas, organizados em uma estrutura de árvore, em que um elemento representante é utilizado como a parte central dos elementos de uma região de cobertura dos elementos de uma subárvore. Esse método de acesso conta com dois tipos de nós, os nós folhas e os nós internos. Os nós folhas tem a disposição: Nó folha [vetor de OId i, d(s i, s r ep ), s i ] em que OIdi é o identificador do elemento si e d(si,srep) é a distância entre o elemento si e seu representativo. A estrutura de um nó interno é a seguinte: Nó interno [vetor de s i, r i, d(s i, s r ep), Ptr(T s i ), #Ent(Ptr(T s i)) ] em que si armazena o elemento representante da subárvore apontada por Ptr(Tsi), ri é o raio de cobertura do nó, d(si,srep) é a distância entre si e o representante do nó e #Ent(Ptr(Tsi)) guarda o número de entradas da subárvore apontada por Ptr(Tsi). [4] A figura 2 retrata a estrutura de uma Slim-Tree. O algoritmo de inserção na Slim-tree tem início no nó raiz e sua estrutura é percorrida até se encontrar um nó folha. O objetivo é que não se aumente o raio de cobertura. Se o novo objeto não estiver dentro no raio de cobertura de nenhum nó interno, é selecionado o nó cuja distância com o novo elemento seja a menor. Se mais de um nó contiver o objeto dentro do seu raio de cobertura, o algoritmo de escolha de subárvore é aplicado [9]. O algoritmo de escolha de subárvore tem grande impacto sobre as características das árvores resultantes. A opção de ocupação miníma (minoccup), em que o nó que tenha o menor número de nós é classificado, gera árvores de menor altura, porém com um maior grau de sobreposição. A opção de distância mínima (mindist), em que o nó eleito é aquele que tiver a menor distância em relação ao novo elemento, gera árvores mais altas com um

22 20 Capítulo 2. Métodos de Acessos Métricos e Consultas por Similaridade Figura 2 Exemplo de uma Slim-tree com 3 níveis. Os círculos brancos são os nós folhas e os cinzas são os nós internos. Os elementos representantes estão vinculados com a cor preta e o restante com a cor cinza. grau de sobreposição menor. Já a opção aleatória (random), em que o nó é escolhido sem nenhum critério, surpreendemente gera árvores tão boas quanto as outras duas [14]. Durante a inserção do novo elemento, existe a chance do nó escolhido já estar com sua capacidade máxima ocupada. Quando isso ocorre, é necessária a criação de um novo nó e a consequente redistribuição dos elementos entre o nó cheio e o recentemente alocado. Dois representativos são escolhidos e inseridos no nó pai. Se o processo de divisão ocorrer na raiz, uma nova raiz é criada e a altura da árvore é incrementada. A Slim-tree conta com três maneiras de se redistribuir os nós, entre elas: Aleatório (random): é o algoritmo mais rápido, pois a escolha dos representativos ocorre ao acaso. Mínimo dos Maiores Raios (minmax): método custoso, em que cada possível par de objetos é candidato a representativo. É escolhido o par de objetos que minimizar o raio de cobertura. Minimal Spanning Tree (MST): A árvore de caminho é construída e é removido a aresta mais longa da árvore. Assim, dois agrupamentos são espalhados entre os nós e o objeto central de cada grupo é eleito como o representativo.

23 2.2. Métodos de Acesso métricos Consultas por similaridade na Slim-tree Os algoritmos de consulta por abrangência e aos k-vizinhos mais próximos podem ser utilizados em todas as árvores métricas e espaciais. A principal propriedade usada para se podar elementos, que não fazem parte do conjunto resposta, é a desigualdade triangular. Na realização do algoritmo da consulta por abrangência, o algoritmo tem início no nó raiz. Se o nó corrente é índice, tenta-se utilizar a desigualdade triangular a partir do representativo dos elementos desse nó e do elemento de consulta. Caso ainda não tenha sido possível podar a subárvore, é calculada a distância entre o elemento de consulta e o elemento iterado para se aplicar a desigualdade triangular. Esse método é utilizado até o algoritmo atingir um nó folha, no qual é verificado se os elementos desse nó estão dentro do raio de consulta. Se estiverem no interior desse limiar, esse elemento é inserido no conjunto resposta. Já na consulta aos k-vizinhos mais próximos, a ordem de visita dos nós na árvore influencia seu desempenho, ao contrário das consultas por abrangência. Além disso, não há um raio de consulta predeterminado. Para sua realização, é utilizada uma fila de prioridade global de ponteiros para as páginas (subárvores), organizada em ordem crescente de distância mínima entre o elemento de consulta e a região coberta por uma subárvore.

24

25 23 3 PARALELISMO E SISTEMAS DISTRIBUÍDOS De 1986 a 2002, o desempenho dos microprocessadores cresceu, em média, 50% ao ano [15]. Entretanto, depois de 2002, o desempenho de um processador único teve um aumento de apenas 20% ao ano. Isso, em 10 anos, significa um aumento por um fator de 6, enquanto a 50% ocorreria um aumento por um fator de 60 [1]. Esse aumento extraordinário de 50% no desempenho de um processador único foi possível graças ao crescimento de transistores dentro dos circuitos integrados. Assim que o tamanho dos transistores diminui, a taxa de transistores por circuito integrado aumenta, causando um acréscimo em sua velocidade. Entretanto, assim que a velocidade dos transistores progride, aumenta-se muito seu consumo de energia. Muita dessa energia é dissipada pelo calor, e, quando um circuito integrado fica muito quente, ele se torna instável e incerto[16]. Então, para se aumentar o desempenho dos circuitos integrados, novas técnicas estão sendo colocadas em práticas. Entre essas práticas, a mais conhecida é a instalação de múltiplos processadores relativamente simples um um único circuito integrado (multicore, ao contrário de se construir processadores mononolíticos cada vez mais rápidos e complexos (single-core). No entanto, para a utilização do modelo multicore, exige-se o projeto e implementação de programas paralelos. Ou seja, os programas seriais, se quiserem aproveitar os multiplos núcleos, precisarão ser reescritos no modelo paralelo [1]. Durante muito tempo, a computação paralela foi utilizada somente para resolver problemas complexos, nas áreas da ciência e da engenharia, por exemplo. Porém, com essa limitação iminente dos processadores single-core, a programação paralela se torna mandatória para problemas que exigem total aproveitamento dos processadores. Além disso, o escopo da programação paralela é vasta e não se restringe apenas ao campo dos processadores multicore. Há, também, computadores com multiprocessadores e computadores interconectados em algum tipo de rede, que se comunicam com a troca de mensagens. Explicações mais detalhadas de diferentes modalidades de paralelismo podem ser encontradas na subseção As vantagens do paralelismo incluem a economia de dinheiro, pelo fato do paralelismo poder ser construído com componentes commodity, o ganho de tempo, a resolução de problemas maiores, por exemplo, um banco de dados com milhões de transações por minuto, e a possibilidade de concorrência (realização de muitas tarefas simultaneamente) [17]. Finalmente, na Seção 3.1, será elucidado de forma geral alguns aspectos, categorias e métricas utilizados para a programação paralela. A Seção 3.2 mostrará as definições e

26 24 Capítulo 3. Paralelismo e Sistemas Distribuídos alguns fatos sobre os sistemas distribuídos. Em 3.3, os conceitos dos sistemas de arquivos distribuídos serão explicados e uma visão geral sobre o HDFS será dada. E, para finalizar, na seção 3.4, será apresentado os trabalhos relacionados à estruturas de indexação de dados complexas utilizando algum modelo de paralelismo 3.1 Computação Paralela A computação paralela é uma forma de computação em que tarefas podem ser executadas simultanenamente [18], a partir do príncipio que algum problema computacional pode ser divido em subproblemas, que são resolvidos concorrentemente. Para isso, o programador, antes de tudo, precisa examinar quando o problema pode ser decomposto em subproblemas que podem ser executados ao mesmo tempo. Para tanto, é prática comum estruturar o código de maneira sequencial e depois explorar pontos de concorrência no código para permitir que os subproblemas rodem simultaneamente [19] Taxonomia de Flynn Uma classificação das arquiteturas de computadores foi introduzida por Michael Flyn em 1972 e ainda é útil para avaliar importantes características de um computador paralelo. Esse modelo é chamado de taxonomia de Flynn e caracteriza os computadores paralelos de acordo com os dados do programa e o fluxo de controle [20]. Essa taxonomia é separada em quatro categorias. 1. Single Instruction, Single Data (SISD). O elemento de processamento tem acesso a um único programa e armazenamento de dados. Essa categoria é o modelo sequencial tradicional de acordo com o modelo de von Neumann. 2. Multiple Instruction, Single Data (MISD). Há múltiplos elementos de processamento, porém há apenas um acesso comum para um depósito de dados único. Esse modelo de execução é muito restritivo e impraticável [21]. 3. Single Instruction, Multiple Data (SIMD) Há múltiplos elementos de processamento que realizam a mesma operação simultaneamente em uma área de memória compartilhada ou distribuída. Geralmente é utilizado para melhorar o desempenho do uso multímidia. 4. Multiple Instruction, Multiple Data (MIMD). O uso de um computador com muitos núcleos ou processadores e vários computadores interligados produz um sistema que pode processar várias instruções e conjuntos de dados por ciclos. Como se pode notar, quase todos os modelos de computação atuais entram nessa categoria [22].

27 3.1. Computação Paralela Organização de Sistemas MIMD Sistemas MIMD3.1.1 podem ser subdivididos baseados em sua arquitetura de memória [22]: sistemas com memória compartilhada ou distribuída. A Figura 3 ilustra esses dois tipos. Memória Compartilhada. Todos os processadores ou núcleos modificam os dados armazenados em um mesmo espaço de endereçamento. Assim, a presença de uma memória global faz a programação nesse ambiente muito mais fácil. Todas as operações de leitura são trivais e as operações de escrita exigem exclusão mútua. A programação com threads se enquadra nesse modelo de paralelismo [23]. Memória distribuída. Também chamada de paralelismo por troca de mensagens, essa categoria consiste em uma plataforma na qual vários nós de processamento têm um espaço de endereçamento exclusivo. Cada um desses nós pode ser um único procesador ou multiprocessadores com memória compartilhada. Nessa categoria, a comunicação entre esses nós se dá por mensagens. Essas mensagens podem conter dados, computações e sincronização de ações entre os processos. Exemplos desse modelo são máquinas em cluster3.2.3 [23] Figura 3 (a) Um sistema de memória compartilhado e (b) um sistema de memória distribuído [1] Métricas Para examinar os benefícios de um programa paralelo, é essencial identificar algumas métricas que medem o desempenho e os resultados de tal programa [23].

28 26 Capítulo 3. Paralelismo e Sistemas Distribuídos Tempo de Execução O tempo de execução serial e paralelo é o tempo decorrido do começo até o fim de sua realização. O tempo de execução serial é denotado por T S e o paralelo por T P Speedup Mede o ganho relativo de desempenho alcançado na paralelização de um programa sobre uma implementação sequencial. Ele é definido como a taxa de tempo decorrido para resolver um problema em um único processador divido pelo tempo exigido para resolver o mesmo problema na implementação paralela. O speedup é dado por S = T S /T P Speedup, em teoria, não pode exceder o número de elementos de processamento p. Porém, na prática, um speedup maior que o número de processadores pode ocorrer. Isso geralmente acontece graças a desvantagem de hardware que a implementação serial tem. Por exemplo, um dado de um problema pode ser muito grande para caber no cache de um elemento de processamento, porém, quando particionado entre diversos elementos de processamento, ele pode ser pequeno suficiente para caber no cache de cada elemento de processamento Eficiência Mede a fração de tempo útil de um elemento de processamento. Em um sistema paralelo ideal, o speedup é igual a p e a eficiência é igual a 1. Na prática, o speedup é menor que p e a eficiência está entre 0 e 1. A eficiência é denotada por E. E = S/P 3.2 Características dos Sistemas Distribuídos Um conceito errado que muitas pessoas têm de sistemas distribuídos é de apenas outro nome para rede de computadores. Entretanto, essa concepção é incorreta, visto que um sistema distribuído é construído em cima de uma rede e tenta esconder a existência de vários computadores autônomos [24]. Várias outras definições de sistema distribuído também são encontradas na literatura. Vários computadores que não têm uma memória ou um clock compartilhado [25]. Vasta quantidade de computadores, desde sistemas fracamente acoplados, como em redes de longa distância (WAN), a sistemas com alto acoplamento situados em redes de área local (LAN) [26].

29 3.2. Características dos Sistemas Distribuídos 27 Coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente [2]. Componentes de software e hardware localizados em uma rede de computadores comunicam e coordenam suas ações apenas pela passagem de mensagens [27]. Em suma, o conceito geral de sistema distribuído é exposto como dois ou mais computadores conectados dentro de uma mesma rede que, através de protocolos, realizam troca de mensagens para realizar um conjunto de tarefas relacionadas. Esse tipo de sistema tem a concorrência como um problema intrínseco, não há um noção global de horário, deve ser independente a falhas e facilmente expandido. Outro aspecto relevante é que o uso de vários computadores e a forma que eles estão estruturados e se comunicam entre si devem estar ocultos aos usuários Motivação A motivação para o uso de um sistema distribuído segue um desses requisitos: 1. Computação inerentemente distribuída. Em muitas aplicações, como em uma transferência de dinheiro em um banco, existe a necessidade da troca de informações entre sistemas geograficamente distantes. 2. Compartilhamento de Recursos. Acesso a recursos como impressoras e conjuntos de dados em um bancos de dados podem se tornar um gargalo ou não trazer custobenefício se aplicados em um único servidor. 3. Aumento da confiabilidade. Um sistema distribuído traz a vantagem do crescimento da confiabilidade com a replicação de recursos. Essa replicação consegue trazer disponibilidade, integridade e tolerância a falhas. 4. Aumento da taxa de desempenho. Mesmo que o principal objetivo do uso de sistemas distribuídos não seja atingir um rendimento mais alto, entretanto, com a divisão de tarefas em diversas máquinas, a taxa de desempenho é amplificada Desafios Assim que o sistema distribuído cresce e se amplia, diversos desafios afrontam seus administradores. Dentre eles [27]: Escalabilidade. Um sistema é dito escalável se ele continua eficaz com o aumento de recursos e aumento de usuários.

30 28 Capítulo 3. Paralelismo e Sistemas Distribuídos Tolerância a Falhas. Apesar de eventuais falhas em alguns de seus componentes, o sistema se recupera e consegue manter as operações de forma correta e eficiente. Concorrência. Objetos que representam recursos compartilhados entre vários clientes devem assegurar, por meio de operações sincronizadas, consistência de seus dados. Replicação. Para evitar gargalos e fornecer acesso rápido aos dados, a replicação dos dados entre diferentes máquinas se torna desejável Classificação O sistema distribuído também pode ser classificado em, tipicamente, dois subgrupos: Computação em cluster e em grid [2]. Na computação em cluster, os componentes, geralmente, são computadores pessoais, têm hardware simples, executam o mesmo sistema operacional e residem em uma rede de alta velocidade. Um exemplo bem conhecido são os clusters Beowulf. Cada cluster desse tipo consiste de diversos nós Linux, que são coordenadas por um único nó mestre. A função do mestre é lidar com a alocação de nós para um algoritmo paralelo e provê uma interface para os usuários do sistema. A Figura 4 retrata esse tipo de computação. Figura 4 Sistema de computação em cluster [2]. Na computação em grid, ao contrário dos clusters, há um grau maior de heterogeneidade, em que pode se ter diferentes redes, domínios administrativos, sistemas operacionais, etc. A tecnologias peer-to-peer (P2P), em que cada nó da rede realiza as funções de cliente e servidor [28], faz parte desse tipo de computação.

31 3.2. Características dos Sistemas Distribuídos Falácias da Computação Distribuída Em 1994, Peter Deutsch elaborou 7 suposições que projetistas de sistemas distribuídos geralmente fazem, que se provam errada. James Gosling, o pai da linguagem de programação Java, adicionou a oitava falácia. Essas suposições são [29]: 1. A rede é confiável. A rede é inconstante e é dever do projetista pensar na redundância do hardware e fazer as verificações das mensagens no lado do software. 2. A latência é zero. Latência é o tempo que leva para o dado se mover de um lugar até outro. Ela pode ser relativamente rápida em uma LAN, porém piora quando o sistema se comunica em uma WAN. 3. A banda é infinita. A largura de banda, apesar de ter um alto crescimento ao longo dos anos, também é necessária para novas aplicações, que exigem cada vez mais dados. 4. A rede é segura. Uma rede insegura causa muito prejuízos e o seu projeto de segurança deve ser levado em conta desde o começo da construção do sistema distribuído. 5. A topologia não muda. Quando há a implantação desse tipo de sistema em uma organização, a topologia de rede não é conhecida a priori. Então, para o sucesso da aplição distribuída, é importante que não se confie a implementação na estrutura física da rede. 6. Existe um administrador de rede. Para muitas aplicações coorporativas, o grupo de tecnologia na organização é constituído de administradores de bancos de dados, servidores web, Linux, etc. 7. O custo de transporte é zero. Os custos para se configurar e montar uma rede estão longe de serem gratuitos. Há custos para comprar roteadores, proteger a rede e mantê-la executando. 8. A rede é homogênea. É muito provável que sustemas distribuídos precisarão executar em diferentes máquinas. Por isso, é importante o uso de tecnologias que são interoperáveis Teorema CAP O teorema CAP, também conhecido como teorema de Brewer, descreve a impossibilidade de ter consistency (consistência), availability (disponibilidade) e partition tolerance (tolerância à partição) ao mesmo tempo em um sistema distribuído. Por isso, durante o seu projeto, é preciso sacrificar uma dessas propriedades de acordo com as necessidades que atendem aos requisitos desse sistema.

32 30 Capítulo 3. Paralelismo e Sistemas Distribuídos Eric Brewer, o criador desse conceito, apresentou esse fato no âmbito dos Web Services. Porém, essa proposta de Brewer foi abstraída e serve como guia no projeto de sistemas distribuídos em geral, armazenamento de dados em nuvem e bancos NoSQL [30]. Esse conjectura se transformou em um teorema por Seth Gilbert e Nancy Lynch [31]. Mais a fundo, o projetista do sistema distribuído deve escolher duas dessas três propriedades: Consistência. Uma leitura do recurso deve notar todas as escritas anteriores que se completaram. Disponibilidade. Leituras e escritas sempre obtêm sucesso Tolerância à Partição. O sistema continua a operar mesmo com falhas internas e perda de mensagens. 3.3 Sistemas de arquivos distribuídos Um DFS (sistema de arquivos distribuídos) é um sistema de arquivos, cujos clientes e servidores estão dispersos entre as máquinas de um sistema distribuído e, ao contrário de se possuir um único repositório de dados, há múltiplos dispositivos de armazenamento independentes. Um DFS pode ser implementado como parte de um sistema operacional distribuído ou como uma camada de software que gerencia a comunicação entre os diversos sistemas operacionais e sistemas de arquivos convencionais [32]. Geralmente, o funcionamento básico de um DFS consiste em um servidor fornecendo uma interface aos clientes para que eles possam ler ou escrever objetos localizados em nós com armazenamento não-volátil. Comumente, esses nós estão ligados ao servidor através de uma rede local (LAN). Suporte para sistema de nomes, autenticação e sincronização também podem ser fornecidos e frequentemente essa interface de programação segue o padrão das interfaces dos sistemas de arquivos não-distribuídos [33] HDFS HDFS (Hadoop Distributed File System) é um sistema de arquivos distribuídos feito para o framework Hadoop 1. Ele foi projetado para armazenar arquivos muito grande, segue o padrão escreva uma vez, leia muitas vezes e, preferencialmente, é executado em máquinas commodity computadores simples que não foram fabricados para proporcionar alto desempenho. HDFS foi altamente inspirado no artigo do Google File System [35]. 1 Hadoop traz, além do uso do HDFS, a implementaçao open-source do MapReduce[34] e é ideal para processamento em lote aplicado a grandes volumes de dados

33 3.3. Sistemas de arquivos distribuídos 31 Ele foi projetado para lidar com grandes volumes de dados, portanto, ele não se adequa a aplicações que exigem baixa latência de acesso ao dado, na faixa de milisegundos. O HDFS faz a troca da alta vazão dos dados pela latência. Não consegue lidar bem, também, com muitos arquivos pequenos e não é adequado para modificações com offsets arbitrários nos arquivos [36]. Os sistemas de arquivos convencionais possuem um tamanho de bloco padrão de poucos kilobytes, ao passo que, no HDFS, esse tamanho de bloco é, por padrão, de 64 megabytes. Essa ampla dimensão minimiza o custo de seeks e sua replicação entre os nós é simplificada. Em um cluster HDFS, há dois tipos de nós que seguem o padrão mestre-escravo: o namenode (mestre) e os datanodes (escravos). O namemode gerencia os metadados do sistema de arquivos e sabe a localização de todos os blocos de cada arquivo, entretanto, ele não armazena nenhum bloco físico. Já os datanodes armazenam e recuperam os blocos quando requisitados e informam periodicamente ao namenode a lista de blocos que eles estão armazenando [37]. Um arquivo armazenando dentro do HDFS é dividido em uma sequência de blocos. Os blocos desse arquivo são replicados entre os nós do cluster HDFS para evitar perda de dados. O fator de replicação é de três cópias por bloco, porém, esse número pode ser customizado para cada arquivo. A Figura 5 exemplifica esse mecanismo de replicação. Figura 5 Um exemplo de um arquivo único com três blocos e a sua replicação entre as máquinas do cluster HDFS [3] Escrita de um arquivo no HDFS Para a escrita do conteúdo de um arquivo no HDFS, que é escrito em Java, cujo fluxo é representado pela Figura 6, o cliente instancia o objeto DistributedFileSystem, que cria uma instância do DFSClient responsável por gerenciar a comunicação entre o

34 32 Capítulo 3. Paralelismo e Sistemas Distribuídos namenode e os datanodes. Depois disso, o DFSClient consulta o namenode para saber o tamanho do bloco e determinar a localização de escrita desses blocos (Passo 1). Após o cliente receber a lista de datanodes do namenode, ele começa a transferência do bloco para o primeiro datanode (Passo 2), que, em seguida, reflete essa transferência para o segundo e assim por diante (Passo 3 e 4). Confirmações (acks) de recebimentos dos dados são enviadas em ordem reversa até o recebimento do cliente (passos 5, 6 e 7). Depois que os blocos estão definitivamente armazenados, os datanodes notificam o namenode sobre seu estado de armazenamento (Passos A, B e C) [3]. Figura 6 Fluxo de escrita de um arquivo no HDFS Leitura de um arquivo no HDFS Como na escrita, a classe DFSClient também lida com a lógica de comunicação com o namenode e os datanodes. Para realizar a leitura de um arquivo, mostrado na Figura 7, o DFSClient requisita ao namenode a localização dos primeiros dez blocos do arquivo (Passo 1). O namenode determina o datanode escolhido de acordo com a proximidade com o cliente; um datanode que está na mesma máquina física que o cliente é mais favorecido que um datanode remoto. Depois que o cliente recebe a lista de blocos, ele recebe a transferência do conteúdo do bloco armazenado no datanode (Passos 2 e 3). Esse processo é repetido para o próximo datanode (Passos 4 e 5). Caso o arquivo tenha mais de dez blocos, o cliente requisita ao namenode os próximos dez blocos e repete esse método.

35 3.4. Trabalhos Relacionados 33 Figura 7 Passos para a leitura de um arquivo no HDFS 3.4 Trabalhos Relacionados Os trabalhos relacionados a essa dissertação trazem um aspecto em comum o uso de alguma modalidade de paralelismo aplicado a uma certa estrutura hierárquica. Zezula et al.[38] propuseram a implementação de uma M-Tree paralela com o objetivo de armazenar os nós da árvore em múltiplos discos e recuperá-los em concorrência. O autor sugere também o uso de quatro diferentes modos de distribuição dos nós entre esses discos, chamados de métodos de declustering. Depois disso, diferentes métodos de declustering em uma M-Tree foram propostos. Dentre eles, Alpkocak, Danisman e Tuba[39] consideram a proximidade dos objetos e a carga de discos/processadores. Para tanto, ele realiza uma consulta por abrangência ou uma consulta k-nn para cada novo elemento inserido e o aloca em um disco com um número mínimo de objetos nesse conjunto resposta. Qiu et al.[40] apresentam um método de declustering baseado no algoritmo de agrupamento k-medoid para descobrir a distribuição de objetos vizinhos e armazená-los em discos diferentes. Os trabalhos citados focaram no métodos de declustering e na implementação da M-Tree paralela com memória compartilhada. Porém, outra abordagem comum encontrada na literatura é com relação a inserção de alguma estrutura de dados baseada em árvore em uma arquitetura de memória distribuída. Bryan et al.[41] dividem uniformemente uma M-Tree em subárvores armazenados em um grupo de máquinas e um mestre, a partir de uma função hash, tem um visão geral de seus elementos armazenados e coordena as operações feitas na árvore, como inserções de novos objetos e consultas k-nn. Em Koudas, Faloutsos e Kamel[42], os autores sugerem a implementação de uma R-Tree paralela, em que todos os nós internos residem em um mestre e os nós folhas são dispersos entre

36 34 Capítulo 3. Paralelismo e Sistemas Distribuídos várias máquinas. Além disso, esse mestre guarda os ponteiros para os nós folhas e sabe onde cada nó está armazenado. Já Schnitzer e Leutenegger[43] propõem uma mudança para essa arquitetura. O mecanismo de armazenamento dos nós internos e a arquitetura mestre-escravo tem grande semelhança com [42]. Entretanto, ao contrário dos escravos guardarem nós espalhados, eles guardam sua própria versão local da R-Tree. No escopo de estruturas baseadas em árvore armazenadas em um sistema de arquivos distribuído, Liao, Han e Fang[44] armazenam os nós de uma R-Tree no HDFS e consideram vários aspectos, por exemplo, o tamanho ideal no nó índice, gerenciamento de buffer e agrupamento de nós em chunks. Aguilera, Golab e Shah[45] distribuem os nós de uma B-Tree no sistema de arquivos em cluster Sinfonia Aguilera et al.[46]. Os autores discutem o uso de transações, tolerância a falhas e migração de nós entre as máquinas. Recentemente, com o conceito de Big Data e cloud computing em voga, novas técnicas escaláveis que lidam com um imenso conjunto de dados multidimensional foram propostas. Nishimura et al.; Nishimura et al.[47, 48] utilizaram a K-d tree [49] e a Quad tree [50] para indexar dados espaciais armazenados no banco de dados não-relacional Hbase [51]. Wei et al.[52] cria um novo índice multidimensional baseado na R + -tree [53], chamado de KR + -index. Ele também indexa dados espaciais em um banco não-relacional. Porém, os autores escolheram o Cassandra Lakshman e Malik[54] para a implementação do índice proposto. Liu, Rosenberg e Rowley[55], com o uso de spill trees [56] em paralelo aplicadas ao modelo de computação MapReduce, realiza a consulta k-nn aproximada em uma base de dados com mais de um bilhão de imagens.

37 35 4 SLIM-TREE EM UM AMBIENTE DISTRI- BUÍDO As consultas por similaridade na Slim-Tree contam com várias seções passíveis de paralelização. As recuperações de nós no disco, por exemplo, poderiam ser realizadas simultaneamente e seu tempo de consulta ser bem mais baixo. Neste Capítulo, são apresentadas as contribuições desse trabalho. A estrutura, os componentes, a arquitetura, os algoritmos e detalhes de implementação serão especificados. A Seção 4.1 apresenta as motivações, os objetivos e as ideias inicais relacionados a esse trabalho. Já na Seção 4.2, os componentes do sistema, os passos e algoritmos e representações de consultas serão apresentados. Finalmente, a Seção 4.3 mostra detalhes de código, certas bibliotecas de indexação métricas e diagramas de algumas classes relevantes. 4.1 Proposta Quando o processamento de algum tipo de computação sobre um vasto volume de dados se torna insatisfatória para um programa serial, uma solução alternativa é distribuir essa computação em inúmeras máquinas e explorar alguma seção concorrente do programa sequencial para se obter uma divisão eficiente de tarefas simultâneas. No campo da indexação de dados multidimensionais com estruturas baseadas em árvore, uma parcela significativa do tempo de suas consultas por similaridade ocorre na busca de elementos que pertencem ao conjunto resposta. A partir disso, uma sugestão plausível seria dividir as operações de busca em pequenas suboperações e distribuí-las entre as diversas máquinas de um cluster. Então, para se atingir o paralelismo nessas buscas, a proposta inicial seria a distribuição dos nós da Slim-Tree no HDFS para realizar as consultas por similaridade de forma concorrente. Por exemplo, na consulta por abrangência, a desserialização dos nós, a tentativa de poda e a inclusão de novos elementos do nó folha podem ser realizados em diversas máquinas (escravos) simultaneamente. Para essa computação ter êxito, é necessário que exista um computador (mestre) que coordene a visita dos nós e faça a combinação dos resultados obtidos pelos escravos. Realizar essa distribuição dos nós no HDFS se torna vantajoso devido à replicação automática dos arquivos, à tolerância a falha e à fácil recuperação dos arquivos na rede. Porém, um desafio para seu uso é a sua característica marcante de ser otimizado para operações em arquivos grandes.

38 36 Capítulo 4. Slim-Tree em um ambiente distribuído Portanto, o objetivo dessa abordagem distribuída será: 1. Identificar as seções concorrentes das consultas sequenciais na Slim-Tree e implementar a versão paralela com o menor overhead possível. 2. Distribuir de maneira uniforme a computação para as máquinas do cluster com a meta de não deixar máquinas ociosas. 3. Melhorar o tempo decorrido das consultas distribuídas em relação às consultas sequenciais e analisar o speedup obtido. 4. Analisar se o HDFS traz vantagens e é apropriado para esse tipo de problema. 5. Preservação da dinamicidade da estrutura com a árvore no HDFS. 4.2 Arquitetura A Slim-Tree, como a B-Tree, é uma estrutura paginada de natureza não-volátil. Ou seja, cada nó é representado por uma página 1 de um arquivo no disco e cada arquivo é formado por várias páginas relativamente pequenas. Entretanto, armazenar o arquivo de índice completo no HDFS não permitiria uma recuperação paralela efetiva dos nós, visto que, para a desserialização do nó nesse formato, é necessário acesso randômico ao arquivo por meio de offsets, diminuindo drasticamente o desempenho do HDFS. A Figura 8 retrata essa limitação. Uma solução viável para superar essa restrição imposta pelo HDFS é armazenar cada nó da Slim-Tree como um arquivo. E, visto que arquivos grandes são ideais para o HDFS, o tamanho dos blocos e, consequentemente, as entradas dos nó serão maximizados. O gráfico 9 ilustra a relação do aumento do tamanho do bloco e do número de entradas por nó. As vantagens da construção da árvore no HDFS com blocos maiores em comparação aos blocos convencionais são: Tempo menor da inserção dos blocos no HDFS, devido ao overhead da replicação e da confirmação realizado pelo HDFS em cada arquivo. Acesso sequencial é muito mais vantajoso. Número menor de blocos totais e da altura da árvore, devido ao seu elevado fanout, e aumento da taxa de transferência dos arquivos. 1 Página e bloco significam essencialmente a mesma coisa e denotam uma unidade atômica de armazenamento. O termo página é comumente utilizado para unidade de armazenamento do disco rígido e bloco para a unidade de armazenamento no HDFS.

39 4.2. Arquitetura 37 Figura 8 A Figura retrata a desserialização de um nó em um arquivo de índice com quatro páginas (nós). As setas indicam o ponteiro do arquivo antes e depois do acesso. Esse acesso randômico não é apropriado para arquivos armazenados no HDFS folha índice Numero de entradas por nó Tamanho do bloco (KB) Figura 9 Análise do tamanho de entradas do nó pelo tamanho do bloco. O nó índice tende a acomodar menos entradas devido à sua entrada possuir atributos adicionais, como o raio de cobertura, o ponteiro e o número de elementos. O objeto armazenado nos folhas é um long com 8 bytes. A realização das consultas por similaridade exige menos comunicação entre o mestre e os escravos. Já as desvantagens obtidas com esse método são: O tempo da construção da árvore é maior, visto que o método padrão de split da Slim-Tree, baseado na árvore de cobertura minimal, tem complexidade de tempo quadrático em relação ao número de entradas do nó. Para blocos com 2 MB, por exemplo, o método de split de um nó folha exigiria um tempo de O método

40 38 Capítulo 4. Slim-Tree em um ambiente distribuído de split minmax se torna impraticável com blocos muito grandes, graças à sua complexidade cúbica. O raio de cobertura é um atributo decisivo das entradas dos nós índice para as podas nas consultas por similaridade. O problema é que, conforme o número de elementos apontados pelo nó índice aumenta, aumenta-se também o raio de cobertura, o que gera sobreposição e a consequente diminuição da poda. Outro aspecto que precisa ser examinado é a maneira que os nós da árvore serão armazenados entre o HDFS. [5] apresenta dois tipos de estratégia de alocação dos nós entre as máquinas. O método de alocação global não considera os conteúdos dos nós e o seu número entre as máquinas é praticamente o mesmo. Os métodos comuns desse tipo é a estratégia round-robin, em que o j-ésimo nó é armazenado na (jmodn)-ésima máquina, considerando um cluster com n máquinas, e a estratégia randômica, em que o nó é armazenado em uma máquina ao acaso; Já o método de alocação baseado em proximidade faz uso das proximidade das dos nós para evitar colocar colocar objetos similares na mesma máquina [38] consegue melhores resultados com os métodos baseados em proximidade. Enfim, o método global e a estratégia randômica são utilizados nesse trabalho, já que o HDFS faz a replicação automática dos nós sem considerar os seus conteúdos. Para fazer a alocação e a replicação dos nós com estratégias baseadas em proximidade no HDFS, seria necessário a alteração da sua estrutura interna. A Figura 10 retrata o armazenamento dos nós da árvore distribuídos entre as máquinas Consultas por Similaridade A consulta por abrangência, como visto na seção 2.2.2, tem, como conjunto resposta, todos os elementos que residem no interior de um raio de consulta passado por parâmetro. O Algoritmo 4.1 representa os passos dessa consulta com a programação serial. Alguns dos passos do algoritmo 4.1 são passíveis de serem paralelizados. Por exemplo, processamentos CPU bound, como cláusulas de tentativa de poda e cálculos de função de distância, podem ser realizados ao mesmo tempo aproveitando os múltiplos núcleos da máquina. E processamentos I/O bound, como a desserialização dos nós, podem ser efetuados simultaneamente com diversos discos. Com múltiplas máquinas, o paralelismo seria multiplicado, pois, além da recuperação dos nós em disco serem feitos entre elas, cada máquina poderia também realizar o paralelismo em CPU. Entretanto, para esse modelo obter sucesso, esse algoritmo da consulta por abrangência precisa ser modificado. Uma dessas mudanças consiste na introdução de um novo elemento que despacha as tarefas para os demais computadores do cluster, mescla os resultados obtidos e sincronizam

41 4.2. Arquitetura 39 Figura 10 Disposição dos blocos da árvore entre as máquinas. Note que o acesso é randômico e cada bloco é replicados entre três máquinas de forma equilibrada. as etapas do algoritmo. O restante dos elementos, chamados de workers, realizam as tarefas concorrentes e são coordenados pelo mestre. A Slim-Tree distribuída segue o modelo mestre-escravo e foi baseada no HDFS (namenode-datanode). O mestre desse sistema, intitulado slim-master, é o responsável pelo envio dos comandos aos workers, coordena o conjunto resultado global e administra as estatísticas, como cálculos da função de distância de cada worker. O restante dos elementos do cluster são classificados como slim-workers. Essas máquinas são responsáveis pelas computações das consultas por similaridade, como acessos ao HDFS, a inserção do elemento no conjunto resposta e a verificação de novos elementos não podados. Os slimworkers não se comunicam entre si e foram projetados para executar como um serviço que espera comandos do slim-master. O namenode e o slim-master são instalados na mesma máquina. Isso se torna vantajoso, pois o slim-master se comunica com o namenode para obter a localização dos blocos e realizar o direcionamento das requisições para os slim-workers que armazenam os nós da árvore. Como o namenode mantém os metadados dos blocos armazenados na memória, a comunicação na rede e os acessos a disco não são necessários. O datanode e o slim-worker são instalados no restantes das máquinas, preferencialmente com hardware

42 40 Capítulo 4. Slim-Tree em um ambiente distribuído Algoritmo 4.1: Consulta por abrangência em um MAM (rangequery) [4] Entrada: node, s q, ξ Saída: result 1 início 2 result ; 3 se node é um nó índice então 4 para cada s i em node faça 5 se δ(s q, s rep ) δ(s rep, s i ) ξ + r i então 6 distance δ(s q, s i ); 7 se distance ξ + r i então 8 retorna rangequery(p tr(t si ), s q, ξ); 9 fim 10 fim 11 fim 12 senão 13 para cada s i em node faça 14 se δ(s q, s rep ) δ(s rep, s i ) ξ então 15 distance δ(s q, s i ); 16 se distance ξ então 17 result.add (s i, distance); 18 fim 19 fim 20 fim 21 fim 22 retorna result; 23 fim commodity. O datanode armazena os arquivos do HDFS no disco de sua máquina [57] e, seguindo a premissa de que mover computação é mais barato que mover dado 2, o slimmaster requisita as operações nos nós da árvore especificamente para o slim-worker que possui aquele nó. Então, o slim-worker e o datanode da mesma máquina se comunicam localmente para realizar a transferência, o que economiza largura de banda da rede. A Figura 11 retrata a disposição desses componentes em um cluster. Uma desvantagem dessa abordagem é que o namenode e o slim-master se tornam um ponto único de falha (single point of failure) e, dependendo do número de consultas ou do volume de dados da árvore, pode se tornar o gargalo da aplicação. Por isso, é recomendado que esses componentes sejam instalados em uma máquina robusta. O datanode e o slim-worker, se falharem, não compromotem o funcionamento do sistema, visto que os dados geralmente são replicados, justamente com o propósito de tolerância a falha, entre três máquinas. A operação da consulta por abrangência é composta de quatro etapas: Inicialização. O primeiro passo dessa etapa consiste no mapeamento da localização dos blocos da árvore entre o cluster. Depois disso, é realizada a abertura de conexão 2 Geralmente é melhor migrar a computação perto de onde o dado está localizado do que deslocar o dado para onde a aplicação está executando [36]

43 4.2. Arquitetura 41 Slim-Worker A DataNode A 0 Slim-Master 2 NameNode Handle 0 Handle 1 Slim-Worker B DataNode B 3 1 Handle 2 Slim-Worker C DataNode C 2 1 Handle 3 Slim-Worker D DataNode D 0 3 Figura 11 Estrutura do cluster e a relação entre slim-master - namenode e slim-worker - datanode. O slim-master se comunica com todos os slim-workers e nenhum slim-worker se comunica entre si. Repare como os nós estão replicados entre as máquinas e o slim-master envia as requisições do processamento dos nós para a máquina que armazena tal nó. entre todos os slim-workers ativos com o envio do raio e do elemento de consulta. Busca na Árvore. A procura por elementos que fazem parte do conjunto resposta ocorre nessa fase. O slim-master coordena e despacha as requisições aos slimworkers, que realizam a recuperação dos blocos no HDFS e as tentativas de podas. Combinação das Estatísticas. Algumas estatísticas de operações, como acessos ao HDFS e cálculos de funções de distância, são avaliados no slim-worker. Nesse estágio, que ocorre no final da busca na árvore, o slim-master requisita as estatísticas de cada slim-workers. Isso é útil para avaliar o grau de equilíbrio das computações e para verificação de desempenho do cluster Término Nesse período, ocorre o fechamento das conexões abertas e o retorno do conjunto resposta para o cliente. O Algoritmo 4.2 apresenta os passos iniciais realizados pelo slim-master para realizar a consulta por abrangência distribuída. O começo da requisição com a passagem de parâmetro do raio e elemento de consulta pelo cliente. Depois disso, o slim-master requisita ao HDFS o mapeamento dos blocos entre as máquinas do cluster (linha 5). Em seguida, ocorre uma abertura de conexão com cada slim-worker registrado (linha 7); se a conexão não obteve êxito, o slim-worker é marcado como inativo (linha 8). Na linha 7

44 42 Capítulo 4. Slim-Tree em um ambiente distribuído Algoritmo 4.2: Algoritmo de inicialização da consulta por abrangência distribuída 1 DistributedRangeQuery(s q, ξ) início 2 result ; 3 blockstovisit ; 4 blocksbusy ; 5 mapblocklocations HDFS.listStatus(); 6 para cada host em slim-workers faça 7 success host.inicializaconexao(s q, ξ); 8 host.ativo success; 9 fim 10 initializedispatcherservice() 11 se root é índice então 12 para cada s i em root faça 13 distance δ(s q, s i ); 14 se distance ξ + r i então 15 startrangequeryrequest(p tr(t si )); 16 senão 17 // Árvore com altura de 1. Realize o algoritmo serial. 18 fim 19 fim 20 fim 21 fim até 20, ocorre a tentativa de podas do nó raiz, que, por ser constantemente acessado, é armazenado na memória do slim-master. Dentro dessa computação, a função de início do processamento no bloco do algoritmo 4.3 é invocada (linha 15). Algoritmo 4.3: Algoritmo de processamento da consulta por abrangência distribuída 1 startrangequeryrequest(blockid) início 2 blockstovisit.add(blockid); 3 dispatchblockstohosts() 4 fim 5 dispatchblockstohosts() início 6 para cada blockid em blockstovisit faça 7 hosts mapblocklocations.findhosts(blockid); 8 host random(hosts); 9 se host.ativo e blockid não está em blockstovisit então 10 blocksbusy.add(blockid) host.requisitarangequery() 11 fim 12 fim 13 fim O algoritmo 4.3 retrata a estrutura do envio de blocos para o slim-worker. A função da linha 1 representa a chamada inicial para a computação de novos nós. Dentro dela, a primeira operação é a inserção do identificador do bloco na lista de blocos a visitar. Em seguida, é invocada a função dispatchblockstohosts(), declarada na linha 5.

45 4.2. Arquitetura 43 Nessa função, para cada bloco iterado dos blocos pendentes (linha 6), é consultado em quais slim-workers determinado bloco se encontra (linha 7). O escravo eleito é escolhido randomicamente entre tais slim-workrers (linha 8). Se esse escravo estiver conectado e o bloco iterado ainda não estiver sendo consultado (linha 9), tal bloco é inserido na lista de blocos ocupados e uma nova requisição é enviada para o slim-worker processar. Algoritmo 4.4: Algoritmo de resposta da consulta por abrangência distribuída 1 resultcallback() início 2 blocksbusy.remove(blockresponse); 3 blockstovisit.remove(blockresponse); 4 se response for uma lista então 5 para cada blockid em response faça 6 startrangequeryrequest(blockid) 7 fim 8 senão se response for um Result então 9 result.merge(response) 10 fim 11 fim Já, o Algoritmo 4.4 ilustra a função que lida com o evento disparado pela resposta do slim-workder. A resposta do slim-worker pode ser de dois tipos: se o bloco processado pelo escravo for índice, ela será uma lista de identificadores de blocos que não foram possíveis de serem podados; se o bloco processado for folha, sua resposta será uma parte dos elementos que pertencem ao conjunto resposta. O início desse algoritmo começa com a retirada do identificador do bloco processado da lista de blocos ocupados e pendentes (linhas 2 e 3). Depois disso, se a resposta for do tipo lista (linha 4, para cada identificador de bloco iterado dessa lista, é invocada a função startrangequery da linha 1 do algoritmo 4.3. Caso a resposta for do tipo resultado 4, esses elementos são combinados com o resultado global. As ações do slim-worker fazem a parte do servidor no modelo cliente-servidor. O slim-worker disponibiliza um serviço e responde a solicitações de consultas do cliente, nesse caso, representado pelo slim-master. O Algoritmo 4.5 explica as operações realizadas pelo slim-worker para aceitar novas requisições, fazer o processamento na estrutura e devolver a resposta. O primeiro passo consiste na criação de um pool de threads que limita a quantidade de threads ativas em um determinado momento (linha 2). Se esse pool já estiver no seu limite, as novas conexões são bloqueadas e colocadas numa fila. Depois disso, o slim-worker entra em um loop infinito (linha 3). E, dentro desse loop, o primeiro passo representa a espera de novas conexões, ao passo, que esse processamento bloqueia a sua execução (linha 4). Na linha 5, uma nova thread é solicitada ao pool e, com essa nova thread, o procedimento handlerequest é invocado para a consulta dessa conexão (linha 6).

46 44 Capítulo 4. Slim-Tree em um ambiente distribuído Algoritmo 4.5: Algoritmo de processamento da consulta por abrangência no slim-worker 1 inicializacao() início 2 threadpool Instancia thread pool com threads limitadas 3 enquanto verdade faça 4 connection esperanovaconexoes(); 5 newthread threadpool.fetchthread(); 6 newthread.run(handlerequest()); 7 fim 8 fim 9 handlerequest() início 10 element connection.readobject(); 11 range connection.readdouble(); 12 enquanto verdade faça 13 protocol connection.readprotocol(); 14 se protocol for P ROCESSAR_BLOCO então 15 blockid connection.readlong() ; 16 distance connection.readdouble() ; 17 node Acessa o HDFS e recupera o nó com esse blockid; 18 object rangequery(node, distance) (node, distance) ; 19 connection.writeobject(object) ; 20 senão se protocol for EN CERRAR_CON EXAO então 21 connection.fechaconexao(); 22 break; 23 //Sai do loop 24 fim 25 fim 26 fim Dentro desse procedimento, ocorre a troca de mensagens entre o slim-master e o slim-worker. Nas linhas 10 e 11, ocorre a leitura do elemento e do raio de consulta, respectivamente. Depois disso, um loop infinito é introduzido e a espera do próximo protocolo bloqueia a execução do programa (linha 13). Esse protocolo recebido pode ser o P ROCESSAR_BLOCO ou ENCERRAR_CONEXAO. Se o protocolo recebido for o P ROCESSAR_BLOCO, o slim-worker recebe o identificador de bloco e a distância do representativo (linhas 15 e 16 respectivamente), recupera o nó do HDFS (linha 17 e chama a função rangequery representada no algoritmo X. Se o protocolo for EN CERRAR_CON EXAO, o slim-worker fecha a conexão existente, sai do loop infinito e libera uma thread no pool de threads. Assim, as computações e as tentativas de podas da consulta por abrangência ocorrem na chamada (linha 18. A implementação dessa chamada é muito similar ao Algoritmo 4.1 e não será mostrado aqui pela semelhança com tal algoritmo. Na linha 8 do algoritmo 4.1, no qual o nó em questão é índice, ao invés da chamada recursiva, seria retornada uma lista com todos os ponteiros de blocos não podados. Na linha 17, o retorno seria um conjunto resposta com todos os elementos.

47 4.2. Arquitetura 45 A Figura 26 representa as interações entre os componentes da Slim-Tree distribuída e as fases do algoritmo de uma única consulta por abrangência hipotética. A intenção é que diversas consultas desse tipo sejam espalhadas entre as máquinas. Os passos são considerados da seguinte maneira: O algoritmo tem início com a comunicação entre o cliente e o slim-master e a passagem do raio e do elemento de consulta (Passo 1). O slim-master solicita ao namenode a localidade dos nós da árvore entre as máquinas do cluster (Passo 2). O slim-master inicia a conexão com todos os slim-workers ativos (Passo 3). A raiz da árvore, por ser um elemento constantemente requisitado, reside na memória do slim-master e, com ela, o slim-master tenta podar seus elementos. A partir disso, suponha que os blocos A e B não tenham sido podados (Passo 4). O slim-master envia a requisição de processamento desses blocos às máquinas que armazenam esse nó, nesse caso, o slim-worker 1 (SW1) e o slim-worker 2 (SW2) (Passos 5 e 6). Os nós A e B são índices. Então, o SW1 podou todas as entradas e o SW2 não conseguir podar os nós C e D. Logo, a resposta de SW1 é uma lista vazia e a resposta de SW2 é uma lista com os identificadores C e D (Passo 7 e 8). Despacho dos blocos C e D aos slim-worker 3 (SW3) e slim-worker 4 (SW4) respectivamente, similar às fases 5 e 6 (Passos 9 e 10). C e D são folhas. O nó C, ao ser processado, classifica o elemento θ e γ e o nó D não poda o elemento δ. Após isso, todos esses elementos são enviados como resposta ao slim-master (Passos 11 e 12). O slim-master verifica que a lista de blocos a serem visitados está vazia e nenhum nó está ocupado. Isso significa que o algoritmo terminou (Passo 13). O slim-master solicita, a todos os slim-workers, as estatísicas de processamento. Para isso, é utilizado a mesma conexão aberta no início do algoritmo (Passo 14). O slim-master fecha todas as conexões ativas com os slim-workers (Passo 15). O conjunto resultado θ, γ e δ é retornado ao cliente (Passo 16).

48 46 Capítulo 4. Slim-Tree em um ambiente distribuído Cliente 1 16 Slim-Master Slim-Worker Slim-Worker Slim-Worker 2 Slim-Worker 3 Figura 12 Representação das comunicações entre os componentes da Slim-Tree distribuída. 4.3 Implementação Para realizar otimizações e testar os experimentos dos conceitos apresentados, a implementação da slim-tree se tornou indispensável. A intenção inicial consistia na utilização de uma biblioteca de métodos de acessos métricos e no aproveitamento da implementação existente para aplicar os algoritmos paralelos. Os requisitos para a escolha de uma biblioteca são: a fácil integração com o HDFS; o fornecimento de uma boa documentação e uma utilização ampla e consolidada. Há diversas bibliotecas que teriam a possibilidade de satisfazer tais requisitos.: [58] implementa a M-tree em três linguagens distintas: Python, C++ e Java. Porém, ela aparenta estar incompleta e aparentemente não recebeu muita popularidade. [59] traz a M-tree em C++ baseada no pacote GIST [60]. Seu ponto forte é que um de seus desenvolvedores é Marco Patela, um dos criadores da M-tree. Todavia, sua falta de documentação e de atualizações tornam-se pontos desfavoráveis para sua escolha. XXL [61] contém uma infraestrutura cheia de recursos que implementa processamento de consultas avançadas. Ela é desenvolvida em Java e tem muitas funcionalidades, entre elas, a implementação de diversas estruturas de índice, como R-tree, M-tree e a própria Slim-Tree. É consideravelmente extensível e tem uma boa cobertura de testes. Além disso, por ser escrita em Java, ela supostamente teria uma fácil integração com o HDFS. A biblioteca XXL publicou artigos reconhecidos [62, 63] e é bem prestigiada no âmbito acadêmico. Contudo, o seu escopo é muito grande e

49 4.3. Implementação 47 tem uma grande curva de aprendizado e [64] alega que essa biblioteca não dá ênfase a velocidade. Por último, a Arboretum [65] é uma biblioteca em C++ e traz a implementação de vários métodos de acessos métricos, como a Slim-Tree e a DBM-Tree. Além disso, ela tem um visualizador de MAMs através do módulo MAMView [66]. Essa biblioteca já foi utilizada para realização de consultas por similaridade no banco de dados relacional Oracle [67] e para realizar um modelo de extensão da linguagem SQL em bancos de dados relacionais chamado de SIREN [68]. Logo, entre as bibliotecas citadas, a Arboretum foi a que mais se destacou por atender os requisitos. Entretanto, sua maior desvantagem é que ele foi escrito em C++ e embora o HDFS disponibilize um subconjunto de sua API nessa linguagem, chamado de libhdfs, seu desempenho é inferior à API do Java [69]. Por conta disso, a decisão final foi a reimplementação da arquitetura e da estrutura da Arboreturum em Java. Esse nova biblioteca foi cunhada de Jarboretum. A Arboretum é uma biblioteca escrita em C++ de código aberto desenvolvida pelo Grupo de Bases de Dados e Imagens do Instituto de Ciências Matemáticas e de Computação da USP (GBDIICMC-USP). A inserção de novos tipos de objetos e funções de distância métricas são adicionadas facilmente, utiliza o paradigma de orientação a objetos e seu suporte de armazenamento é bastante flexível para realizar a integração com os bancos de dados relacionais. A biblioteca Arboretum é dividida em três camadas distintas: a camada de usuário é responsável pela implementação das funções de distância e dos tipos de objetos armazenados; a camada de estrutura realiza as regras de negócio dos métodos de acesso; e, finalmente, a camada de armazenamento contém as abstrações de diversos dispositivos de armazenamento. Essa camada de armazenamento disponibiliza uma interface definida pela classe PageManager. A classe concreta convencional é a chamada DiskPageManager, que consiste em todas as páginas como um único arquivo e, a partir dos identificador de cada página, é realizado o offset para desserializar esse nó. Esse mecanismo é retratado na Figura 8. Outros PageManagers, como o armazenamento das páginas em memória, também podem ser utilizados. Já, na Jarboretum, foi criado o HdfsPageManager, que consiste nas operações de leitura e escrita no HDFS, com o uso da API que esse sistema de arquivos distribuído fornece. Com o HdfsPageManager, ao contrário do DiskPageManager, cada nó da árvore é tratado como um arquivo único. Além disso, para acelerar a construção da estrutura de índice, foi criado o FilePageManager, que realiza a mesma lógica de blocos como arquivos únicos, porém, residentes no disco. Com essa arquitetura, a camada de estrutura se

50 48 Capítulo 4. Slim-Tree em um ambiente distribuído comunica apenas com a interface PageManager e os detalhes da implementação são encapsulados dentro das classes concretas. A Figura 13 retrata a estrutura dos PageManagers no sistema. Figura 13 Diagrama de classe dospagemanagers distintos do sistema. Os códigos 1 e 2 ilustram a implementação da desserialização de um nó com Disk- PageManager e com HdfsPageManager respectivamente na Jarboretum. Enquanto, que no DiskPageManager, é necessária a configuração da alocação de memória e manipulação dos offsets no arquivo, o HdfsPageManager trata cada bloco como um arquivo separado e a stream é automaticamente fornecida pelo HDFS. 1 // Calculando o offset 2 long offset = blockid * defaultblocksize + HEADER_SIZE; 3 // Alocando uma area de memoria com o tamanho do bloco 4 ByteBuffer buffer = ByteBuffer.allocateDirect(defaultBlockSize); 5 // Populando o buffer com o conteudo do arquivo 6 this.channel.read(buffer, offset); 7 buffer.rewind(); 8 // Lidando com o stream de bytes 9 byte[] rawbytes = new byte[defaultblocksize]; 10 buffer.get(rawbytes); 11 ByteArrayInputStream bais = new ByteArrayInputStream(rawBytes); 12 // Serializador criando o no 13 NodeTree nodetree = this.serializer.read(bais); Listing 1: Implementação da leitura de um bloco para página no DiskPageManager

SUMÁRIO. Introdução... 3

SUMÁRIO. Introdução... 3 SUMÁRIO Introdução..................................... 3 1 Consultas por Similaridade e Espaços métricos............. 5 1.1 Consultas por abrangência e consultas aos k-vizinhos mais próximos... 5 1.2

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

Leia mais

Introdução às arquiteturas paralelas e taxonomia de Flynn

Introdução às arquiteturas paralelas e taxonomia de Flynn Introdução às arquiteturas paralelas e taxonomia de Flynn OBJETIVO: definir computação paralela; o modelo de computação paralela desempenhada por computadores paralelos; e exemplos de uso da arquitetura

Leia mais

4 Computação Paralela 4.1. Introdução

4 Computação Paralela 4.1. Introdução 4 Computação Paralela 4.1. Introdução Nos últimos anos observa-se uma tendência cada vez maior do aumento da demanda computacional na resolução de grandes problemas. Exemplos de aplicações que exigem alto

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

Leia mais

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França Arquitetura NUMA 1 Daniel de Angelis Cordeiro INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França 6 de Outubro de 2010 1 Baseado em slides feitos por Christiane Pousa

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - ARQUITETURA DE SISTEMAS DISTRIBUÍDOS 1 INTRODUÇÃO Considerando que os Sistemas Distribuídos são constituídos de vários processadores, existem diversas formas de organizar o hardware de tais

Leia mais

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução Cluster Resumo Introdução Cluster Cluster Beowulf Curiosidades Conclução Introdução Sua empresa esta precisando fazer um grande processamento; As Nuvens existentes não são suficientes para sua empresa;

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Sistemas Distribuídos. Introdução

Sistemas Distribuídos. Introdução Sistemas Distribuídos Introdução Definição Processos Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Executados

Leia mais

Características Básicas de Sistemas Distribuídos

Características Básicas de Sistemas Distribuídos Motivação Crescente dependência dos usuários aos sistemas: necessidade de partilhar dados e recursos entre utilizadores; porque os recursos estão naturalmente em máquinas diferentes. Demanda computacional

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS. Aula 2- Aplicações distribuídas e TI VERDE

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS. Aula 2- Aplicações distribuídas e TI VERDE Aula 2- Aplicações distribuídas e TI VERDE ESTRUTURA DA DISCIPLINA AULA 1 Introdução AULA 2 Aplicações Distribuídas AULA 3 Tratamento de Falhas AULA 4 Classificação de Flynn AULA 5 Modelo Cliente/Servidor

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Maestro Arthur Kazuo Tojo Costa 317497 Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Introdução Sistema Operacional de Redes Detalhes do hardware Multiplexação

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Introdução Capítulo 1 Definição Um sistema distribuído é um conjunto de computadores independentes entre si que se apresenta a seus usuários como

Leia mais

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Sistemas Paralelos e Distribuídos Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Conceitos preliminares Paralelismo refere-se a ocorrência simultânea de eventos em um computador Processamento

Leia mais

Metas de um Sistema Distribuído

Metas de um Sistema Distribuído Metas de um Sistema Distribuído Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Comparação SDs X Scs

Comparação SDs X Scs Prof. Alexandre Lima Sistemas Distribuídos Cap 9 1/7 Comparação SDs X Scs Distribuição inerente Economia Velocidade Confiabilidade Crescimento incremental Descrição Algumas aplicações envolvem máquinas

Leia mais

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SISTEMAS COM MÚLTIPLOS PROCESSADORES LIVRO TEXTO: CAPÍTULO 13, PÁGINA 243 Prof. Pedro Luís Antonelli Anhanguera Educacional INTRODUÇÃO Arquiteturas que possuem duas ou mais CPUs interligadas

Leia mais

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos Introdução a Sistemas Distribuídos Definição: "Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede e equipados com um sistema de software distribuído." "Um sistema distribuído

Leia mais

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Conceitos HW e SW. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Conceitos HW e SW Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Conceitos de Hardware Conceitos de Software Combinações de SW e HW 3 Sistemas Distribuídos

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

Leia mais

2 Trabalhos Relacionados

2 Trabalhos Relacionados 2 Trabalhos Relacionados Nesse capítulo, apresentamos os trabalhos relacionados ao GridFS, entrando em mais detalhes sobre os sistemas citados durante a introdução e realizando algumas considerações sobre

Leia mais

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva The Eucalyptus Open- source Cloud-computing System Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva Sumário Introdução Trabalhos Correlatos Eucalyptus Design Conclusões Visão Geral Introdução:

Leia mais

Consultas por similaridade em Big Data: alternativas e

Consultas por similaridade em Big Data: alternativas e Consultas por similaridade em Big Data: alternativas e soluções Guilherme José Henrique 1, Daniel dos Santos Kaster 1 1 Departamento de Computação Universidade Estadual de Londrina (UEL) Caixa Postal 10.011

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais Computação em Nuvem Computação em nuvem: gerenciamento de dados Computação em nuvem (Cloud Computing) é uma tendência recente de tecnologia cujo objetivo é proporcionar serviços de Tecnologia da Informação

Leia mais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede Prof. Samuel Souza } Monolíticas Aplicações em um computador centralizado } Em Rede Aplicações com comunicação em rede } Distribuídas Comunicação e cooperação em rede } Aplicações que são funcionalmente

Leia mais

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo 1 Professores: Aula 10 Lúcia M. A. Drummond Simone de Lima Martins Conteúdo: Arquiteturas Avançadas - Arquiteturas RISC - Processamento Paralelo 2 Arquiteturas RISC Reduced Instruction Set Computer se

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Evolução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Introdução Componentes de um sistema computacional Conceituação Características desejáveis Organização

Leia mais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais

Introdução. Nível do Sistema Operacional. Introdução. Um Sistema Operacional... Introdução a Sistemas Operacionais Introdução Nível do Sistema Operacional (Aula 14) Introdução a Sistemas Operacionais Hardware Provê os recursos básicos de computação (CPU, memória, E/S,etc.) Programas (aplicações) Definem as maneiras

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro Sistemas MIMD Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Relatório de Pesquisa

Relatório de Pesquisa Relatório de Pesquisa A Vantagem da Virtualização de Mainframe: Como Economizar Milhões de Dólares Utilizando um IBM System z como um Servidor em Nuvem Linux Sumário Executivo Os executivos de TI (Tecnologia

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

Tipos de Sistemas Distribuídos (Cluster e Grid) Tipos de Sistemas Distribuídos (Cluster e Grid) Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais

1º Estudo Dirigido. Capítulo 1 Introdução aos Sistemas Operacionais 1º Estudo Dirigido Capítulo 1 Introdução aos Sistemas Operacionais 1. Defina um sistema operacional de uma forma conceitual correta, através de suas palavras. R: Sistemas Operacionais são programas de

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

1. CAPÍTULO COMPUTADORES

1. CAPÍTULO COMPUTADORES 1. CAPÍTULO COMPUTADORES 1.1. Computadores Denomina-se computador uma máquina capaz de executar variados tipos de tratamento automático de informações ou processamento de dados. Os primeiros eram capazes

Leia mais

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 PROCESSOS 1. INTRODUÇÃO Em sistemas distribuídos é importante examinar os diferentes tipos de processos e como eles desempenham seu papel. O conceito de um processo é originário do campo de sistemas

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS Ciência da Computação 5ª série Sistemas Operacionais A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um conjunto

Leia mais

Escalonamento de Processos em Multiprocessadores

Escalonamento de Processos em Multiprocessadores Sistemas Operacionais Escalonamento de Processos em Multiprocessadores Capítulo 10 IC - UFF 1 Processamento Paralelo e Distribuído Multiprocessadores X Multicomputadores Memória IC - UFF 2 Processamento

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Cassandra - Particionamento de Dados Sistemas Distribuídos Douglas Macedo Hugo Lourenço Sumário Introdução Conceito Anel Multíplos Data center Fatores envolvidos Arquitetura do Sistema Módulo de Particionamento

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br

Sistemas Operacionais. Alexandre Meslin meslin@inf.puc-rio.br Sistemas Operacionais Alexandre Meslin meslin@inf.puc-rio.br Ementa Apresentação do curso Cap1 - Visão Geral Cap2 - Conceitos de Hardware e Software Cap3 - Concorrência Cap4 - Estrutura do Sistema Operacional

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Definindo melhor alguns conceitos

Definindo melhor alguns conceitos Definindo melhor alguns conceitos Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema. Processamento Distribuído: processamento

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS 1. Histórico Primeiros computadores Computadores dos anos 50 e 60 Primeiros computadores com sistemas operacionais Surgimento das redes de computadores Nos anos 70 início das pesquisas

Leia mais

Seminário: Google File System (GFS)

Seminário: Google File System (GFS) UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC Disciplina: Sistemas Operacionais I INE5355 Alunos: Armando Fracalossi 06132008 Maurílio Tiago Brüning Schmitt 06132033 Ricardo Vieira Fritsche 06132044 Seminário:

Leia mais

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

Leia mais

Tabela 4.2 Estatística típica de um sistema em 2007

Tabela 4.2 Estatística típica de um sistema em 2007 4. CONSTRUÇÃO DE ÍNDICE Neste capítulo é mostrado como construir um índice invertido, processo chamado de indexação. O projeto de indexação depende de algumas restrições de hardware, fato que leva a necessidade

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

1.2 Tipos de Sistemas Operacionais

1.2 Tipos de Sistemas Operacionais 1.2 Tipos de Operacionais Tipos de Operacionais Monoprogramáveis/ Monotarefa Multiprogramáveis/ Multitarefa Com Múltiplos Processadores 1.2.1 Monoprogramáveis/Monotarefa Os primeiros sistemas operacionais

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES ALGORÍTMOS PARALELOS (Aula 2) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas

Leia mais

XDR. Solução para Big Data.

XDR. Solução para Big Data. XDR Solução para Big Data. ObJetivo Principal O volume de informações com os quais as empresas de telecomunicações/internet têm que lidar é muito grande, e está em constante crescimento devido à franca

Leia mais

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla Unidade III FUNDAMENTOS DE SISTEMAS OPERACIONAIS Prof. Victor Halla Conteúdo Arquitetura de Processadores: Modo Operacional; Velocidade; Cache; Barramento; Etc. Virtualização: Maquinas virtuais; Gerenciamento

Leia mais

Sistemas de Lotes (2) Sistemas de Lotes (3) Layout da MP em Sistemas de Lotes. Minimizar o tempo de resposta

Sistemas de Lotes (2) Sistemas de Lotes (3) Layout da MP em Sistemas de Lotes. Minimizar o tempo de resposta 1 Mono e multiprogramação Introdução Classificação (Aula 2) Recap Sistemas Máquina Profa. Patrícia Gerenciador D. CostaLPRM/DI/UFES Provê Fornece Compartilhamento programador máquina justa recursos Operacionais

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores Camadas de Serviço de Hardware e Software em Sistemas Distribuídos Arquiteutra de Sistemas Distribuídos Introdução Applications, services Adaptação do conjunto de slides do livro Distributed Systems, Tanembaum,

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware

Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware Sistemas Distribuídos: Conceitos e Projeto Classificação de Sistemas Distribuídos e Middleware Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA

Leia mais

Arquitetura de SGBD. Prof. Antonio Almeida de Barros Junior

Arquitetura de SGBD. Prof. Antonio Almeida de Barros Junior Arquitetura de SGBD Prof. Antonio Almeida de Barros Junior Agenda Caracterização de SGBDs SGBDs Centralizados SGBDs Cliente-Servidor SGBDs Distribuídos Homogêneos Multi-SGBDs Heterogêneos SGBDs Paralelos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com O que veremos hoje... Evolução Histórica Motivação Conceitos Características

Leia mais

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento CPU - Significado CPU Central Processing Unit Unidade Central de Processamento CPU - Função Na CPU são executadas as instruções Instrução: comando que define integralmente uma operação a ser executada

Leia mais

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite andreza.lba@gmail.com

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite andreza.lba@gmail.com Projeto de Sistemas Distribuídos Prof. Andrêza Leite andreza.lba@gmail.com Agenda Introdução Exemplos de Sistemas Distribuídos Compartilhamento de Recursos e a Web Principais Desafios para a Implementação

Leia mais

Visão do Usuário da DSM

Visão do Usuário da DSM Memória Compartilhada Distribuída Visão Geral Implementação Produtos 1 Memória Compartilhada Distribuída Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interações

Leia mais

Fundamentos de Sistemas Computacionais Introdução

Fundamentos de Sistemas Computacionais Introdução Fundamentos de Sistemas Computacionais Introdução Prof. Eduardo Alchieri Sistema Computacional Hardware Software Usuários Um ou mais processadores, memória, discos, impressoras, teclado, mouse, monitor,

Leia mais

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis.

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis. 1 Introdução O grande aumento de performance das redes de computadores, combinado com a proliferação de computadores de baixo custo e alto desempenho, trouxe à tona ambientes de meta-computação, ou grids[15,

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Balanceamento de Carga

Balanceamento de Carga 40 4. Balanceamento de Carga Pode-se entender por balanceamento de carga uma política a ser adotada para minimizar tanto a ociosidade de utilização de alguns equipamentos quanto a super utilização de outros,

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

A Evolução dos Sistemas Operacionais

A Evolução dos Sistemas Operacionais Capítulo 3 A Evolução dos Sistemas Operacionais Neste capítulo, continuaremos a tratar dos conceitos básicos com a intensão de construirmos, agora em um nível mais elevado de abstração, o entendimento

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

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

BIG DATA: UTILIZANDO A INTERNET PARA TOMADA DE DECISÕES BIG DATA: UTILIZANDO A INTERNET PARA TOMADA DE DECISÕES Alex Travagin Chatalov¹, Ricardo Ribeiro Rufino ¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil alex_tr1992@hotmail.com ricardo@unipar.br

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 4 Tipos de SO Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Os Sistemas Operacionais podem ser assim classificados: SO - Prof. Edilberto Silva

Leia mais

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron alexandre.a.giron@gmail.com Sistemas Operacionais 2014 Introdução Alexandre Augusto Giron alexandre.a.giron@gmail.com Roteiro Sistemas Operacionais Histórico Estrutura de SO Principais Funções do SO Interrupções Chamadas de Sistema

Leia mais

Sistemas Distribuídos Aula 1 Introdução

Sistemas Distribuídos Aula 1 Introdução Sistemas Distribuídos Aula 1 Introdução 35T34 3B2 Programa Introdução. Conceitos de sistemas distribuídos. Comunicação em sistemas distribuídos. Sincronização em sistemas distribuídos. Processos e processadores

Leia mais

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES 2.1 Organização de um Computador Típico : Armazena dados e programas. Processador (CPU - Central Processing Unit): Executa programas armazenados na memória, interpretando

Leia mais

ARQUITETURA TRADICIONAL

ARQUITETURA TRADICIONAL INTRODUÇÃO Atualmente no universo corporativo, a necessidade constante de gestores de tomar decisões cruciais para os bons negócios das empresas, faz da informação seu bem mais precioso. Nos dias de hoje,

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 16: Entrada e Saída: Estudo de Caso Diego Passos Última Aula Software de Entrada e Saída. Subsistema de E/S. Conjunto de camadas de abstração para realização de

Leia mais

Apresentação do Artigo

Apresentação do Artigo Apresentação do Artigo Web Search for a Planet: The Google Cluster Architecture Publicado em IEEE Micro Março 2003, pg.22-28 Luiz A.Barroso, Jeffrey Dean, Urs Hölze Frank Juergen Knaesel fknaesel@inf.ufsc.br

Leia mais

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador) Multiprocessamento Multiprocessadores com memória distribuída (multicomputador) Conjunto de processadores, cada qual com sua memória local Processadores se comunicam por troca de mensagens, via rede de

Leia mais