Marcos Haraoka Morais [email protected] Big Data © 2015 IBM Corporation Agenda Big Data Hadoop HDFS YARN MapReduce Spark Spark SQL Spark Streaming GraphX MLlib (SystemML) SparkR 2 © 2015 IBM Corporation Big Data • Recomendações • “House of Cards” • Estratégia de negócio 3 © 2015 IBM Corporation Big Data • Recomendações • Logística 4 © 2015 IBM Corporation Big Data • Ferramentas “grátis” 5 © 2015 IBM Corporation Big Data “Vou xingar no Twitter hoje, muito” by fã do Restart 6 © 2015 IBM Corporation Big Data – Os 3 V’s Variedade, Volume, Velocidade Fatos A cada dois dias criamos a mesma quantidade de dados que criamos desde o início até 2003 Mais de 80% dos dados não são estruturados 7 © 2015 IBM Corporation Big Data RDBMS 8 © 2015 IBM Corporation Big Data A A A 9 © 2015 IBM Corporation Big Data A A A A A A A A A 10 © 2015 IBM Corporation O que é Hadoop? Projeto de software open-source que permite processamento distribuído de grande conjuntos de dados. Componentes principais: HDFS (Hadoop Distributed File System) YARN (Yet Another Resource Negotiator) MapReduce Outros projetos Apache: Hive (SQL) Storm (Streaming) Mahout (Machine Learning) Giraph (Grafos) 11 © 2015 IBM Corporation MapReduce Modelo de programação que permite o processamento de dados massivos em um algoritmo paralelo e distribuído em um cluster de computadores Divisão e conquista 3 fases Map Suffle Reduce 12 © 2015 IBM Corporation MapReduce - MAP 13 © 2015 IBM Corporation MapReduce - MAP São Paulo 20 Goiania 31 Curitiba 8 Natal 35 MAP Goiania 27 Natal 20 São Paulo 13 São Paulo Goiania Curitiba Natal MAP Goiania Natal São Paulo 14 22 32 6 25 28 24 14 São Paulo 24 Goiania 33 Curitiba 10 Natal 36 MAP Goiania 29 Natal 28 São Paulo 15 São Paulo 26 Goiania 34 Curitiba 4 Natal 37 MAP 30 Goiania Natal 40 São Paulo 17 São Paulo Goiania Curitiba Natal MAP Goiania Natal São Paulo 28 35 12 26 32 32 16 © 2015 IBM Corporation MapReduce - MAP MAP 15 São Paulo 26 Goiania 34 Curitiba 4 Natal 40 São Paulo Goiania Curitiba Natal Goiania Natal São Paulo 26 34 4 37 30 40 17 © 2015 IBM Corporation MapReduce – SHUFFLE/SORT São Paulo 20 Goiania 31 Curitiba 8 Natal 35 São Paulo 22 Goiania 32 Curitiba 6 Natal 25 16 São Paulo Goiania Curitiba Natal 24 33 10 36 São Paulo 26 Goiania 34 Curitiba 4 Natal 40 São Paulo Goiania Curitiba Natal 28 35 12 32 © 2015 IBM Corporation MapReduce - REDUCE São Paulo São Paulo São Paulo São Paulo São Paulo Goiania Goiania Goiania Goiania Goiania 17 32 31 33 34 35 20 24 22 28 26 Curitiba Curitiba Curitiba Curitiba Curitiba Natal Natal Natal Natal Natal 6 8 4 10 12 25 35 36 32 40 R E D U C E R © 2015 IBM Corporation MapReduce - REDUCE R E Paulo D ba nia U C E R 18 28 12 35 40 R E D U C E R © 2015 IBM Corporation Vantagens do Hadoop • Múltiplas fontes de dados Escala ilimitada • Múltiplas aplicações • Múltiplos usuários • Confiabilidade • Resiliência Plataforma Empresarial • Segurança Vasta gama de formato de dados 19 • Arquivos • Semi-estruturados • Banco de dados © 2015 IBM Corporation Desafios do Hadoop MapReduce • Profundo conhecimento Java • Poucas abstrações disponíveis para analistas Facilidade no desenvolvimento • Sem framewok In-memory Performance In-memory • Adequado apenas para tarefas em batch • Modelo de processamento rígido 20 • Tarefas de aplicativo são escritas no disco a cada ciclo Combina fluxos de trabalho © 2015 IBM Corporation O que é Spark? Apache Spark é um sistema de computação em cluster rápido, de propósito geral e de fácil utilização para processamento de dados em larga escala Mais rápido do que o MapReduce Três formas de funcionamento: • Standalone • Em conjunto com o Hadoop • Cloud Projeto mais ativo na comunidade Apache 21 © 2015 IBM Corporation Vantagens do Spark • APIs simples • Python, Scala, Java Performance In-memory • Batch • Interativo • Algoritmos iterativos • Micro-batch 22 Facilidade no desenvolvimento • Resilient Distributed Datasets • Processamento unificado Fluxos de trabalho combinados © 2015 IBM Corporation Facilidade no desenvolvimento Código Java MapReduce: public class LineLengthMapper extends Mapper<LongWritable,Text,IntWritable,IntWritable> { @Override protected void map(LongWritable lineNumber, Text line, Context context) throws IOException, InterruptedException { context.write(new IntWritable(line.getLength()), new IntWritable(1)); } } public class LineLengthReducer extends Reducer<IntWritable,IntWritable,IntWritable,IntWritable> { @Override protected void reduce(IntWritable length, Iterable<IntWritable> counts,Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable count : counts) { sum += count.get(); } context.write(length, new IntWritable(sum)); } } 23 © 2015 IBM Corporation Facilidade no desenvolvimento Código Scala Spark: lines.map(line => (line.length, 1)) val lengthCounts = lines.map(line => (line.length, 1)).reduceByKey(_ + _) 24 © 2015 IBM Corporation Vantagens do Spark • APIs simples • Python, Scala, Java Performance In-memory • Batch • Interativo • Algoritmos iterativos • Micro-batch 25 Facilidade no desenvolvimento • Resilient Distributed Datasets • Processamento unificado Fluxos de trabalho combinados © 2015 IBM Corporation Performance In-memory Resilient Distributed Dataset (RDD) RDD Transformations textfile map 26 reduce HDFS HDFS map Actions reduce © 2015 IBM Corporation Performance In-memory Hadoop Spark Quantidade de dados 102.5 TB 100 TB Tempo 72 mins 23 mins 3.1 X < # Nós 2100 206 10.2 X < # Cores 50400 6592 7.6 X < # Reducers 10,000 29,000 2.9 X > 1.42 TB/min 4.27 TB/min 3.0 X > 0.67 GB/min Data center dedicado 20.7 GB/min Cloud 30.9 X > On-prem/Cloud Taxa Taxa/nó Ambiente Comparação Daytona GraySort contest 2014 27 © 2015 IBM Corporation Vantagens do Spark • APIs simples • Python, Scala, Java Performance In-memory • Batch • Interativo • Algoritmos iterativos • Micro-batch 28 Facilidade no desenvolvimento • Resilient Distributed Datasets • Processamento unificado Fluxos de trabalho combinados © 2015 IBM Corporation Fluxos de trabalho combinados - Bibliotecas Spark Interativa (SQL) Grafos (relacionamento) Machine Learning Tempo real Spark SQL Spark Streaming Estatística GraphX MLlib SparkR Apache Spark 29 © 2015 IBM Corporation Flexibilidade do Spark sobre uma plataforma Hadoop estável 30 Escala ilimitada Facilidade no desenvolvimento Performance In-memory Plataforma Empresarial Vasta gama de formato de dados Fluxos de trabalho combinados © 2015 IBM Corporation Casos de Uso Utilizado para o entendimento dos tipos de produto que seus usuários estão vendendo com o objetivo de selecionar lojas para uma possível parceria de negócio. Optou pelo Spark após seu data warehouse ter problemas de time out rodando consultas na base. Utilizado para a criação de um mapa de calor para visualização de dados importantes como a velocidade média dos taxis, onde os piores congestionamentos acontecem em NY, auxiliando na melhoria do tráfego nessas áreas problemáticas e aumentando a eficiência das companhias de taxi 31 © 2015 IBM Corporation Casos de Uso Ajudando na personalização das páginas do domínio Yahoo!, mostrando o que mais interessa ao usuário, baseado em seus hábitos. Utiliza o Spark no sistema de recomendações para os usuários oferecendo conselhos obtidos do processamento de milhões de reviews de viajantes Utiliza o Spark Streaming para selecionar e otimizar dinamicamente as fontes, enquanto o vídeo está sendo reproduzido, para maximizar a qualidade. 32 © 2015 IBM Corporation “Big Data will be standard: everyone will have it.” Matei Zaharia, criador do Apache Spark 33 © 2015 IBM Corporation