Algoritmos de Junção Estrela em MapReduce Jaqueline Joice Brito 09 de junho de 2015 1
Modelo Relacional Dados armazenados em um conjunto de tabelas Amplamente utilizado Junção Recuperação de dados de duas ou mais tabelas baseada em relações lógicas Operação custosa SELECT nome, cargo FROM Cliente C, Profissao P WHERE C.cod_profissao = P.cod_profissao 2
Processamento Distribuído Otimização Minimização da comunicação entre os nós 3
HDFS - Hadoop Distributed File System NameNode DataNode 1 DataNode 2 DataNode 3 DataNode 4 4
HDFS - Hadoop Distributed File System NameNode DataNode 1 DataNode 2 DataNode 3 DataNode 4 5
HDFS - Hadoop Distributed File System NameNode Metadados DataNode 1 DataNode 2 DataNode 3 DataNode 4 Cada bloco possui 3 réplicas distribuídas entre os DataNodes 6
MapReduce casa rio boneca rio dado casa dado boneca dado casa boneca rio rio casa boneca dado 7
MapReduce casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado 8
MapReduce chave casa,1 rio, 1 boneca, 1 rio,1 valor casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado dado,1 casa, 1 dado, 1 boneca, 1 dado,1 casa, 1 dado, 1 rio, 1 rio,1 casa, 1 rio, 1 dado, 1 9
MapReduce chave valor casa,1 rio, 1 boneca, 1 rio,1 boneca, 1 boneca, 1 casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado dado,1 casa, 1 dado, 1 boneca, 1 dado,1 casa, 1 dado, 1 rio, 1 rio,1 casa, 1 rio, 1 dado, 1 casa,1 casa, 1 casa, 1 casa, 1 dado, 1 dado, 1 dado, 1 dado, 1 dado, 1 rio, 1 rio, 1 rio, 1 rio, 1 rio, 1 10
MapReduce casa,1 rio, 1 boneca, 1 rio,1 boneca, 1 boneca, 1 casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado casa rio boneca rio dado casa dado boneca dado casa dado rio rio casa rio dado dado,1 casa, 1 dado, 1 boneca, 1 dado,1 casa, 1 dado, 1 rio, 1 rio,1 casa, 1 rio, 1 dado, 1 casa,1 casa, 1 casa, 1 casa, 1 dado, 1 dado, 1 dado, 1 dado, 1 dado, 1 rio, 1 rio, 1 rio, 1 rio, 1 rio, 1 boneca, 2 casa, 4 dado, 5 rio, 5 11
Modelo MapReduce Otimização Redução da comunicação (fase de shuffling) Minimização do número de jobs MapReduce Mappers... Shuffling Reducers... 12
Junção em MapReduce Map-side Join Junção na função Map Reduce-side Join Junção na função Reduce 13
Map-side Join Junção é realizada na função Map SELECT a, b FROM S, T WHERE S.c = T.c S s c a 1 5 8 2 6 7 3 6 4 4 4 7 T t c b 5 6 4 7 4 2 8 4 1 10 5 4 14
Map-side Join Junção é realizada na função Map SELECT a, b FROM S, T WHERE S.c = T.c S s c a 1 5 8 2 6 7 3 6 4 4 4 7 S 1 T 1 s c a 4 4 7 1 5 8 S 2 s c a 2 6 7 3 6 4 T t c b 5 6 4 7 4 2 8 4 1 10 5 4 t c b 7 4 2 8 4 1 10 5 4 T 2 t c b 5 6 4 15
Map-side Join Mapper 1 S 1 t c b T 1 s c a 7 4 2 4 4 7 8 4 1 1 5 8 10 5 4 Mapper 2 S 2 T 2 s c a t c b 2 6 7 5 6 4 3 6 4 Dados são particionados e ordenados pela chave de junção (atributo c) Blocos correspondentes de cada arquivo são processados por uma única tarefa Mapper A função Map é aplicada sobre um dos blocos (ex: S 1 ), enquanto o outro bloco correspondente (ex: T 1 ) é lido dentro da tarefa Mapper Cada Mapper possui os dados necessários para realizar a junção de seus blocos 16
Map-side Join Memory-backed Join Mapper 1 S 1 s c a 4 4 7 1 5 8 T t c b 7 4 2 8 4 1 10 5 4 5 6 4 Dados em memória primária local Tabela menor (ex: tabela T) é armazenada na memória primária local de cada nó Mapper 2 S 2 s c a 2 6 7 3 6 4 T t c b 7 4 2 8 4 1 10 5 4 5 6 4 Blocos da tabela maior (ex: S) são processados nos diferentes mappers Cada mappers tem acesso a todos os dados da tabela menor (ex: tabela T) 17
Reduce-side Join Mapper 1 entrada saída Mapper 2 entrada saída S T s c a key value t c b Key value 1 5 8 s,4 7 5 6 4 t,4 2 2 6 7 3 6 4 4 4 7 s,5 8 s,6 7 s,6 4 7 4 2 8 4 1 10 5 4 t,4 1 t,5 4 t,6 4 idenbtificador da tabela S atributo de junção c atributo a idenbtificador da tabela T atributo de junção c atributo b 18
Reduce-side Join Mapper 1 Mapper 2 S T s c a key value t c b Key value 1 5 8 s,4 7 5 6 4 t,4 2 2 6 7 s,5 8 7 4 2 t,4 1 3 6 4 s,6 7 8 4 1 t,5 4 4 4 7 s,6 4 10 5 4 t,6 4 Reducer 1 Reducer 2 key value s,4 7 s,5 8 t,4 2 t,4 1 Entrada do Reducer 1 key value s,6 7 s,6 4 t,6 4 Entrada do Reducer 2 t,5 4 19
Reduce-side Join Mapper 1 Mapper 2 S T s c a key value t c b Key value 1 5 8 s,4 7 5 6 4 t,4 2 2 6 7 s,5 8 7 4 2 t,4 1 3 6 4 s,6 7 8 4 1 t,5 4 4 4 7 s,6 4 10 5 4 t,6 4 Reducer 1 Reducer 2 key value s,4 7 saída key value saída s,5 8 7, 2 s,6 7 7, 4 t,4 2 7, 1 s,6 4 4, 4 t,4 1 8, 4 t,6 4 t,5 4 20
Junção em MapReduce Map-side Join Desvantagem: aplicável quando o conjunto pode ser ordenado e particionado pelo atributo de junção Memory-backed Join Desvantagem: aplicável quando uma das tabelas é pequena e cabe na memória primária de cada nó Vantagem: processamento local, dispensando a fase de shuffling Reduce-side Join Vantagem: aplicável em qualquer conjunto de tabelas Desvantagem: necessidade da fase de shuffling 21
Data Warehouse Banco de dados voltado ao processamento analítico para a tomada de decisão Modelagem multidimensional Medidas numéricas: objetos de análise Dimensões: perspectiva/contexto para as análises (fornecedor, cliente) C F 4 2 C 3 F C 2 1 C 1 unidades vendidas (cliente) (fornecedor) (produto, cliente) P 3 P 2 P 3 P 2 (produto, fornecedor) P 1 P 1 C 4 C 3 C 2 C 1 (produto) F 1 F 2 22
Esquema Estrela Star Schema Benchmark (SSB) 23
Consulta de Junção Estrela Consulta Q3.2 do SSB SELECT c_city, s_city, d_year, SUM(lo_revenue) as revenue FROM Lineorder, Supplier, Customer, Date WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND c_nation = UNITED STATES AND s_nation = UNITED STATES AND d_year >= 1992 AND d_year <= 1997 GROUP BY c_city, s_city, d_year ORDER BY c_city, s_city, d_year 24
Consulta de Junção Estrela Consulta Q3.2 do SSB SELECT c_city, s_city, d_year, SUM(lo_revenue) as revenue FROM Lineorder, Supplier, Customer, Date WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND c_nation = UNITED STATES AND s_nation = UNITED STATES AND d_year >= 1992 AND d_year <= 1997 GROUP BY c_city, s_city, d_year ORDER BY c_city, s_city, d_year cláusulas de junção cláusulas de filtragem 25
Sequência de Junções Binárias em MapReduce Um job MapReduce para cada junção Lineorder Supplier Job 1 Customer Job 2 Date Job 3 26
Algoritmo de Afrati e Ullman (2010) Proposta: realizar todas as junções em apenas um job S(s) U(s, t) T(t) A O domínio do atributo s é dividido em A blocos, enquanto que o domínio de t é dividido em B blocos O número de processos reducers é dado por AB a i =0 a i =1 a i =2 B b i =0 b i =1 (0,0) (0,1) (1,0) (1,1) (2,0) (2,1) Supondo que A=3 e B=2, temos um total de 6 reducers Cada processo reduce é identificado por um par (a i, b i ) 27
Algoritmo de Afrati e Ullman (2010) Proposta: realizar todas as junções em apenas um job S(s) U(s, t) T(t) O processo reduce para o qual uma tupla deve ser enviada é identificado por dois valores, a e b, determinados a partir dos atributos s e t (atributos de junção) b i (0,0) (0,1) A=3 e B=2 f(a i, b i ) = a i *B + b i b i 0 1 a i (1,0) (1,1) a i 2 3 (2,0) (2,1) 4 5 28
Algoritmo de Afrati e Ullman (2010) Proposta: realizar todas as junções em apenas um job S(s) U(s, t) T(t) Para cada valor s i do atributo s, a i = mod(s i, A) Para cada valor t i do atributo t, b i = mod(t i, B) Reducer identificado por uma função f(a i, b i ) = a i *B + b i b i (0,0) (0,1) A=3 e B=2 b i 0 1 a i (1,0) (1,1) a i 2 3 (2,0) (2,1) 4 5 29
Algoritmo de Afrati e Ullman (2010) Proposta: realizar todas as junções em apenas um job S(s) U(s, t) T(t) Cada tupla de S precisa ser enviada para todos os reducers identificados por um determinado valor a i Cada tupla de T precisa ser enviada para todos os reducers identificados por um um determinado valor b i b i (0,0) (0,1) A=3 e B=2 b i 0 1 a i (1,0) (1,1) a i 2 3 (2,0) (2,1) 4 5 30
Algoritmo de Afrati e Ullman (2010) Exemplo: s 1 2 3 4 s t 2 5 3 7 1 8 S(s) S U T 4 10 U(s, t) T(t) t 5 7 8 10 Id do processo reduce f(a i, b i ) = a i *B + b i A=3 e B=2 Tuplas da tabela U são enviadas para um único reduce S U T b i s a i = 1 a i = 2 s t a i = 2 b i = 1 a i = 0 b i = 1 t b i = 1 b i = 1 (0,0) (0,1) (1,0) (1,1) a i a i = 0 a i = 1 a i = 1 b i = 0 a i = 1 b i = 0 b i = 0 b i = 0 (2,0) (2,1) 31
Algoritmo de Afrati e Ullman (2010) Exemplo: s s 1 2 3 4 a i = 1 a i = 2 a i = 0 a i = 1 S U T s t 2 5 3 7 1 8 4 10 s S(s) t a i = 2 b i = 1 a i = 0 b i = 1 a i = 1 b i = 0 a i = 1 b i = 0 t 5 7 8 10 S U T U(s, t) T(t) t b i = 1 b i = 1 b i = 0 b i = 0 Id do processo reduce f(a i, b i ) = a i *B + b i Cada tupla da tabela S é enviada para B reducers (todos reducers de uma mesma linha) (0,0) (0,1) (1,0) (1,1) (2,0) (2,1) b i a i A=3 e B=2 32
Algoritmo de Afrati e Ullman (2010) Exemplo: S U T s 1 2 3 4 s t 2 5 3 7 1 8 S(s) 4 10 U(s, t) T(t) t 5 7 8 10 Id do processo reduce f(a i, b i ) = a i *B + b i A=3 e B=2 Cada tupla da tabela T é enviada para A reducers (todos reducers de uma mesma coluna) S U T s a i = 1 a i = 2 a i = 0 a i = 1 s t a i = 2 b i = 1 a i = 0 b i = 1 a i = 1 b i = 0 a i = 1 b i = 0 t b i = 1 b i = 1 b i = 0 b i = 0 (0,0) (0,1) (1,0) (1,1) (2,0) (2,1) b i a i 33
Algoritmo de Afrati e Ullman (2010) Reducer 0 Reducer 1 Reducer 2 Chave Valor Chave Valor Chave Valor S 3 null S 1 null S 3 null T 5 null S 4 null T 8 null T 7 null T 8 null T 10 null U 3,7 null T 10 null U 1,8 null U 4,10 null Reducer 3 Reducer 4 Reducer 5 Chave Valor Chave Valor Chave Valor S 1 null S 2 null S 2 null S 4 null T 8 null T 5 null T 5 null T 10 null T 7 null T 7 null U 2,5 null 34
Algoritmo de Afrati e Ullman (2010) Reducer 0 Reducer 1 Reducer 2 Chave Valor Chave Valor Chave Valor S 3 null S 1 null S 3 null T 5 null S 4 null T 8 null T 7 null T 8 null T 10 null U 3,7 null T 10 null U 1,8 null U 4,10 null Reducer 3 Reducer 4 Reducer 5 Chave Valor Chave Valor Chave Valor S 1 null S 2 null S 2 null S 4 null T 8 null T 5 null T 5 null T 10 null T 7 null T 7 null U 2,5 null 35
Algoritmo de Afrati e Ullman (2010) s t 3 7 Reducer 1 Reducer 2 Chave Valor Chave Valor S 3 null S 1 null T 5 null S 4 null T 7 null T 8 null U 3,7 null T 10 null U 1,8 null U 4,10 null s t 1 8 4 10 s t 2 5 Reducer 5 Chave Valor S 2 null T 5 null T 7 null U 2,5 null 36
Algoritmo de Afrati e Ullman (2010) Vantagem realiza todas as junções em apenas um job MapReduce Desvantagem Replicação de dados das tabelas de dimensão (S e T no exemplo) Caso existam filtros nas tabelas de dimensão, tuplas da tabela de fatos (U no exemplo) são enviadas para os reducers desnecessariamente 37
Referências Han, H.; Jung, H.; Eom, H.; Yeom, H. Y. Scatter-gather-merge: An efficient star-join query processing algorithm for data-parallel frameworks. Cluster Computing, v. 14, n. 2, p. 183 197, 2011. Afrati, F. N.; Ullman, J. D. Optimizing joins in a map-reduce environment. In: Proceedings of the 13th International Conference on Extending Database Technology (EDBT 2010), 2010. p. 99 110. Tao, Y., Zhou, M., Shi, L., Wei, L., Cao, Y.: Optimizing multi-join in cloud environment. In: Proceedings of the IEEE International Conference on High Performance Computing and Communications & 2013 IEEE International Conference on Embedded and Ubiquitous Computing. pp. 956 963 (2013). Thusoo, A., Sarma, J.S., Jain, N., Shao, Z., Chakka, P., Zhang, N., Anthony, S., Liu, H., Murthy, R.: Hive - a petabyte scale data warehouse using hadoop. In: ICDE. pp. 996 1005 (2010)5. Zhang, C., Wu, L., Li, J.: Efficient processing distributed joins with bloomfilter using mapreduce. Int J Grid Ditrib Comput 6(3), 45-58 (2013). 38
Obrigada 39