escola de verão lncc 2015 jornada ciência de...
TRANSCRIPT
2/5/15
1
Escola de Verão LNCC 2015 Jornada Ciência de Dados
Fabio Porto ([email protected]) LNCC – CCC - DEXL Lab http://dexl.lncc.br
Gerência de Grandes Volumes de Dados– Parte II
Parte III Como Usar !!
Fábio Porto
Introdução
l O processamento de grandes volumes de dados foi “recentemente” formulado como um problema de paralelismo. – paralelismo de dados (processos
embarassadamente paralelizáveis) l tipico representante: modelo Map-Reduce l sistemas de banco de dados paralelos
Fábio Porto
Jornada Ciência de Dados
Estratégias
l Baseada em Busca – Google é o grande ator – Foco principal em busca por palavras chave – Criação de enormes listas invertidas
l Termo -> lista de documentos que o contêm
l Sistemas de alto poder de processamento – Dividir para conquistar:
l Agrupar os dados segundo algum critério l Se possível criar índices em cada grupamento l Processar cada grupo individualmente e agrupar as
respostas
2/5/15
2
Fábio Porto
Aspectos do Problema
l Modelos de Aplicação: – Consultas a Bancos de Dados – Processamento em workflows/dataflows – Processos intensivos de CPU
l Estratégia de gerência de Dados – particionado – distribuído – centralizado – replicado
Fábio Porto
Workflows, Dataflows e Consultas em Bancos de Dados
l Workflows científicos – processamento de dados realizado como parte de um experimento científico
l Nesta apresentação estaremos considerando processos automáticos, i.e., sem intervenção do usuário;
l Topologia de um grafo direcionado, com ou sem ciclos, G=(N,E), onde N representa um conjunto de atividades e E a dependência entre as atividades espelhada na relação produtor/consumidor de dados;
l Dataflows – generalização de workflows científicos para outros domínios de aplicação
l Guarda o mesmo modelo; l Pode incluir um pouco mais de conhecimento dos programas e dados, se
projetado com componentes internos à instituição; l Consultas a BDs – processamento dados em função de uma
requisição externa (consulta ou atualização); l Processamento inteiramente automático l Expresso em linguagem de alto nível (SQL – ou variante) l Topologia – arvore – profunda ou equilibrada l Conhecimento dos dados (modelo e estatísticas) e da semântica das operações
(álgebra)
Fábio Porto
Modelo de Base Dataflows Big Data
Ativ. 1 Ativ. 2 … Ativ. k
Entrada
Saída Processamento
Fábio Porto
Máquina de Execução
l Módulo de software responsável por receber a descrição do dataflow a ser executado; – Realiza processos de preparação do ambiente – Executa o dataflow requisitado – Executa procedimentos finais
l Serviços associados – Controle transacional – Tolerância à falha – Gerência de dados de proveniência – Mecanismos de autenticação
2/5/15
3
Fábio Porto
Modelo de Execução
l Determina as características não funcionais de uma execução de dataflows – Tem como restrições
l O ambiente de execução disponível : – Centralizado, disco compartilhado, sem
compartilhamento, em memória, etc.. l Mecanismos de escalonamento de atividades l Característica dos dados :
– Cadeia de DNA; rede complexa, etc… l Modelos de sincronização entre tarefas :
– Síncrono, assíncrono
Fábio Porto Elementos do Modelo de Execução
l Modelo Iterador – Sincroniza o processamento de cada unidade de
dados pelos operadores; – Cada operador implementa a interface iterator:
open, getnext, close [Grafe 1993]; – Permite execução centralizada, distribuída e
paralela l Outros modelos
– Ativação [Bouganim et al.1996] l Estratégias de paralelismo
– Intra-operator, inter-operator – Independente (bushy)
Fábio Porto
Jornada Ciência de Dados
l Modelo MapReduce: – Modelo originário de linguagens funcionais – Escala para milhares de núcleos de
processamento – Cada processamento atua sobre parte dos dados
Fábio Porto
Jornada Ciência de Dados
Hadoop: uma implementação de software livre para MapReduce
split0 split1
split2
splitm
worker1
worker2
worker2
…. workerm
worker1
worker2
worker2
…. workerR
(M pieces, De 16M a 64M)
Master
Mappers Reducers
Read() Local write
remote read
Output 1
Output 2
Output r
2/5/15
4
MapReduce Ecosistema
Jornada Big Data 2014
Fábio Porto
Cenário
Big Dataset
HDFS
Hadoop/MR
ingestão
HBase HIve
Oozie
Fábio Porto
Ecosistema Google MapReduce
Jornada Big Data 2014
Dremel Evenflow Evenflow Dremel
MySQL gateway
Sawzall
MapReduce/GFS BigTable
Chubby
store data
Process data
ingest data
serve data
high level domain language co
lumn
stora
ge
dataflows
coordinator
fonte:www.cloudera.com
Fábio Porto
Ecosistema Facebook MapReduce
Jornada Big Data 2014
HiPal Evenflow Evenflow Hive
Scribe Hive
HADOOP /HDFS HBase
Zookeeper
store data
Process data
ingest data
serve data
high level domain language co
lumn
stora
ge
dataflows
coordinator
2/5/15
5
Fábio Porto
Ecosistema Yahoo MapReduce
Jornada Big Data 2014
Oozie oozie HCatalog
Data Highway
Pig&Hive
HADOOP HBase
Zookeeper
store data
Process data
ingest data
serve data
high level domain language
dataflows
coordinator
Fábio Porto
Sqoop
l Ferramenta para carga de dados no Hadoop a partir de comandos SQL sobre fontes JDBC; – linha de comando; – Gera “writables” para uso com Hadoop;
Jornada Big Data 2014
Fábio Porto
HBase
l armazenamento baseado em coluna l Baseado em BigTable (Google) l Construido sobre HDFS l arquitetura distribuida em clusters l Suporte multi-TB datasets l (Key-value) look-up l gerenciamento transacional limitado
Jornada Big Data 2014
Fábio Porto
HBase
l sistema para grande volume de dados – 100s GB a PBs
l Apenas I/O sequencial em escrita l Linguagem não é SQL l Api (get, put, scan) todos por chave l indices em chave primária (clustered) l Acesso randomico aos dados
– apesar de ser construido sobre HDFS Jornada Big Data 2014
2/5/15
6
Fábio Porto
Hive
l uma ferramenta que provê uma interface SQL (HiveQL) sobre arquivos em HDFS
l Suporta Select, JOIN, Group By,Filter etc. l Características em suporte a grande
datasets - definição de colunas para particionamento
- Hive é uma alternativa a banco de dados para queries com análises (UDF) que varrem a base e realizam agregações
- Permite criação de visões Jornada Big Data 2014
Fábio Porto
Hadoop- Hive architecture
Jornada Big Data 2014
Cliente (jobs Hive)
HiveDWH MapReduce Hadoop HDFS
SQL
Fábio Porto
Hive Modelo de Dados l Tabelas
– colunas tipadas (int, float, string, boleano) – mas tb. list, map
l Partições – otimizam a estrutura de tabelas para acesso
l range-partition por data
– são armazenadas em subdiretórios de tabelas em HDFS
l Buckets – particionamento por intervalos
Jornada Big Data 2014
Fábio Porto
Usando
l create table foo(id int, msg string); row format delimited fields terminated by format lines terminated by ‘\n’ l Load data local inpath ‘mydata’ into table foo; l select * from from Limit 10;
Jornada Big Data 2014
2/5/15
7
Fábio Porto
Comparativo Modelo de dados
Tempo real
MR linguagens de consulta
escalabilidade +1000 nos
Distribuição
HBASE orientado a coluna
sim Não NoSQL Sim Distruido sobre HDFS /chave ordenada
MapReduce
chave/valor
não Sim N.A. Sim Particionamento HDFS
Hive Relacional não Sim HiveQL Sim particionamento HDFS
SGBDR Relacional sim Não SQL Não Particionamento horizontal
Fábio Porto
Oozie
l gerenciador de workflows para gerenciar jobs Hadoop;
l dataflows na forma de DAG l Os nós são ações:
– Pig, Hive, ações Java; – encadeamento de eventos; – ações HDFS
Jornada Big Data 2014
Fábio Porto
Jornada Big Data 2014
MapReduce Framework
l References: – Jeffrey Dean, Sanjay Ghemawat, “MapReduce:Simplified
Data Processing on Large Clusters”, OSDI 2004; – Ralf Lammel, “Google’s MapReduce Programming Model -
Revisited”,SCP – Jaliya Ekanayake, Shrideep Pallickara, Geoffrey Fox, “MapReduce for Data intensive Scientific Analyses”,IV Int’l Conf. on eScience
– Azza Abouzeid, Kamil Bajda-Pawlikowski, et al, “HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technology for Analytical Workloads”, VLDB, 2009.
Fábio Porto
Jornada Big Data 2014
Introduction
l MapReduce is a programming model based on functional programming
l Implemented in a framework for ease adoption of highly parallel environments
l It is a batch data processing system – not real time
l Users concentrate on the implementation of functions Map and Reduce;
l Map and Reduce work on very large lists of anything: web pages, records in a DB
2/5/15
8
Fábio Porto
Programming Model
l Users implement interface of two functions: – map (in_key, in_value) -> (inter_key, inter_value)
list – reduce (inter_key, inter_value list) -> (out_key, out_value) list
Jornada Big Data 2014
Fábio Porto
Jornada Big Data 2014
map
(key1, values)
(key2, values)
(key3, values)
shuffle
(key1, values)
(key1, values)
(key1, values)
Reduce Final (key, values)
Let map (k, v) = foreach char c in v: emit (k,c) (“A”, “cats”) -> (“A”, “c”), (“A”,”a”), (“A”,”t”), (“A”,”s”)
Let map (k, v) = if (isPrime(v): emit (k,c) (“foo”, 7) -> (“foo”, 7), (“test”,”8”)-> {}
Fábio Porto
Example Reduce
Jornada Big Data 2014
Let reduce (k, vals) sum=0 foreach int v in vals: sum+=v emit (k,sum) (“A”, [42,100,312]) -> (“A”, 454) (“B”, [12,6,-2]) -> (“B”, 16)
Fábio Porto
Distribuição do arquivo em blocos e splits
bloco1 bloco2 bloco3
linha1
linha2
linha3
linha4
linha5
linha6
64MB
2/5/15
9
Fábio Porto
b
Atribuição à nós e Maps
linha1
linha2
linha3
Nó 1
M1
M2
M3
bloco1
Fábio Porto
Zoon In
split
M1
fileInputFormat
Key,value
linha
Classe Mapper
Classe InputFileFormat
Fábio Porto
What is its big thing?
Jornada Big Data 2014
Data locality
Large Amount of input data
node1 node 2 Node 3
slice of input
slice of input
slice of input
each function map mapper will run on each node over the set of data at that node
Fábio Porto
Execution Model
Jornada Big Data 2014
mapping process
Node 1
mapping process
Node 2
mapping process
Node 3
Reduce process
Node 1
Reduce process
Node 2
Reduce process
Node 3
2/5/15
10
Fábio Porto
Key to MapReduce
l Map() functions run in parallel, each over a partition of the dataset;
l Reduce() functions run in parallel, each working on a range of keys
l A Reduce phase only starts when the complete Map phase has finished
Jornada Big Data 2014
Fábio Porto
MapReduce Model (Conta palavras)
Jornada Big Data 2014
input
Hoje ta quente quente lago hoje lago quente
hoje ta quente
quente lago
hoje lago quente
splitting Hoje, 1
ta, 1
quente, 1
quente, 1
lago, 1
Hoje, 1
lago, 1
quente, 1
mapping Hoje, 1
Hoje, 1
ta, 1
quente, 1
quente, 1
lago, 1
lago, 1
quente, 1
shuffling reducing
Hoje, 2
lago, 2
quente, 3
ta, 1
Final Result
Hoje, 2 lago, 2 quente, 3 ta, 1
Fábio Porto
Combining Phase
l operates between Map and Reduce, within the Map node over map output
l executes a short version of Reduce l saves data transfer l possible in distributive functions l ex:
– max (max(1,57, 32), max(3,56,93))
Jornada Big Data 2014
Fábio Porto
Jornada Big Data 2014
Map and Reduce l Interface:
– Map(key1,value1) -> list (key2,value2) – Reduce(key2,list<value2>)-> list(value2)
l Map and Reduce are functions written by the user according to application;
l Map: takes a <key1,value1> pair; key and value are of any datatype, and produces a list of intermediate key2,value2 pairs;
l The framework groups the output of Map by the value of key2, producing a list of associated value2;
l The Reduce function takes the pair <key2, list<value2>> and produces its output;
2/5/15
11
Fábio Porto
Jornada Big Data 2014
General view (Google Implementation)
split0 split1
split2
splitm
worker1
worker2
worker2
…. workerm
worker1
worker2
worker2
…. workerR
(M pieces, De 64M a 128M)
Master
Mappers Reducers
Read() Local write
remote read
Output 1
Output 2
Output r
Fábio Porto
Jornada Big Data 2014
Process l Initially, the MR framework splits the input into M partitions of
fixed size; l It initializes the Master node; l The master node creates M+R workers and assign then Maps
and Reduce functions, accordingly; l Each Map reads its partition of the input and generates in
memory its output; l Periodically a process reads the buffer and groups the output
values by key. It then writes the output to one of the R partitions, informing the master about its complete status and the partition addresses;
l Finally, the Reduce reads each of its partitions and iterates over the keys, producing the results that are written to the output file.
Fábio Porto
Jornada Big Data 2014
Fault Tolerance
l Master keeps record of worker status (idle, in-progress, completed)
l It pings workers periodically l It worker ping times-out, it is considered as
dead and all completed work is re-scheduled to another node;
Fábio Porto
Jornada Big Data 2014
Task Granularity
l M and R much larger than the number of workers machines; l Google defines M in terms of the size of the input partition
(between 64M and 128M), and R a small multiple of the number of workers machine;
l Reducers are in small number as they produce each an output file
2/5/15
12
Fábio Porto
Jornada Big Data 2014
Partitioning of Intermediate results
l Intermediate results produced by Map are re-partitioned into “R” fragments;
l Default partitioning function is: – Hash(key) mod |R|; – More semantically meaningful partition desired, if
possible
Fábio Porto
HDFS – Hadoop File System
l Baseado no GFS da Google l Dados são replicados através do cluster
(defaut 3 vezes); l suporta datasets até PBs l gravação no final do arquivo l arquivos (grava-uma-vez), majoritariamente
leitura l Leitura sequencial l Suporta clusters não confiáveis
Jornada Big Data 2014
Fábio Porto
HDFS características
l arquivos são armazenados em blocos (default 64MB) maiores que a maioria dos FSs
l Cada bloco replicado em, pelo menos, 3 nós de dados;
l Um ponto de falha (NameNode), Mestre único coordena todos os nós de dados
l Não aplica caching de dados
Jornada Big Data 2014
Fábio Porto
máquina cliente
Arquitetura
Jornada Big Data 2014
Aplicação cliente HDFS
API HDFS
HDFS view
Rede
HDFS NameNode
HDFS DataNode
HDFS DataNode
2/5/15
13
Fábio Porto
NameNode e dataNode
Jornada Big Data 2014
Metadados: /user/aaron/foo -> 1,2,4 /user/aaron/bar -> 3,5
NameNode: apenas metadados
2 4
1 5
5 2
3 4
1
3
DataNodes: armazena blocos de arquivos
Fábio Porto
Metadados
l Um nó armazena todas as informações de metadados: – nomes de arquivos, localizações dos blocos nos
DataNodes l Mantido inteiramente na memória
– bastante memória na máquina abrigando o NameNode
l Blocos mantidos no sistema de arquivos local
Jornada Big Data 2014
Fábio Porto
Jornada Big Data 2014
Summing-up
l MapReduce proposes a simple interfaces with robust framework to support parallelization of applications with huge number of data entities;
l Processes an iteration over keys; l The framework has been implemented by Goggle,
apache(Hadoop) l The main exported elements are pairs of Key, value l Deals with fault tolerance of workers but not that of master l No application based optimization is possible due to lack of
function implementation semantics; l File based
Fábio Porto
Hadoop(Google MapReduce) - Weaknesses
l No expressive query language – Expressive query language allow developers to
formulate high-level tasks l No optimization based on function semantics l No semantic-based partitioning strategy
– Semantic-based partitioning foster parallelization and data access according to application characteristics
2/5/15
14
Fábio Porto
HadoopDB - a step in between [Abouzeid09]
l Offers parallelism and fault tolerance as Hadoop, with SQL queries pushed-down to postgreSQL DBMS;
l Pushed-down queries are implemented as Map-reduce functions;
l Data are partitioned through nodes. – Partitioning information stored in the catalog – Distributed through the N nodes
Fábio Porto
HadoopDB architecture
Task Tracker
Database DataNode
Node 1
Task Tracker
Database DataNode
Node 2 Task Tracker
Database DataNode
Node n
MapReduce Framework
SMS Planner
SQL query
Catalog
Fábio Porto
Example
a)
Select Year(SalesDate), Sum(revenue) From Sales Group by year(salesDate)
FileSink Operator
Map
Table partitioned by year(SalesDate) b)
Select Year(SalesDate), Sum(revenue) From Sales Group by year(salesDate)
Reduce Sink Operator
Map
no partitioning by year(SalesDate)
Group by Operator
Sum Operator
FileSink Operator
Reduce
Select year(SalesDate),sum(revenue) From Sales Group by year(salesDate)
Fábio Porto
Pig Latin - an high-level language alternative to SQL
l The use of high-level languages such as SQL may not please scientific community;
l Pig Latin tries to give an answer by providing a procedural language where primitives are Relational albegra operations;
l Pig Latin: A not-so-foreign language for data processing, Christopher Olson, Benjamin Reed et al., SIGMOD08;
2/5/15
15
Fábio Porto
Example l Urls (url, category, pagerank) l In SQL
– Select category, avg (pagerank) from urls where pagerank > 0.2 group by category having count(*) > 106 l In PIG
– Groupurls = FILTER urls by Pagerank > 0.2; – Groups= Group good-urls by category; – Big-group=FILTER groups BY count(good_urls) > 106
– Output = FOREACH big-groups GENERATE category, avg(good_urls_pagerank);
Fábio Porto
Pig Latin
l Program is a sequence of steps – Each step executes one data transformation
l Optimizations among steps can be dynamically generated, example: – 1) spam-urls= FILTER urls BY isSpam(url); – 2) Highrankurl = FILTER spam-url BY pagerank >
0.8; 1 2 2 1
Fábio Porto
Summing-up
l HadoopDB extends Hadoop with expressive query language, supported by DBMSs
l Keeps Hadoop MapReduce framework l Queries are mapped to MapReduce tasks l For scientific applications is a question to be
answered whether or not scientists will enjoy writing SQL queries
l Algebraic like languages may seem more natural (eg. Pig Latin)
Fábio Porto
HQOOP -Parallelizing Pushed-down Scientific Workflows
l Partition of data across cluster nodes – Partitioning criteria
l Spatial (currently used and necessary for some applications) l Random (possible in SkyMap) l Based on query workload (Miguel Liroz-Gestau’s Work)
l Process the workflow close to data location – Reduce data transfer
l Use Apache/Hadoop Implementation to manage parallel execution l Widely used in Big Data processing; l Implements Map-Reduce programming paradigm; l Fault Tolerance of failed Map processes;
l Use QEF as workflow Engine – Implements Mapper interface – Run workflows in Hadoop seamlessly;
2/5/15 LIneA - HQOOP 60
2/5/15
16
Fábio Porto
Perspective
Data distribution
Query Distribution
Workflow Parallelization
HadoopDB+Hive
Qserv+ Wkfw Engine
Orchestration layer, MapReduce
HQOOP
2/5/15 LIneA - HQOOP 61
Uma Aplicação BD + M/R
Fábio Porto
Orchestration Layer at LIneA Portal
2/5/15 LIneA - HQOOP 63
Spatial partitioning Catalog DB
Fábio Porto
2/5/15 LIneA - HQOOP 64
2/5/15
17
Fábio Porto
Resulting Image
2/5/15 LIneA - HQOOP 65
Fábio Porto
Integrated architecture
2/5/15 LIneA - HQOOP 66
act1
Act 2
act3
act1
Act 2
act3
act1
Act 2
act3
DB1 DB2 DB3
Final Result
Workflow engine Workflow engine Workflow engine
Fábio Porto
HDFS+M/R
Fábio Porto
BD Centralizado + M/R
2/5/15
18
Fábio Porto
BD Distribuido + MR
Fábio Porto
BD particionado + MR
Fábio Porto
Resultados