BIG DATA NA PRÁTICA MARCELO NAGY CICLO DE PALESTRAS EM TI Marcelo Nagy Formação Tecnologias Big Data A era das grandes massas de dados já começou. Usuários são agora fontes de dados. Empresas armazenam incontáveis informações de clientes e milhões de sensores monitoram o mundo real, criando e trocando dados na Internet das coisas. Uma variedade de informações é gerada não só por cientistas, empresas e governos, como acontecia antes, mas também pela população em geral. As arquiteturas em nuvem obrigam indivíduos e organizações a lidam com um verdadeiro dilúvio de dados. Estes dados são úteis ? Estes dados estão correlacionados ? Como garimpar informações destes dados ? Aumento dos dados armazenados estimados pela IDC Fonte: IDC’s Digital Universe Study, patrocinado pela EMC, Junho de 2011 Armazenamento em exabytes Curiosidades 20 gigabytes tem a coleção de trabalhos do Beethoven 2 terabytes em média uma biblioteca acadêmica 11 petabytes total de mensagens de correio eletrônico em um ano 5 exabytes total de palavras ditas pelos humanos 200 petabytes todo material impresso no mundo Escalas 3 V's Velocidade Volume Variedade Volume + variedade + velocidade de geração de dados são os elementos que compõe o Big Data. Possibilidade de localizar, peneirar e analisar informações úteis. A proposta ambiciosa do Big Data é ajudar empresas a decidir com base em evidências e analisadas continuamente. 3 V's Os sistemas tradicionais atuais não estão preparados para tratar certas coleções de dados: A previsão é que passaremos da faixa de muitos gigabytes (bilhões de bytes) ou poucos terabytes (trilhões) para a faixa de petabytes (milhares de trilhões) ou até mesmo exabytes (milhões de trilhões). Um disco rígido comum tem atual mente em torno de 1 terabyte. O LHC, o maior acelerador de partículas do mundo armazena 15 petabytes por ano de dados na forma original. É o equivalente a 15 mil discos rígidos cheios. Velocidade significa que esses dados são enviados aos nossos sistemas com uma taxa de bytes por intervalo de tem po muito alta. Como saber o que guardar e guardar cada vez mais rápido é o desafio! Guardar informação qualquer que seja permite que, mais tarde, exista uma disponibilidade que pode ser aproveitada em uma oportunidade não identificada previamente. Uma das principais aplicações de ter à disposição uma grande quantidade de dados é descobrir algo novo. Analisando e criando um modelo de execução a partir de exemplos, podemos fazer com que um computador ‘aprenda’ a reconhecer padrões ou fazer previsões. 3 V's Os dados gerados ultrapassam significativamente as capacidades de armazenamento das estruturas. Desta forma, se torna imprescindível a concepção de novos procedimentos para o tratamento de dados. Não é descartada a possibilidade de que novas observações sejam feitas com relação aos mesmos dados. Para comparar todos os pares de uma coleção qualquer (nomes, CPFs, número de telefones, compras, endereços etc.), precisamos gastar um tempo proporcional ao quadrado da quantidade de dados. Variedade significa que os dados aparecem em formas diferentes, facilmente descritos na forma de tabelas, textos, imagens, etc. Precisamos melhorar nossos algoritmos, buscar soluções aproximadas – caso contrário, o processamento se torna inviável. Soluções paralelas permitem desempenho superlinear, isto é, o aumento de velocidade é maior do que o aumento do número exigido de processadores. Exemplos de classificação de Big Data • Uma apresentação de 40 megabytes representa uma grande massa de dados se não for possível enviá­la por correio eletrônico a um colega ou cliente; • Uma imagem médica de 1 terabyte representa uma grande massa de dados se não for possível exibi­la de forma simples e acurada em uma tela remota em tempo real durante uma consulta médica com um paciente; • Um filme de 1 petabyte representa uma grande massa de dados se não for possível editálo a tempo. Big Data no comércio Quantas informações são geradas em cada venda em uma rede de supermercados? E se essas informações forem cruzadas com mensagens em redes sociais sobre mercados, produtos, receitas e notícias na mídia e de cartão de crédito? Raciocinando dessa forma, sistemas que analisam toda essa informação permitem a obtenção tanto de perfis de consumo individualizados quanto da experiência de compra do cliente e seus gastos. Big Data na indústria Um dos fatores que aumentaram a quantidade de dados foi a multiplicação dos sensores de vários tipos de câmeras de alta definição a simples contadores ou termômetros. A maioria das casas já tem equipamentos que fornecem informação aos seus produtores ou provedores de serviço, como computadores, equipamentos de TV a cabo e celulares. Já temos geladeiras ligadas à internet,para informar seu estado ou ritmo de consumo. Isto mostra que Big Data já esta bem próximo do nosso dia a dia. Big Data no Brasil No Brasil, em especial, a indústria de petróleo é grande criadora de dados. Em dezembro do ano passado, o Banco de Dados de Exploração, mantido pela Agência Nacional de Petróleo (ANP), continha 4,57 petabytes. Os dados desse banco da ANP são usados por várias empresas de petróleo, que produzem ainda mais informação.A partir deles, são gerados imagens e filmes que são analisados e geram textos e relatórios, que, por sua vez, geram investimentos financeiros, movimentos da bolsa e notícias na mídia. Como país de grandes proporções e com uma população de aproximadamente 200 milhões de pessoas, algumas bases de dados aqui já traziam problemas de Big Data antes que esse nome fosse criado. Desafios i) Como adquirir; ii) Armazenar; iii) Processar; iv) Transmitir e disseminar; v) Gerenciar e manter; vi) Arquivar por longo prazo; vii) Garantir a segurança; viii) Treinar pessoas para usá­los; ix) Pagar por tudo isso. Ainda podemos adicionar a esses desafios, como entendê­los de forma isolada e como relacioná­los. Desafios Um desafio importante é entender como esses dados evoluem. Essa tarefa criará, em 2015, segundo a grande empresa norte­americana de consultoria Gartner Group, cerca de 4,4 milhões de empregos muitos deles para profissionais capacitados a analisar esses dados, em um mercado mundial avaliado, já para este ano, em US$ 34 bilhões (cerca de R$ 70 bilhões). Grandes empresas de computação já orientam suas linhas de produtos e serviços para atender a esse mercado. Uma questão crítica é como armazená­los de forma que possam ser rapidamente encontrados e manipulados.Um dos grandes desenvolvimentos tecnológicos em computação do século passado foram os Sistemas de Gerenciamento de Banco de Dados (SGBDs). Desafios São eles que permitem que tratemos de forma eficiente milhões de contas bancárias e outros sistemas que basicamente fazem o gerenciamento de transações. Os SGBDs compartilham uma linguagem chamada SQL (sigla, em inglês, para linguagem de consulta estruturada), e o modo de organizar essas tabelas para condições ótimas de acesso é bem conhecida. Com novos tipos de dados, essa tecnologia não é eficiente. Para alguns, o caminho parece ser o que denominamos bancos de dados No­SQL ou outros ainda mais especializados. Desafios Outro caminho é a paralelização do processamento. Essa paralelização se dá em muitos níveis, como um computador com vários processadores (chips); em processadores com vários núcleos; ou pela união de computadores para formar uma rede que age como um supercomputador, por exemplo. Há ainda a opção do processamento em nuvem. Propostas como o programa livre Hadoop baseado no MapReduce, um dos mecanismos que fazem o Google funcionar permitem que um problema seja dividido por várias máquinas e, depois, tenha seu resultado agregado em uma máquina central. Exemplos No Japão, uma rede de milhares de sensores permite detectar terremotos e avisar a população. Empresas de cotação de preços, bem como as de vendas pela internet, analisam o perfil dos clientes, para dar sugestões de consumo. Instituições financeiras e governos avaliam milhões de transações financeiras em busca de fraudes. Ética e Big Data Não podemos deixar de lembrar que Big Data também traz à tona novos problemas éticos. O que empresas e governos fazem com tantos dados privados? Que informação pode ser deduzida a partir de dados? O uso das informações que estamos guardando e analisando pode ter resultados não desejados. É famosa a história do caso de um pai que descobriu, por meio da propaganda direcionada de uma rede norte­americana de lojas de varejo, que sua filha adolescente estava grávida fato que havia sido detectado pelos algoritmos da empresa. Ética e Big Data A disponibilidade dessas grandes bases de dados e a viabilidade de sua interligação permitem que imaginemos aplicações que salvam ou prejudicam vidas. Fazer um julgamento ético ou moral de uma tecnologia não é questão simples. Melvin Kranzberg (1917­1995), que disse: “A tecnologia não é boa nem é má, nem é neutra”. Não devemos esquecer o ditado que diz: informação é poder. Clusters Uma solução para agilizar e viabilizar a análise das grandes massas de dados é a partir das arquiteturas em aglomeração (cluster). Escalabilidade, a agilidade e a elasticidade dos recursos são pré­requisitos muito importantes para a análise das grandes massas de dados. Uma questão chave, entretanto, é como as arquiteturas em aglomeração podem atingir todas essas características. Considerando, por exemplo, que a Google possua milhões de núcleos de processadores em todos os seus centros de dados, apesar desses componentes falharem com frequência, componentes redundantes fazem com que essas falhas sejam imperceptíveis aos usuários. Hadoop O Hadoop foi desenvolvido para aproveitar os recursos e a estrutura disponível em uma arquitetura em aglomeração (cluster). O objetivo é possibilitar que as aplicações utilizem todo o potencial de um aglomerado ao levar em consideração dois pontos chave: (i) a distribuição dos dados pelo aglomerado, assegurando que os dados estejam distribuídos igualmente; (ii) o desenvolvimento de aplicações que se beneficiem da localização dos dados. Hadoop Esses dois pontos fundamentais levam o projeto do Hadoop a empregar dois mecanismos: Sistema de Arquivos Distribuído (Hadoop Distributed File System ­ HDFS) que é um sistema de arquivos para dividir, espalhar, replicar e gerenciar dados ao longo dos nós em um cluster; Namenode Datanode Hadoop O MapReduce que é um mecanismo computacional para executar aplicações em paralelo. As aplicações são executadas através da divisão em tarefas que manipulam apenas uma parcela dos dados, coletando e redistribuindo resultados intermediários e gerenciando falhas através de todos os nós do aglomerado. JobTracker Coordena todas as tarefas executadas no sistema através da divisão da tarefa em rotinas e para agendar cada uma dessas tarefas para serem executadas em um nó. O JobTracker também mantém informações de todos os nós participantes da computação, monitora os status individuais, orquestra o fluxo de dados e se encarrega de contornar as falhas dos nós; TaskTracker Executam tarefas e enviam relatórios de progresso ao JobTracker. Caso a tarefa falhe, o JobTracker pode reagendá­la em um TaskTracker diferente. O TaskTracker mantém informacões de todas as tarefas em execução em seus nós, seja uma tarefa de mapeamento ou redução. Instalação do Hadoop Instalação de um pseudo cluster em uma máquina linux. Alterar os hosts das máquinas para as máquinas poderem se conectar. Instalar o ssh nas máquinas do cluster. Configurar o repositório da cloudera no linux. Instalando sudo apt­get install hadoop­0.20­ conf­pseudo Instala o core do hadoop configurado para rodar em uma máquina. sudo ­u hdfs hdfs namenode ­ format Formata o NameNode os metadados do nameNode ficam na pasta /var/lib/hadoop­ hdfs/cache/hdfs/dfs/name Configurar o alternatives /etc/hadoop/conf link simbólico para /etc/alternatives/hadoop­conf Instalação do Hadoop $ for service in /etc/init.d/hadoop­ hdfs­* do sudo $service start done iniciar os serviços da hdfs criar a pasta temporária do hdfs $ sudo ­u hdfs hadoop fs ­mkdir /tmp alterar a permissão da pasta para que todos o componentes do hadoop possam utilizá­la $ sudo ­u hdfs hadoop fs ­chmod ­ R 1777 /tmp criar as pastsas que o mapReduce utilizam e dar suas permissões $ sudo ­u hdfs hadoop fs ­mkdir \ /var/lib/hadoop­ hdfs/cache/mapred/mapred/staging Instalação do Hadoop $ sudo ­u hdfs hadoop fs ­chmod 1777 \/var/lib/hadoop­ hdfs/cache/mapred/mapred/staging $ sudo ­u hdfs hadoop fs ­chown ­ R \mapred /var/lib/hadoop­ hdfs/cache/mapred for service in /etc/init.d/hadoop­ 0.20­mapreduce­* do sudo $service start done iniciar os serviços do MapReduce sudo jps verificar os serviços comandos básicos $ hadoop fs ­mkdir input $ hadoop fs ­put shakespeare.txt input $ hadoop fs ­ls input $ hadoop fs ­tail input/shakespeare.txt Flume O flume é utilizado para inserir logs no hdfs em real time. Implementa transações. Instalando o flume sudo apt­get install flume­ng Criando a pasta no hdfs que receberá os logs hadoop fs ­mkdir flume/collector1 Criando o arquivo de configuração do flume /etc/hadoop/conf/ flume­conf.properties Flume conteúdo do arquivo tail1.sources = src1 tail1.channels = ch1 tail1.sinks = sink1 tail1.sources.src1.type = exec tail1.sources.src1.command = tail ­ F /tmp/access_log tail1.sources.src1.channels = ch1 tail1.channels.ch1.type = memory tail1.channels.ch1.capacity = 500 tail1.sinks.sink1.type = avro tail1.sinks.sink1.hostname = localhost tail1.sinks.sink1.port = 6000 tail1.sinks.sink1.batch­size = 1 tail1.sinks.sink1.channel = ch1 ## collector1.sources = src1 collector1.channels = ch1 collector1.sinks = sink1 collector1.sources.src1.type = avro collector1.sources.src1.bind = localhost collector1.sources.src1.port = 6000 collector1.sources.src1.channels = ch1 collector1.channels.ch1.type = memory collector1.channels.ch1.capacity = 500 collector1.sinks.sink1.type = hdfs collector1.sinks.sink1.hdfs.path = flume/collector1 collector1.sinks.sink1.hdfs.filePrefix = access_log collector1.sinks.sink1.channel = ch1 Flume Startar o flume sudo service flume­ng­agent start sudo hadoop fs ­ls flume/collector1 Scoop Instalando Scoop sudo apt­get install scoop Criar um link simbolico para o jdbc que o scoop ira' utilizar. sudo ln ­s /usr/share/java/mysql­connector­java.jar /usr/lib/sqoop/lib/ Scoop importa/exporta dados de um banco de dados relacional. Utiliza de um JDBC para se conectar a uma base de dados. sqoop import ­­connect jdbc:mysql://localhost/movielens ­­table movie ­­fields­terminated­by '\t' ­­username training ­­password training MapReduce cat /my/log | grep '\.html' | sort | uniq –c > /my/outfile 1­ mapeamento 2­ordenacao 3­reduce MapReduce exemplo contador de palavras 1­entrada the cat sat on the mat the aardvark sat on the sofa 2­dados intermediarios (the, 1), (cat, 1), (sat, 1), (on, 1), (the, 1), (mat, 1), (the, 1), (aardvark, 1), (sat, 1), (on, 1), (the, 1), (sofa, 1) MapReduce 3­entrada no reducer (aardvark, [1]) (cat, [1]) (mat, [1]) (on, [1, 1]) (sat, [1, 1]) (sofa, [1]) (the, [1, 1, 1, 1]) MapReduce 4­saida do reducer (aardvark, 1) (cat, 1) (mat, 1) (on, 2) (sat, 2) (sofa, 1) (the, 4) sudo hadoop jar seujar.java /diterotrio/hdfs/entrada /diterotrio/hdfs/saida Hive Criado pelo facebook. Hive foi criado para aproveitar o conhecimento previo em Sql. Suporta somente instrucoes de select, não realiza updates nem deletes. Transforma uma hiveQuery em um job MapReduce. Para o Hive Hive uma pasta no hdfs e' vista como uma tabela. Com o Hive e' possível unir diferentes bases. Os arquivos dentro da pasta em questao serao os dados da tabela. Intalando o hive sudo apt­get install hive­metastore sudo service hive­metastore start shell hive hive Impala Projeto apache.O impala utiliza hiveQuery, é cerca de 20 X mais rápido que o hive. O impala não utiliza jobs mapreduce. instalar o impala instalar o server em todos os datas nodes: sudo yum install impala­server sudo service impala­server start instalar o impala meta­store em uma máquina: sudo apt­get install impala­state­ store sudo service impala­state­store start Instalar o shel do impala em uma ou mais ma'quinas: sudo yum install impala­shell impala­shell PIG Criado pelo yahoo. Abstracao em alto nivel de MapReduce. Linguagem similar ao Perl e Ruby. Maior facilidade para se criar MapReduces. Instalando o Pig sudo install pig Exemplo de codigo pig movies = LOAD '/data/films' AS (id:int, name:string, year:int); ratings = LOAD '/data/ratings' AS (movie_id: int, user_id: int, score:int); jnd = JOIN movies BY id, ratings BY movie_id; recent = FILTER jnd BY year > 1995; srtd = ORDER recent BY name DESC; justafew = LIMIT srtd 50; STORE justafew INTO '/data/pigoutput'; para rodar um script pig pig ­f seuScript.pig Solr Base de dados totalmente customizável, ferrammenta especializada, faz melhor o trabalho para buscas textuais. Performance melhor. Solr entende diferentes línguas. Solr tem funcoes especiais para buscas de texto ex. Highlighting. Busca com relevancia. Busca geoespacial. Redis Base de dados que trabalha como hash Consulta rapida aguenta muitas requisicoes. Excelente para implementar contadores e filas. Temas relacionados Ozzie Yarn Hue Presto Mahout Ciclo de vida dos dados geração agregação análise apagamento