51
Big Data para programadores convencionais Conceitos para quem começa agora! Fonte: EMC²

Big data para programadores convencionais

Embed Size (px)

DESCRIPTION

Big data para programadores convencionais

Citation preview

Page 1: Big data para programadores convencionais

Big Data para programadores convencionais

Conceitos para quem começa agora!

Fonte: EMC²

Page 2: Big data para programadores convencionais

Quem sou eu?

• Milton Goya

• Especialista em Banco de Dados e Business Inteligence.

• Bacharel em Administração de Empresas e Tecnólogo em Processamento de Dados.

• SERPRO, Banco Itaú, Banco Bradesco, Estrela.

• Mainframe, DBA, Professor e Instrutor.

Page 3: Big data para programadores convencionais
Page 4: Big data para programadores convencionais

Big Data não é novidade!

• Há décadas temos necessidade de processar grandes volumes de dados.

• Astronomia, geologia, oceanografia, meteorologia sempre trabalharam com grande quantidade de dados.

Page 5: Big data para programadores convencionais

Big Data não é novidade!

• O processamento exige hardware específico, softwares e desenvolvedores com habilidades analíticas específicas.

• Aumento pela demanda por hardware de baixo custo e softwares que pudessem ser desenvolvidos por programadores com habilidades de programação convencional.

Page 6: Big data para programadores convencionais

Fonte: EMC²

Page 7: Big data para programadores convencionais

Fonte: IDGNow

Page 8: Big data para programadores convencionais

O que é Big Data

Fonte: EMC²

Page 9: Big data para programadores convencionais

O que é Big Data • Segundo o McKinsey Global Institute [2011],

Big Data refere-se:

– “ao conjunto de dados cujo tamanho está além da capacidade de análise, captura, armazenamento e gerenciamento de uma ferramenta desenvolvida por um software típico”

Page 10: Big data para programadores convencionais

O que é Big Data

Fonte: EMC²

Page 11: Big data para programadores convencionais

O que é Big Data • Big Data não deve ser definido em número de

terabytes ou petabytes. A quantidade de bytes pode mudar dependendo:

– do tipo de dados

– do setor onde a tecnologia está sendo aplicada ou

– da própria evolução da tecnologia.

Fonte: QlikView

Page 12: Big data para programadores convencionais

O que é Big Data

Fonte: EMC²

Page 13: Big data para programadores convencionais

O que é Big Data

Fonte: EMC²

Page 14: Big data para programadores convencionais

O que é Big Data

• O termo Big Data implica no uso de metodologias e ferramentas para processamento e análise de dados que possam produzir resultados úteis que não possam ser deduzidas/calculadas, de maneira eficiente, através de outros métodos.

Fonte: EMC²

Page 15: Big data para programadores convencionais

O que é Big Data

Fonte: EMC²

Page 16: Big data para programadores convencionais

Declaração de problema

• Como processar Big Data usando o estado-da-arte da tecnologia atual sem “estourar” o limite de tempo e o orçamento?

Fonte: EMC²

Page 17: Big data para programadores convencionais

Onde está o “gargalo”?

• Velocidade das CPUs esta cada vez maior mas...

• A velocidade de acesso a disco, ou volumes de discos ainda é lenta.

• O aumento da velocidade de CPU não beneficia muito os programas que tem necessidade de acessar grandes volumes de dados.

Fonte: Oracle

Page 18: Big data para programadores convencionais

Procurando soluções • As linguagens de

programação modernas suportam conceitos de multiprogramação, tais como multi-threading implementados como bibliotecas (por exemplo, pthreads POSIX) para C++ ou buit-in em Java.

• Os modelos de programação paralela podem ser utilizados para reduzir o tempo de processamento ou manipulação de grandes volumes de dados.

Fonte: Oracle

Page 19: Big data para programadores convencionais

Operações em Paralelo • Operações não sequenciais são quebradas em

múltiplos chunks que são executadas simultaneamente em várias CPUs da mesma máquina.

• O programa deve ser modelado para tirar proveito do processamento em paralelo.

Fonte: Oracle

Page 20: Big data para programadores convencionais

Operações em Paralelo • Operações em paralelo aumentam a complexidade

do código. – Coordenação de tarefas concorrentes: como prevenir que

tarefas concorrentes interfiram umas nas outras.

– Paralelização de algoritmos: nem todo algoritmo pode ser paralelizado.

– Sincronização e bloqueio de memória compartilhada: protegida por locks ou semáforos para evitar a corrupção de dados.

Fonte: Oracle

Page 21: Big data para programadores convencionais

SQL

• SQL padrão é a forma mais comum de manipulação de dados transacionais.

• Há anos os SGBD Oracle, DB2 e SQLServer permitem executar operações de consulta e carga em paralelo.

• Entretanto as consultas paralelas estão restritas ao mesmo nó.

Fonte: Oracle

Page 22: Big data para programadores convencionais

MapReduce

Fonte: EMC²

Page 23: Big data para programadores convencionais

MapReduce • Segundo a IBM [2009], MapReduce é um

– “Modelo de programação que permite o processamento de dados massivos em um algoritmo paralelo e distribuído, geralmente em um cluster de computadores.”

• MapReduce é baseado nas operações de Map e Reduce de linguagens funcionais como o LISP.

Fonte: IBM

Page 24: Big data para programadores convencionais

MapReduce

• Trata os dados como um conjunto de pares <Key, Value>. (chave/valor)

• As operações de entrada leem os dados e geram os pares <Key, Value>

• O usuário fornece duas funções Map e Reduce, que são chamadas em tempo de execução.

Page 25: Big data para programadores convencionais

MapReduce • Map:

– Obtêm uma lista de pares <Key, Value>, processa os pares e gera um conjunto de de pares <Key, Value> intermediário.

– Repassa o valor intermediário para a função Reduce.

– Cada par é processado em paralelo.

Page 26: Big data para programadores convencionais

MapReduce • Reduce:

– Processa todos os valores associados com a mesma <Key>.

– Mescla os valores para formar um conjunto de valores possivelmente menor.

– Geralmente, apenas um valor de saída de 0 ou 1 é produzido a cada chamada Reduce.

– Os valores intermediários são fornecidos à função Reduce do usuário por um iterador permitindo identificar listas de valores que são grandes demais para a memória.

Page 27: Big data para programadores convencionais

Exemplo: Contador de Palavras • Considere o exemplo do problema proposto

pela IBM:

– Será contado o número de ocorrências de cada palavra em um grande conjunto de documentos.

Page 28: Big data para programadores convencionais

Exemplo: Contador de Palavras

• A função Map emite cada palavra mais uma contagem associada de ocorrências.

mapper (filename, file-contents):

for each word in file-contents:

emit (word, 1)

Page 29: Big data para programadores convencionais

Exemplo: Contador de Palavras

• A função Reduce soma todas as contagens emitidas para uma palavra específica.

reducer (word, values):

sum = 0

for each value in values:

sum = sum + value

emit (word, sum)

Page 30: Big data para programadores convencionais

MapReduce – Prós e Contras Prós Contras

Modelo conceitual fácil de entender: apenas duas operações

Não é simples implementar em linguagens de programação convencionais, como Java, C++ e Python.

Automatiza a distribuição de dados e agregação de resultados.

O programador deve codificar cada operação de acesso a dados.

Pode ser incorporado por várias linguagens procedurais.

A natureza “opaca” das funções Map e Reduce impedem sua otimização.

Não é preciso preocupar-se com os detalhes da paralelização e recuperação de falhas.

Elimina locks.

Page 31: Big data para programadores convencionais

HDFS

Fonte: EMC²

Page 32: Big data para programadores convencionais

HDFS

• O Hadoop Distributed File System (HDFS) é um sistema de arquivos altamente tolerante a falhas projetado para executar em hardware padrão de baixo custo.

• O HDFS disponibiliza acesso de alto rendimento para os dados do aplicativo e é adequado para aplicativos com grandes conjuntos de dados.

Page 33: Big data para programadores convencionais

Fonte: EMC²

Page 34: Big data para programadores convencionais

Hadoop • Segundo a Hadoop, “Hadoop é um storage

confiável e um sistema analítico” [2014]

• Composto por duas partes essenciais: – o Hadoop Distributed Filesystem (HDFS), sistema de

arquivos distribuído e confiável, responsável pelo armazenamento dos dados

– Hadoop MapReduce, responsável pela análise e processamento dos dados.

• O nome do projeto veio do elefante de pelúcia que pertencia ao filho do criador, Doug Cutting.

Page 35: Big data para programadores convencionais

Pig e Pig Latin

• Pig é um mecanismo para executar os fluxos de dados de modo paralelo ao Hadoop.

• Usa uma linguagem chamada Pig Latin para expressar esses fluxos de dados.

• Com a Pig Latin, é possível descrever como os dados de uma ou mais entradas devem ser lidos, processados e, depois, armazenados em uma ou mais saídas de modo paralelo.

Page 36: Big data para programadores convencionais

Pig e Pig Latin

• Um programa de Pig Latin consiste de uma série de operações ou transformações que é aplicada aos dados de entrada a fim de produzir a saída.

Page 37: Big data para programadores convencionais

Pig e Pig Latin

• Exemplo de programa para analisar os arquivos de log de um web site e encontrar as 10 páginas mais visitadas de cada categoria.

Page 38: Big data para programadores convencionais

Pig e Pig Latin

visits = load '/data/visits' as (user, url, time);

gVisits = group visits by url;

visitCounts = foreach gVìsits generate urI, count(urlVisits);

urllnfo = load '/data/urllnfo' as (url, category, pRank);

visitCounts = join visitCounts by url, urlinfo by url;

gCategonies = group visitCounts by category;

topUrls = foreach gCategonies generate top(visitCounts,10);

Store topUrls into '/data/topUrls';

Page 39: Big data para programadores convencionais

Hive e HiveQL

• Hive é framework para soluções de Data Warehousing executado no ambiente Hadoop.

• HiveQL é uma linguagem declarativa, similar ao SQL, usada para criar programas executáveis no Hive.

• O compilador HiveQL traduz os comando em HiveQL em jobs do MapReduce e os envia para o Hadoop executar.

Page 40: Big data para programadores convencionais

Hive e HiveQL

SELECT * FROM sales

WHERE amount > 10 AND region = "US“

CREATE TABLE food

(id INT, msg STRING)

PARTITIONED BY (dt STRING);

Page 41: Big data para programadores convencionais

Hive e HiveQL

FROM (

FROM docs

MAP text USING ‘python wc_map.py’

AS (word, count) CLUSTER BY word

) words

REDUCE word, count USING `python

wc_reduce.py’

Page 42: Big data para programadores convencionais

SDSS

• O Sloan Digital Sky Survey é o mais ambicioso mapeamento astronômico que já foi feito.

• Este projeto vai mapear detalhadamente um quarto de todo o céu, determinando as posições e brilhos absolutos de centenas de milhões de objetos celestes.

• Vai medir as distâncias de mais de um milhão de galáxias e quasares.

• A medida que o levantamento progride, os dados são liberados para a comunidade científica (e para o público em geral) em incrementos anuais.

Page 43: Big data para programadores convencionais

SDSS

• Os cientistas precisam primeiro processar os dados rapidamente (em menos de uma semana) porque os astrônomos do SDSS necessitam das informações para configurar os telescópios para funcionar da forma mais eficiente durante a próxima fase escura da lua. Se passar muito tempo, os objetos alvo irão se por, conforme as estações mudam.

Page 44: Big data para programadores convencionais

SDSS

• Os cientistas precisam primeiro processar os dados rapidamente (em menos de uma semana) porque os astrônomos do SDSS necessitam das informações para configurar os telescópios para funcionar da forma mais eficiente durante a próxima fase escura da lua. Se passar muito tempo, os objetos alvo irão

se por, conforme as estações mudam.

Page 45: Big data para programadores convencionais

SDSS

• As imagens passam por filtros óticos que deixam passar bandas centradas em 354, 476, 628, 769 and 925 nm em comprimento de onda, chamadas respectivamente de u, g, r, i e z.

1237651758284866523,269.742450488939,-0.000559032663559684,20.75933,18.62895,17.68734,17.24949,17.06834

1237651758285652455,271.497048661584,0.000432606430817509,24.63467,19.80283,19.01332,18.16589,22.8269

1237651758284147974,268.084604422452,-0.000477759959196492,20.11935,18.55714,17.86824,17.52779,17.31551

1237648721254089233,233.360450043607,0.000599034101109869,21.04421,19.43434,18.41128,17.89137,17.50843

1237663526494931611,306.65415889352,0.000642419128947454,22.37276,20.84306,19.75857,19.15853,18.87529

1237656894529209548,309.847614242754,-0.000963889419181835,23.45641,20.69753,18.98959,18.39435,18.04083

1237656894530519858,312.806752181141,-0.000538041014713186,19.80919,18.40785,17.58722,17.13805,16.88819

Page 46: Big data para programadores convencionais

SDSS e HiveQL

• Cria tabela para conter os dados que iremos analisar da Galáxia!

CREATE TABLE galaxy

(objId BIGINT, ra REAL, dec REAL, u

REAL, g REAL, r REAL, i REAL, z

REAL)

Page 47: Big data para programadores convencionais

• Popula a tabela com os dados fornecidos pelo SDSS

SDSS e HiveQL

for row in reader:

cur.execute("INSERT INTO galaxy

(objId, ra, dec, u, g, r, i, z)

VALUES(?, ?, ?, ?, ?, ?, ?, ?);",

to_db)

Page 48: Big data para programadores convencionais

• Pronto!

SDSS e HiveQL

SELECT * FROM galaxy

Page 49: Big data para programadores convencionais

• Junção entre a tabela de imagens (PhotoOBJ) e a tabela de espectro (SpecObj)

SDSS e HiveQL

SELECT TOP 10

p.objid,p.ra,p.dec,p.u,p.g,p.r,p.i,p.z,

p.run, p.rerun, p.camcol, p.field,

s.specobjid, s.class, s.z as redshift,

s.plate, s.mjd, s.fiberid

FROM PhotoObj AS p

JOIN SpecObj AS s ON s.bestobjid = p.objid

WHERE

p.u BETWEEN 0 AND 19.6

AND g BETWEEN 0 AND 20

Page 50: Big data para programadores convencionais
Page 51: Big data para programadores convencionais

Para saber mais • Software Big Data livre para os Impacientes. • Behind Big Data. • SDSS-III. • MapReduce Tutorial. • Big Data in Astronomy. • Statistics in Astronomy. • Processamento de Dados Distribuídos com Hadoop. • Introdução à analítica de dados com base em Hadoop no

IBM SmartCloud Enterprise. • Mining of Massive Datasets. • Escalabilidade horizontal para execução paralela de tarefas. • SkyServer DR9