Beruflich Dokumente
Kultur Dokumente
Introduccin
Indexacin
Sort
Joins
Combiners
Stripe
Frecuencias relativas
NLines
Grafos
Patrones de diseo con !ap"educe
Introduccin
Acerca de los patrones de
diseo
2ntre cada !"' nos obliga a escribir datos intermedios a discos & no
optimi+ado a mac;ine learning
Introduccin
"epaso de conceptos !"
C"ecordamos estos conceptosD Los vamos a necesitar en este
curso777
8ritable
8ritableComparable
Partitioner
Bool"unner
setup56 , cleanup56
Contadores
.istributedCac;e
!ultipleInputs
Introduccin
Patrones de diseo con !ap"educe
Endice inverso
Endice inverso 5I6
=e,>alueBextInputFormat
3b(eto #Context$
5A'v6 T 5v'U6
5A'U6 T 5A'U6
3rdenar datos
V si solo ;a, un reducer 5I6
No est) ordenadoX
Si tengo 1 reducers' podr:a tener& "Q H LA4<L ' "/HL<4!L ' "JHL!4"L '
"KHL"4YM
Para la fase de an)lisis' se podr:a leer todos los datos7 Sin embargo' esto
no es mu, eficiente777 5si tenemos *ue ordenar /QB] de datos' tendr:amos
*ue leer J veces /QB]X6
2n ve+ de leer todo' vamos a trabajar sobre una muestra 5sample6 de los
datos7
Se podr:a ;acer un insert 5Put6 por cada una de las entradas *ue
*ueremos aadir' pero no es nada ptimo
2l S;uffle @ Sort !" ordena las llaves' pero no los valores7 3rdenar
los valores es un patrn de diseo llamado #secondar, sort$7
Como tambi9n se *uiere ordenar por los valores' la ?nica solucin es aadir el
valor 5la fec;a6 a la llave& hacemos una llave compuesta7
Por lo cual' la salida del m9todo map56 ser:a&
Se ;a usado #`$ como car)cter de separacin por*ue los tipos son sencillos7 2n
caso de tipos m)s comple(os podr:a ser necesario escribir una clase propia para
la llave compuesta 5interfa+ ritable!omparable6
3rdenar datos
5luangsa,`JQ/K/QJO'JQ/K/QJO6
5conca`JQ/K/QJO'JQ/K/QJO6
5pere+`JQ/KQ0/J'JQ/KQ0/J6
5luangsa,`JQ/K/QJ/'JQ/K/QJ/6
5pere+`JQ/KQPKQ'JQ/KQPKQ6
5luangsa,`JQ/KQJKQ'JQ/KQJKQ6
5conca`JQ/K/QJR'JQ/K/QJR6
Salida tarea map 1 Salida tarea map 2
2l secondar, sort 5III6
Nosotros *ueremos llamar el m9todo reduce56 solo una ve+' , *ue considere
todos los valores de estas K llaves a la ve+& es necesario #agrupar$ las
llaves7
Solo nos *uedamos con la primera llave compuesta7 Por eso era necesario
escribir el valor tanto en la llave compuesta como en el valor7
3rdenar datos
Patrones de diseo con !ap"educe
2(ercicios& ordenar datos
.esarrollar un secondar, sort
La meta de este e(ercicio es poner en pr)ctica el patrn de diseo
secondar, sort *ue acabamos de estudiar7 Nos permite repasar tambi9n
los conceptos de &
Partitioner
8ritableComparable
Comparator
2l algoritmo es el siguiente&
Por cada l:nea' se emite 5Ae,' value6' Ae, siendo la clave del (oin ,
value el resto de la l:nea7 Los tipos de datos intermedios deben
ser id9nticos para cada fuente de datos7
Para evitar esto' ;abr:a *ue conseguir *ue el primer valor -nion.ata
sea siempre de tipo #almacen$7
Sin embargo' solo ;a, una fuente *ue puede beneficiar de la localidad
de los datos 5cuidado' los inputSplit tampoco se corresponden mu, bien
con los blo*ues <.FS7776& la segunda fuente se tiene *ue recuperar
desde la red7
Los (oins en !ap"educe
Partitioned !ap Joins 5II6
Las claves del (oins deben ser las Ae,s de cada fuente de datos7
Los (oins en !ap"educe
Partitioned !ap Joins 5III6
2stas claves son de tipo Bext' por lo cual' si realmente estas claves
representan I.s' es necesario ;acer padding 5para *ue #J$ sea inferior a
#/Q$ por e(emplo6
Para un full outer (oin ;a, *ue poner #outer$ 5en ve+ de #inner$6
2l Buple #value$ tiene un elemento por cada una de las fuentes *ue se
cru+an7 2n nuestro e(emplo' ;a, J fuentes& primero emplo,eePat; , luego
dptPat;7
!ultipleInputFormat
Para los *ue acaban antes' despu9s de este e(ercicio existe otro
e(ercicio opcional dnde se desarrolla un (ob !ap"educe *ue
contiene a la ve+ unos map (oins , un reduce (oin7 Se trata del
e(ercicio 17
2(ercicios& el reduce (oin
Patrones de diseo con !ap"educe
3ptimi+ando el %ordcount
>ersin b)sica
3ptimi+ando el %ordcount
map5offset' line6
foreac; %ord % in line&
emit5%'/6
reduce5%ord' IteratorFintG values6
sum H Q
foreac; v in values&
sum IH v
emit5%ord' sum6
5/JK' del elefante , el pa,asod6
5/1R' dencuentran el otro elefanted6
5deld' /6 5delefanted' /6 5d,d' /6 5deld' /6 5dpa,asod' /6
5dencuentrand' /6 5deld' /6 5dotrod' /6 5delefanted' /6
Fic;ero de entrada&
Salida del mapper&
5deld' L/' /' /M6 5delefanted' L/' /M6
5dencuentrand' L/M6 5dotrod' L/M6
5dpa,asod' L/M6 5d,d' L/M6
2ntrada del reducer&
Con un combiner
La agregacin local en cada tarea map puede ser ptima 5si cabe en
memoria7776
<a, *ue tener cuidado con la gestin de memoria& todos los datos
intermedios se guardan en un ?nico <as;!ap *ue se libera solo al final del
inputsplit7 Sin embargo' teniendo en cuenta *ue un blo*ue <.FS es
N1!]e/JP!]' podemos imaginar *ue los datos intermedios *uepan en un
;eap de /G]4JG] 5a no ser *ue se ;aga un producto cartesiano77767
3ptimi+ando el %ordcount
C)lculo de medias con combiner
Idea& cambiar el particioner para *ue todos las pares con el mismo
elemento #I$ va,an al mismo reducer7
Normalmente una tarea map recibe muc;os datos 5N1!]' /JP!]7776 *ue
tratar
777
NLines , cumputacin
Parameter s%eep
NLine no suele usarse muc;o en <adoop& es me(or de(ar *ue una misma
tarea traba(e con muc;os datos 5debido al over;ead de arrancareparar una
tarea67
2ntrada de los !aps& / ?nico fic;ero con varias l:neas7 Cada l:nea
contiene los par)metros para / simulacin
Job !ap43nl,
NLines , cumputacin
Generacin de datos
2s un problema *ue&
Idea&
-sar Nline
Nodos
L:neaseconexiones
"edes de ordenadores
Problemas& ;a, muc;os #+eros$ 5m)s a?n en la vida real777 Aun*ue una
persona tenga muc;os contactos en FacebooA' solo ser) una pe*uea
proporcin de todos los usuarios de F]6& muc;o espacio 5,
computacin7776 para nada7
Grafos
:1 :2 :) :>
:1 Q / / Q
:2 Q Q Q /
:) Q / Q Q
:> Q Q / Q
"epresentacin de grafos 5II6
>enta(as&
Problemas& es dif:cil calcular los inlinAs 5;abr:a *ue #invertir$ las listas6
Grafos
:1 :2 :) :>
:1 Q / / Q
:2 Q Q Q /
:) Q / Q Q
:> Q Q / Q
N/& NJ'NK
NJ& N1
NK& NJ
N1& NK
Problema del S;ortest Pat;
Iniciali+acin&
Por lo tanto&
2l !apper&
emit5I.' 5d'Lista>ecinos66
emit5>' d I /6
Grafos
Parallel ]readt;4First Searc; 5>I6
2l "educer&
contadores