apresentacao

0 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
0
No SlideShare
0
A partir de incorporações
0
Número de incorporações
0
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Big Data é um grande amontoado de dados que não pode ser processado usando métodos tradicionais para processamento e análise de dados, nem mesmo um único computador é capaz de gerenciar tais quantidades de dados. 
     
    Um dos principais objetivos em Big Data é extrair informação plausível, baseado em certos padrões, que nos ajude a predizer algo em relação ao comportamento do(s) objeto(s) ao(s) qual(quais) esses dados se referem. Com isso, logo viu-se a necessidade de introduzir técnicas de aprendizagem de máquina em Big Data. Este capítulo abordará as principais características em Big Data que devem ser levadas em consideração para aplicação eficiente de técnicas de aprendizagem de máquina.
  • Big Data tem a ver com grande volume de dados com características heterogêneas e dimensões variadas, processamento distribuído, e procura explorar as relações complexas e evolutivas entre os dados. Estas características tornam a tarefa de se extrair conhecimento útil em Big Data extremamente desafiadora [12].
    Fazendo uma analogia comum, imagine que uma certa quantidade de homens cegos estão tentando avaliar um elefante gigante (Figura 2.1), que será o Big Data nesse contexto. O objetivo de cada um é chegar numa imagem (ou conclusão) do elefante de acordo com as características de cada parte que coletaram nesse processo [12].
    Como a percepção de cada um é limitada à sua região local, não é de se surpreender que cada um irá concluir independentemente que o elefante “se parece” com uma mangueira, ou uma parede, dependendo da região que cada um está apalpando. Pra tornar o problema ainda maior, vamos assumir que o elefante está crescendo rapidamente e sua posição também muda constantemente, e que os homens cegos aprendem uns com os outros, trocando informação sobre suas respectivas percepções sobre elefante [12].
    Explorar o Big Data nesse cenário é equivalente a agregar informações heterogêneas de origens diferentes (os homens cegos) para ajudar a desenhar a melhor imagem possível, revelando assim a real situação do elefante em um tempo hábil. De fato essa tarefa não é tão simples como perguntar a cada homem o que ele percebeu sobre o elefante e então um ter um especialista que irá desenhar uma única imagem com as percepções combinadas, levando consideração que cada homem deve falar uma linguagem diferente (dados variados em formato e dimensões) e que eles nem sequer se preocupam com a privacidade das mensagem que eles entregam no processo de troca de informação [12].
    Características
    1- Grande volume de dados com características heterogêneas e dimensões variadas
    2 - Fontes autônomas com controle distribuído
    3 - Relações complexas e em evolução
  • Por conta das propriedades inerentes em Big Data os conjuntos de dados são processados de forma distribuída e em larga escala seguindo o modelo clusterizado, em que as computações são executadas paralelamente em clusters de máquinas instáveis por sistemas que automaticamente fornecem agendamento local, tolerância a falhas e balanceamento de carga. Um cluster é um conjunto de máquinas ou componentes de computação, chamados de nós, que estão conectados e desacoplados, e a princípio todos os processamentos ocorrem sem troca de informação.
  • Assim, foi desenvolvido por pesquisadores do Google, um modelo de computação simples que permite descrever de forma simples o que tem que ser feito, sem se preocupar com problemas de paralelização, tolerância a erros, balanceamento de carga, etc. Esse modelo chamado MapReduce, foi inspirado nas funções de map e reduce presentes na programação funcional, introduzidas pela linguagem de programação Lisp. A idéia é simples, basta descrever a função Map, que transforma cada item lógico presente no conjunto de dados, num objeto com chave/valor, então a função reduce é usada para refinar os valores que têm a mesma chave.
     
    Em sua implementação original o ambiente MapReduce funciona da seguinte forma, as funções de Map são processadas paralelamente por cada nó ou máquina, sem comunicação com outros nós, em seguida os dados são re-particionados em todos os nós do cluster e finalmente as funções de Reduce são executadas em paralelo por cada nó da partição que ele recebeu [13]. Esse processo de Map-reparticiona-Redude pode continuar por muitos ciclos. As atribuições das tarefas aos nós são feitas em tempo de execução, assim é fácil tratar falhas de nós.
     
    O MapReduce dá suporte às características desejáveis em BigData
     
    Ambientes heterogêneos e Controle Distribuído: As tarefas/funções são executadas de forma distribuída e paralela sem dependência entre nós/máquinas.  Executa tarefas redundantes, i.e. tarefas que estão demorando muito pra serem finalizadas em nós/máquinas lentas, são redundantemente atribuídas a outros nós/máquinas ociosas, que já terminaram suas tarefas. O nó que primeiro terminar a execução da tarefa, determina o resultado e o tempo.
     
    Tolerância a falhas: Detecta e redireciona as tarefas de nós falhos para os que estão funcionando a todo vapor.
     
    Relações complexas e em evolução: Não lida bem com relações complexas, pois a forma de perceber relacionamentos entre indivíduos é através do compartilhamento das mesmas amostra-características, que no caso seria a chave/valor.  A descrição dos indivíduos segue o modelo descrito pelas funções de Map e Reduce. E não dá suporte a comunicação entre os nós/máquinas.
     
    Interface do usuário: As funções de Map e Reduce podem ser descritas em qualquer linguagem de propósito geral, mas não aceita declarações SQL na maioria dos sistemas baseados em MapReduce.
  • Referencias:
    http://www.extropia.com/tutorials/unix/Images/grep.gif
    https://acom.azurecomcdn.net/80C57D/cdn/mediahandler/docarticles/dpsmedia-prod/azure.microsoft.com/en-us/documentation/articles/app-insights-api-custom-events-metrics/20160609050937/appinsights-47usage-2.png
    https://saush.files.wordpress.com/2009/03/se02.png?w=300&h=223
  • A camada com o MapReduce segue uma arquitetura mestre-escravo simples. O mestre é um único JobTracker e os escravos ou nós workers são os TaskTrackers. O JobTracker cuida do agendamento das tarefas MapReduce em tempo de execução e mantém informação em cada carregamento e recurso disponívei dos TaskTrackers. Cada tarefa é decomposta em tarefas Map com base no número de blocos de dados que requerem processamento e tarefas Reduce. O JobTracker atribui tarefas aos TaskTrackers com base na localização e no balanceamento de carga. Ele suporta localidade, combinando um TaskTracker com tarefas Map que processam os mesmos dados locais. Este equilibra a carga garantindo que todos os TaskTrackers disponíveis têm tarefas atribuídas [13]. 
     
    Existe uma biblioteca chamada InputFormat que é uma interface entre as camadas de armazenamento e processamento. Esta interface analisa os arquivos de texto/binário e transforma os dados para o formato de pares chave-valor para que as tarefas Map possam processar. Hadoop é geralmente usado para executar pesquisas ad-hoc em grandes conjuntos de dados via interfaces SQL [13].
    Ambientes heterogêneos e Controle Distribuído: Através de JobTrackers e  TaskTrackers com balanceamento de carga
     
    Tolerância a falhas: Detecta e redireciona as tarefas de nós falhos para os que estão funcionando a todo vapor.
     
    Relações complexas e em evolução: TaskTrackers atualizam os JobTrackers regularmente sobre seus status através da troca de mensagens.
     
    Interface do usuário: Possível usar SQL e uma linguagem de propósito geral para as funções Map e Reduce
  • O Spark suporta operações em working sets - áreas da memória alocadas em um dado intervalo de tempo - enquanto suporta as mesmas propriedades de escalabilidade a tolerância a falhas do MapReduce. A principal abstração do Spark é a idéia de conjunto de dados distribuídos e resilientes - RDDs, que representa um uma coleção de dados, apenas para leitura e particionados em um conglomerado de máquinas, e estes podem ser reconstruídos caso uma partição seja perdida [6].
    Os usuários podem armazenar em cache explicitamente um RDD em memória através de máquinas e reutilizá-lo em várias operações paralelas como o MapReduce. O RDD alcança tolerância a falhas através de uma noção de linhagem: se uma partição de uma RDD é perdida, o RDD tem informação suficiente sobre como ele foi derivado de outros RDDs para ser capaz de reconstruir apenas nessa partição. [6] Embora RDDs não sejam uma abstração de memória partilhada genérica, eles representam um doce-ponto entre expressividade, por um lado e escalabilidade e resiliência, por outro, e eles são adequados para uma variedade de aplicações [6].
    Spark integra com a linguagem Scala e é o primeiro sistema a permitir que uma linguagem eficiente de programação de propósito geral possa ser usada de forma interativa para processar grandes conjuntos de dados em um cluster.
     
    Ambientes heterogêneos e Controle Distribuído: Através de duas abstrações principais RDDs e operações paralelas nesses RDDs, invocadas através da passagem de uma função a ser aplicada em um RDD. Também integra com o HDFS.
     
    Tolerância a falhas: Os elementos de um RDD não precisam existir em uma armazenamento físico, ao invés, o identificador de um RDD contém informação suficiente para gerar o RDD a partir de dados que estão em um armazenamento confiável. Isto significa que RDDs podem ser reconstruídos sempre se as máquinas-nós falharem.  
     
    Relações complexas e em evolução: Usa variáveis compartilhadas que podem ser usadas nas funções que rodam no cluster, existem dois tipos as variáveis de broadcast e acumuladoras , as de broadcast são pra garantir que cada objeto é copiado para cada máquina-worker uma vez.
     
    Interface do usuário: Integra com o interpretador de Scala, o fluxo de uso principal é, o desenvolvedor escreve uma programa Driver que implementa o controle de fluxo se sua aplicação e executa várias operações em paralelo, as principais são reduce, collect e foreach.
  • Criar técnicas e plataformas que englobam uma grande quantidade de algoritmos de aprendizagem de máquina no ambiente BigData, e que trabalhem com poucos recursos.
  • apresentacao

    1. 1. Técnicas de Aprendizagem Distribuída em BigData Karla Falcão 08 de Junho de 2016
    2. 2. Roteiro  Introdução e motivação  Conceitos básicos  Características do ambiente BigData  Técnicas de aprendizagem distribuída  Conclusões
    3. 3. Motivação
    4. 4. Quantidade gigantesca de dados. Análise e predição condizente com a realidade Processamento dos dados quase instantâneo Dados com características diferentes entre eles. Características do ambiente BigData
    5. 5. Características (Análise e Predição)
    6. 6. Técnicas de Aprendizagem
    7. 7. Técnicas - MapReduce
    8. 8. Técnicas - MapReduce REDUCE <palavra2, frequencia :1> REDUCE <palavra3, frequencia :1>
    9. 9. MapReduce - Exemplos
    10. 10. Técnicas de aprendizagem - Hadoop
    11. 11. Técnicas de aprendizagem - Spark
    12. 12. Técnicas de aprendizagem - Petuum
    13. 13. Tendências Futuras
    14. 14. Conclusões  Entendimento das utilidades das técnicas de aprendizagem em BigData.  Características presentes em BigData  MapReduce: A principal técnica para extração de informação.  Hadoop, Spark e Petuum: Os principais sistemas de processamento em BigData que suportam e extendem o MapReduce.
    15. 15. Perguntas? Karla Falcão

    ×