extracción de información social desde twitter y análisis mediante hadoop
Post on 07-Jul-2018
219 Views
Preview:
TRANSCRIPT
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
1/124
Universidad Carlos III de Madrid
Escuela Politécnica Superior
Grado en Ingeniería Informática
Proyecto de Fin de Grado
Extracción de información social desde Twitter
y análisis mediante Hadoop
Autor : Cristian Caballero MontielTutor : Daniel Hi!ero "lonso#MardonesCoTutor : $!an Man!el Tirado Mart%n
Septiem!re "#$"
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
2/124
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
3/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
AG%A&ECIMIE'T(SEsta sección &a sido reser'ada para mostrar todo mi aradecimiento a todas esas personas (!e)
de !n modo ! otro) me &an ay!dado ofreci*ndome s! apoyo y paciencia en toda mi etapa !ni'ersitaria+
En primer l!ar) necesariamente teno (!e dar las racias a mis padres y a mi &ermana por
comprenderme y por apoyarme en todo momento y a mi no'ia) por la excesi'a paciencia (!e &a tenido
conmio) además de s! total apoyo) compresión y los b!enos momentos (!e me &ace pasar a diario+
" todos mis amios y ,coleas-) por permitirme desconectar al!nos fines de semana y pasar
b!enos ratos) y a todos mis compa.eros de clase y profesores) tanto los de la !ni'ersidad) como los
de mi anti!o instit!to y coleio) por(!e sin ellos) no podr%a &aber escrito este doc!mento+
" Daniel Hi!ero y $!an Man!el Tirado) t!tor y co#t!tor de este proyecto) no solo por &aberme
!iado d!rante el desarrollo de este proyecto) sino por(!e racias a ellos p!de reali/ar !na formación
extra acad*mica y profesional compainándolo con el est!dio del rado+ Esto) sin d!da) &a sido !n
ran p!nto de inflexión para mi carrera profesional) ya (!e me &a ay!dado a 'alorar la importancia de
se!ir in'estiando y traba0ando en el ámbito de la informática+
" todo el personal de la 1ni'ersidad Carlos 222 de Madrid) destacando los docentes e
in'estiadores del r!po de ar(!itect!ra de comp!tadores y sistemas 3"4C567+
Por 8ltimo) a!n(!e de forma no tan directa y personal como los citados &asta a&ora) tambi*n
aradecer a todos los traba0adores de las tecnolo%as implicadas en el proyecto) ya (!e) sin ellos) esteproyecto no &abr%a tenido sentido+ De este n!meroso r!po de profesionales de las T2) destacar) entre
otros) al desarrollador de la librer%a Twitter9$ y a toda la ente (!e &ay por detrás del desarrollo de
Hadoop) por reali/ar !n framewor potente y distrib!ido para !sar en randes cl!sters de má(!inas+
Tambi*n mencionar a Goole por crear el paradima Map4ed!ce en cl!sters y) por tanto) ser
moti'ación para el desarrollo de Hadoop+
" toda la ente (!e desarrolla software open so!rce) por intentar &acer d%a a d%a !na informática
colaborati'a y accesible a más ente y a todas las empresas (!e colaboran con esto+
; en eneral) a toda la ente (!e me &a acompa.ado d!rante toda mi etapa !ni'ersitaria) por
todas las experiencias y b!enos momentos 'i'idos) y los (!e se 'i'irán+ " toda la ente (!e me &a
ec&ado !na mano en al8n momento para alcan/ar el ob0eti'o final: presentar este TFG como pre'io a
la obtención del t%t!lo del Grado en 2nenier%a 2nformat%ca+
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
4/124
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
5/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
)'&ICE &E C('TE'I&(S$* I'T%(&UCCI+'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ =>
=+= Moti'ación del proyecto+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=>
=+? 5b0eti'os del proyecto+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=@
=+< Propósito del doc!mento+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=@
=+9 Estr!ct!ra del doc!mento+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=A
"* ESTA&( &E, A%TE++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ =B
?+= eb ?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=B
?+=+= Definición de eb ?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=B
?+=+? 6er'icios de eb ?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?
?+=+< Tabla comparati'a de eb =+ y eb ?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?=
?+? Twitter ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++??
?+?+= !* es Twitter+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++??
?+?+? "l!nas definiciones importantes++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?9
?+?+< re'e descripción del f!ncionamiento de Twitter ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?9
?+< Twitter "P2+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?>
?+
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
6/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
?+> Procesamiento de ran cantidad de datos+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= iTable++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++? Goole File 6ystem +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++< Map4ed!ce+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@
A
A
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
7/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
9+= E'al!ación del extractor de Twitter +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JA
9+=+= Pr!ebas de comprobación del correcto f!ncionamiento del extractor ++++++++++++++++++++++++++++++++++JJ
9+=+? Kalidación de los re(!isitos del extractor++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++JB
9+? E'al!ación del filtrado de la tra/a+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++B
9+?+= Pr!ebas de comprobación del correcto f!ncionamiento del filtrado de la tra/a+++++++++++++++++++B
9+?+? 4endimiento de las aplicaciones Map4ed!ce de filtrado+++++++++++++++++++++++++++++++++++++++++++++++++++++B=
9+< E'al!ación del análisis de datos+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++B9
9++=+@ Hito @+ Elaboración de la memoria++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=<
>+? Planificación del calendario y diarama de Gantt+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=<
>+?+= Planificación del calendario+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=9
>+?+? Diarama de Gantt++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=>
>+< Pres!p!esto++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=J
>+++
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
8/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
@+=+? Concl!siones del análisis de datos++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==9
@+? Concl!siones personales+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==>
6* ,I'EAS 7UTU%AS+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ==A
8* %E7E%E'CIAS++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ==B
Cristian Caballero Montiel J
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
9/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
)'&ICE &E 7IGU%ASFi!ra =: Mapa de Mar!s "nermeier++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?
Fi!ra ?: Tráfico de !s!arios de Twitter+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?<
Fi!ra
Fi!ra 9: Diarama de sec!encia "P2 4E6T Twitter ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?@
Fi!ra >: Diarama de sec!encia "P2 6treamin Twitter+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?A
Fi!ra @: Capas de Clo!d Comp!tin++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
10/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
Fi!ra ?9: 4elación entre las tra/as completa y filtrada del ranin de !s!arios con más tweets ++++++++AB
Fi!ra ?>: Top = de !s!arios con más tweets para la tra/a filtrada ++++++++++++++++++++++++++++++++++++++++++++++++++++++AB
Fi!ra ?@: Top = de !s!arios con más tweets para la tra/a filtrada+++++++++++++++++++++++++++++++++++++++++++++++++++++J
Fi!ra ?A: Fl!0o de datos Map4ed!ce para obtener los tweets por fec&a de cada !s!ario++++++++++++++++++++J?
Fi!ra ?J: 6e!imiento de tweets para el !s!ario Lmari'iromero+++++++++++++++++++++++++++++++++++++++++++++++++++++++++J<
Fi!ra ?B: 2nter'alos s!perior e inferior para los tweets de Lmari'iromero+++++++++++++++++++++++++++++++++++++++++++J9
Fi!ra
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
11/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
)'&ICE &E TA.,ASTabla =+ Tabla comparati'a eb =+ 's eb ?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++??
Tabla ?: Top site de los = sitios web más 'isitados++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?<
Tabla
Cristian Caballero Montiel ==
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
12/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
Tabla ?9: Calendario de planificación para el &ito >: E'al!ación del traba0o reali/ado+++++++++++++++++++++++++=>
Tabla ?>: Costes de personal+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=B
Tabla ?@: Costes de los materiales+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==
Tabla ?A: Cálc!lo del pres!p!esto total++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===
Cristian Caballero Montiel =?
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
13/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
AC%+'IM(S
$* A9S: "ma/on eb 6er'ices
"* API: "pplication Prorammin 2nterface
-* CU&A: Comp!te 1nified De'ice "rc&itect!re
1* &M: Direct Messaes
4* G.: Giayte
5* Gi.: Gia#binary#ytes
6* G7S: Goole Fyle 6ystem
8* GPU: Grap&ics Processin 1nit
;*
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
14/124
Extracción de información social desde Twitter y análisis mediante Hadoop.
"#* P((: Proramación orientada a ob0etos
"$* %T: 4etweet
""* SaaS: 6oftware as a 6er'ice
"-* S9: 6oftware
"1* T.: Terayte
"4* T7G: Traba0o de Fin de Grado
"5* TI: Tecnolo%as de la información
"6* UC-M: 1ni'ersidad Carlos 222 de Madrid
"8* UM,: 1nified Modelin Ian!ae
";* U%,: 1niform 4eso!rce Iocator
-#* 9S&,: eb 6er'ices Description Ian!ae
Cristian Caballero Montiel =9
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
15/124
$* I'T%(&UCCI+'
En este apartado se pretende dar !na presentación al traba0o reali/ado en el proyecto+ Para ello)
se introd!ce el proyecto a tra'*s de s! moti'ación y s!s principales ob0eti'os+ "cto se!ido) se expone
c!al es el propósito de este doc!mento y por 8ltimo se detalla el alcance de este) en!merando cada
!no de los cap%t!los y !na bre'e descripción de cada !no de estos+
" randes rasos) el proyecto consiste en el desarrollo de !n extractor de Twitter) s! p!esta en
marc&a para la obtención de datos masi'os con respecto a las elecciones enerales de ?==) y el
posterior análisis !tili/ando Hadoop+ Esto 8ltimo res!el'e de forma m!y eficiente !no de los problemas
principales del proyecto: el procesamiento de randes cantidades de datos en !n tiempo ra/onable+
Para ello) se !tili/an sistemas distrib!idos y !n paradima de proramación (!e cada d%a cobra más
importancia dentro de las randes empresas: Map4ed!ce+
$*$ Motivaci>n del pro?ecto
D!rante estos 8ltimos a.os) &emos sido conscientes del ran crecimiento (!e &a tenido la web)
tanto es as% (!e f!e necesario dar paso a lo (!e &oy en d%a conocemos como eb ?+ N=O+
Este t*rmino está asociado a las aplicaciones web (!e permiten al propio !s!ario crear
contenido y facilitan la compartición de estos+ Es decir) es la representación de la e'ol!ción de las
aplicaciones tradicionales a las aplicaciones enfocadas al !s!ario final+
"l!nos de los ser'icios (!e ofrece la n!e'a eb ?+ son los sistemas de eti(!etado 3T"G67)
los) iis) etc+ Pero sin d!da) los ser'icios (!e más crecimiento en c!anto a !s!arios &an tenido
&an sido los Microbloin y las redes sociales+
Ias redes sociales son !n medio de com!nicación social centrado en encontrar ente para
relacionarse on#line+ Generalmente) esta ente mantiene !na relación de amistad entre s%) a!n(!e no
siempre oc!rre as%+ "l!nos e0emplos de redes sociales son Facebook N?O) Hi5 N
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
16/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo #$ %ntrodcción
Twitter contiene !na ran cantidad de contenido p8blico escrito por los !s!arios (!e) a men!do)
m!estra la opinión de *stos con respecto a determinados temas+ "demás) este contenido p!ede ser
anali/ado para obtener !na 'isión de la opinión eneral de los !s!arios) lo c!al p!ede ser 8til para
reali/ar est!dios sociolóicos) de mercado o aplicaciones similares+
6in embaro) esto tiene !na des'enta0a+ Ia cantidad de información a anali/ar es tanta (!e en
ocasiones s! posterior análisis se &ace m!y comple0o+ Por tanto) es interesante anali/ar todo este ran
con0!nto de datos !tili/ando sistemas distrib!idos+
Dentro de los framewor de software existentes (!e son !tili/ados 0!nto a sistemas de altas
prestaciones o sistemas distrib!idos) Hadoop es !no de los más no'edosos e interesantes para el
análisis de datos+
$*" (!@etivos del pro?ecto
Partiendo del apartado anterior) la finalidad del proyecto es elaborar !n extractor masi'o de
información para Twitter sobre las elecciones enerales de Espa.a (!e t!'ieron l!ar el ? de
Qo'iembre del ?== y !n posterior análisis de tendencias mediante Hadoop+
Ios datos extra%dos pertenecen al contenido p8blico de Twitter y por tanto) son accesibles para
todo tipo de !s!arios de la web+ 1na 'e/ extra%dos y almacenados estos datos) serán posteriormente
anali/ados para obtener res!ltados estad%sticos y posibles tendencias+Partiendo del ob0eti'o principal) podemos definir los si!ientes s!bob0eti'os:
• Est!dio de la sit!ación act!al de las redes sociales y la información (!e en ellas se '!elca)poniendo especial *nfasis en Twitter+
• Dise.o e implementación de !n extractor de datos sobre Twitter apoyado en el "P2 de6treamin) de !s!arios y de t*rminos+
• Dise.o e implementación de !n filtro de idioma sobre Hadoop para centrar n!estro est!dio8nicamente en los tweets (!e est*n en espa.ol+
• Dise.o e implementación de !na aplicación sobre Hadoop para análisis de datos y obtenciónde estad%sticas+
• "nálisis y e'al!ación de los res!ltados+
$*- Prop>sito del documento
El presente doc!mento se reali/ó con el fin de detallar el traba0o reali/ado d!rante el desarrollo
del TFG) ya sea traba0o de dise.o) implementación o de estión del proyecto+ "demás) el doc!mento
Cristian Caballero Montiel =@
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
17/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo #$ %ntrodcción
pretende mostrar los res!ltados del proyecto de !na manera sencilla para el lector+
"l ser !n traba0o con ran cara sociolóica y basada en datos reales obtenidos) el doc!mentom!estra el proyecto como !n traba0o de in'estiación en c!anto a la obtención y el análisis de los
res!ltados estad%sticos+
$*1 Estructura del documento
Para !na me0or lect!ra del doc!mento) se &a orani/ado la memoria en distintos apartados
dependiendo de los temas a tratar:
• Capítulo $* Introducci>n
Descripción eneral del proyecto+ Moti'ación para la reali/ación de este y definición de ob0eti'os
a se!ir para el correcto desarrollo del proyecto+
• Capítulo "* Estado del arte
6e est!dian las distintas tecnolo%a del contexto del proyecto act!al+ En concreto) se est!dian
por !n lado tecnolo%as de la eb ?+ en eneral) Twitter en partic!lar y el desarrollo !tili/ando el "P2
de Twitter De'elopers y por otro lado se est!dian los principales conceptos de la comp!tación de altas
prestaciones) distrib!ida y el análisis masi'o de datos+ De esto !ltimo) destacar las tecnolo%as de
Clo!d comp!tin) Map4ed!ce y Hadoop como implementación de este 8ltimo+
• Capítulo -* Tra!a@o realiado
Descripción del traba0o reali/ado con el mayor detalle posible+ Este cap%t!lo abarca desde el
dise.o e implementación de !n extractor de datos de Twitter &asta el análisis de los res!ltados
obtenidos) pasando por el filtrado de estos res!ltados+
• Capítulo 1* Evaluaci>n del pro?ecto
Presentación de las pr!ebas reali/adas para la 'erificación de (!e el traba0o reali/ado c!mple
con los ob0eti'os definidos+ "demás) se detallan las distintas pr!ebas de rendimiento reali/adas+
• Capítulo 4* Gesti>n del pro?ecto
En este apartado se m!estra la metodolo%a empleada d!rante el desarrollo del proyecto+ 6e
m!estra el proyecto como !n con0!nto de tareas y s!btareas planificadas en !n calendario y se
describe el pres!p!esto final de la reali/ación del proyecto+
Cristian Caballero Montiel =A
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
18/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo #$ %ntrodcción
• Capítulo 5* Conclusiones
4edacción de las principales concl!siones finales del proyecto) tanto a ni'el t*cnico como a ni'elpersonal+
• Capítulo 6* Tra!a@o futuro
4es!men del posible traba0o a reali/ar como consec!encia de los res!ltados de este o como
complemento+
• Capítulo 8* %eferencias
iblioraf%a) doc!mentación y referencias online (!e se &an cons!ltado como apoyo para lareali/ación del proyecto+
Cristian Caballero Montiel =J
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
19/124
"* ESTA&( &E, A%TE
En este apartado se detallará el análisis (!e se &a reali/ado como traba0o pre'io al desarrollo del
proyecto+ D!rante este análisis) se &an est!diado las distintas tecnolo%as existentes (!e mantienen
al8n tipo de relación con el proyecto yRo cada !na de s!s s!btareas+
" lo laro de este apartado) se mostrarán los conceptos teóricos sobre los temas a in'estiar y
se detallarán todos a(!ellos (!e sean más rele'antes o (!e tenan más importancia para el traba0o
(!e nos oc!pa+ Finalmente) se mostrarán comparati'as mostrando las caracter%sticas de las
sol!ciones disponibles y la elección de esta+
"*$ 9e! "*#
En este apartado se res!mirá bre'emente los aspectos más destacados de lo (!e llamamos
eb ?++ Esto &a dado m!c&o de (!e &ablar p!esto (!e es !n concepto reciente y alo ambi!o+ En
esta sección) daremos !na definición sobre el t*rmino eb ?+) comentaremos al!nos de los
principales ser'icios y mostraremos las principales diferencias con la eb tradicional o eb =++
"*$*$ &efinici>n de 9e! "*#
El t*rmino eb ?+ está ac!.ado a Tim &'(eilly NAO) f!ndador de &'(eilly )edia NJO d!rante !na
sesión de brainstormin para desarrollar ideas para !na conferencia+ El termino eb ?+ s!iere !na
n!e'a 'ersión de la eb) a!n(!e no se refiere a !n cambio en las especificaciones t*cnicas) sino más
bien a los cambios en c!anto a las especificaciones de los !s!arios finales y los cambios en el
desarrollo de páinas web+
Ia eb ?+ propone !na n!e'a 'isión de la orld ide eb) basada en la compartición de lainformación) el dise.o centrado en el !s!ario y la colaboración entre los !s!arios+ 1n sitio eb ?+ es
a(!el (!e permite a los !s!arios interact!ar entre s% y crear contenido dentro de !na com!nidad 'irt!al)
a diferencia de la eb tradicional en la (!e los !s!arios se limitan a obser'ar los contenidos+
1na definición alternati'a del termino 'endr%a dada por el fenómeno social s!rido a partir del
desarrollo de al!nas aplicaciones en internet tales como los blos y las redes sociales entre otras+
Todo lo anterior tambi*n tra0o consio !n cambio en el modelo de neocio !tili/ado en la orld ide
eb+
Ia si!iente fi!ra) conocida como mapa de )arks *ngermeier ) m!estra de forma 'is!al este
concepto+
Cristian Caballero Montiel =B
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
20/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
"*$*" Servicios de 9e! "*#
Ia eb ?+ ofrece !na serie de ser'icios o &erramientas dise.adas para la compartición o
creación de contenido o la interacción de los !s!arios+ En lineas enerales) estos ser'icios son los
si!ientes:
• EtiBuetado de recursos: Consiste en cateori/ar o eti(!etar los rec!rsos de la web) de talforma (!e la eti(!eta representa !na al!sión semántica al rec!rso referenciado+ Qormalmente)
esta orani/ación o clasificación la introd!cen los propios !s!arios+ 1na 'e/ indi/ados losrec!rsos) los sitios web proporcionan n!bes de tas en las (!e el !s!ario p!ede 'er los
contenidos con eti(!etas com!nes+
• .log: 1n blo es !n sitio web (!e recopila de forma cronolóica textos) art%c!los o determinadainformación de !no o 'arios art%c!los+ Ia información se m!estra en el orden en el (!e se crea
apareciendo primero el más reciente+ El t*rmino lo 'iene de eb Io S lo y se refiere a
el reistro de comentarios o de con'ersación entre !s!arios en la web+ Existen &erramientas
(!e permiten !na fácil creación y alo0amiento+ Ias más pop!lares son ,logger NBO y
-ordPressN=O+
• Micro.logging: Tambi*n conocido como Qanoloin) es !n ser'icio (!e permite a s!s
Cristian Caballero Montiel ?
Figra #$ )apa de )arks *ngermeier
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
21/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
!s!arios p!blicar mensa0es bre'es 3eneralmente) solo texto7 con !n tama.o alrededor de =9
caracteres+ Ias act!ali/aciones se m!estran '%a web) sms) aplicaciones ad &oc etc+ Estas
act!ali/aciones se m!estran en la páina de perfil del !s!ario y tambi*n son en'iadas a otros
!s!arios (!e tenan la opción de recibirlas+ El me0or e0emplo de este tipo de ser'icios es el (!e
!saremos a lo laro del proyecto por s! ran pop!laridad: Twitter +
• 9iis: T*rmino pro'eniente del &awaiano wii rápido) de forma sencilla 1na wii es !naweb c!yo contenido p!ede ser editado por m8ltiples !s!arios a tra'*s del na'eador web de
forma sencilla y rápida+ Ios !s!arios p!eden crear) modificar o eliminar texto de la web de
forma colaborati'a+ " men!do) las wiis f!ncionan como enciclopedias colecti'as+ Ia wii más
famosa es -ikipedia N==O+
• Compartici>n de recursos: Ia web ?+ lleó para adec!arse a la demanda de los !s!arios enel !so de la web+ 1no de los factores (!e más infl!yeron en esto f!e la necesidad de compartir
rec!rsos a tra'*s de la web+ Gracias a los ser'icios de compartición de rec!rsos !n !s!ario
p!ede s!bir a la n!be de internet cierto contenido al (!e c!al(!ier otro !s!ario tendrá acceso+
Existen infinidad de ser'icios de compartición de rec!rsos) (!e podemos clasificar se8n el tipo
de rec!rso compartido:
◦ Doc!mentos: Google ocs N=?O) %ss N=O) )etroFlog N=@O+
◦ Presentaciones: /lides0are N=AO+
◦ K%deos: 1otbe N=JO) 2imeo N=BO+
◦ Generalistas: )egapload =) )ediaFire N?=O) (apids0are N??O+
• %edes Sociales: Ias redes sociales son !n medio de com!nicación !tili/ado para relacionarseon#line por personas (!e comparten al8n tipo de relación+ En los 8ltimos a.os &an cobrado
m!c&a pop!laridad y cada d%a el n8mero de !s!arios de estas a!menta considerablemente+
Existen m!ltit!d de redes sociales) (!e podemos clasificar entre eneralistas y espec%ficas+ El
e0emplo más pop!lar entre las eneralistas es sin d!da Facebook y en c!anto a las espec%ficas
podemos encontrar redes como 3inkedin 3ámbito profesional7) )y/pace N?n: 6e encaran de recolectar la información sobre la (!e !ndeterminado !s!ario está interesado para poder mostrarle desp!*s información similar
3m8sica) libros) páinas webs+++7+ Como e0emplos contamos con Genis N?>O o *ma4on N?@O+
"*$*- Ta!la comparativa de 9e! $*# ? 9e! "*#
Ia si!iente tabla m!estra !na comparación entre la web =+ y la web ?+
= Desde el =B de enero de ?=?) )egapload se enc!entra in&abilitado por el F2 por s!p!esta infracciónde derec&os &!manos+ 6e estima (!e )egapload s!maba => millones de !s!arios reistrados y cerca
del 9U del total del contenido de la web N?O+
Cristian Caballero Montiel ?=
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
22/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Web 1.0 Web 2.0
eb como dise.o e información eb como com!nicación
Contenido estático Contenido dinámico
El !s!ario solo cons!lta el contenido El !s!ario crea y edita contenido+
P!blicación de los contenidos sin participación delos !s!arios
Participación en la creación de los contenido+
Existen 'ersiones finales Qo existen 'ersiones finales+ 6e estáconstantemente en 'ersión beta+
Tecnolo%a asociada con HTMI) $a'a6cript =+) etc Tecnolo%a asociada con VHTMI) $a'a6cript)Goole) etc
Ia act!ali/ación de los sitios web no es periódica Ia act!ali/ación de los sitios web se &ace de formaperiódica y por parte de los !s!arios+
Tabla =+ Tabla comparati'a eb =+ 's eb ?+
Como se p!ede 'er en la tabla) en la eb ?+ predomina el desarrollo constante y el contenido
dinámico) a diferencia de la eb =+ en la (!e predomina el contenido estático+ "demás) la eb ?+
!tili/a tecnolo%as n!e'as de desarrollo eb para dar soporte a la participación de los !s!arios+
Tecnolo%as de 6treamin) las redes sociales) etc son al!nos e0emplos (!e m!estran el ran a'ance
(!e está teniendo en los 8ltimos a.os la eb desde el p!nto de 'ista del !s!ario+ Por 8ltimo) tambi*n
&ay (!e destacar (!e este desarrollo constante por la inno'ación complica el desarrollo eb al ofrecer
f!ncionalidades comple0as) alo (!e en la eb =+ era impensable) p!esto (!e cada sitio eb era
simplemente !n contenedor de contenido (!e el !s!ario solo cons!lta) mientras (!e en la eb ?+)
predomina la creación y edición de contenido por parte de los !s!arios+
"*" TDitter
En este apartado daremos !na bre'e 'isión al lector del Twitter ) (!e es) c!al es s! estado act!al)
como f!nciona y en (!e consiste el "P2 de 6treamin de Twitter + Este 8ltimo lo !saremos para la
extracción de datos) parte esencial para el completo desarrollo del proyecto+
"*"*$ Fué es TDitter
Twitter es !na de las aplicaciones web (!e más crecimiento &a tenido en los 8ltimos a.os+
"!n(!e la mayor%a de la ente cree (!e Twitter es !na red social) s! filosof%a es la de !n sistema de
Microbloin+
Twitter f!e creado por ack orsey N?AO en mar/o de ?@ y lan/ado en $!lio del mismo a.o) sin
embaro) la 'ersión espa.ola apareció el 9 de Qo'iembre de ?B+ " d%a de &oy) se estima (!e cerca del
Cristian Caballero Montiel ??
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
23/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
=U de !s!arios de internet !tili/an diariamente Twitter ) como podemos 'er en el si!iente ráfico tomado
del sitio web de m*tricas www+"lexa+com ) (!e m!estra el !so de Twitter en los 8ltimos mesesN?JO+
En este mismo portal) podemos 'er (!e Twitter es el no'eno sitio web más 'isitado del m!ndo)
0!sto por deba0o de el sitio de 3JW7+ El top site lo forman los sitios de 1otbe3W aid! El principal motor de b8s(!eda c&ino+
@W iipedia Es !na enciclopedia ratis) libre) de entorno colaborati'o y accesible por todos+
AW indows li'e Motor de b8s(!eda de Microsoft+
JW Es !n cliente de mensa0er%a instantánea c&ino+
BW Twitter 6er'icio de microbloin (!e !tili/a mensa0er%a instantánea) interfa/ web o6M6+
=W "ma/on 6er'icio de comercio electrónico
Tabla +$ Top site de los #6 sitios web más 7isitados
Cristian Caballero Montiel ?<
Figra +$ Tráfico de sarios de Twitter
http://www.alexa.com/http://www.alexa.com/
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
24/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
"*"*" Algunas definiciones importantes
Twitter c!enta con !n cierto len!a0e para al!nos t*rminos) en este apartado) daremos el
sinificado a los t*rminos más !tili/ados dentro del m!ndo de Twitter.
• TDeet: Mensa0e (!e p!blica 3twittea7 el !s!ario+
• 7olloDers: 6e!idores de !na c!enta concreta+
• 7olloDing: C!entas a las (!e si!es desde !na c!enta concreta+
• Mencionar: En'iar !n tweet a !na persona espec%fica+ Para ello) es necesario indicarlomediante 8nombreestinatario
• Mensa@es &irectos: En'iar !n mensa0e pri'ado a otro !s!ario) de forma (!e solo p!eda leerloel !s!ario destinatario+
• %etDeet: 4een'iar3retwittear7 !n tweet+
•
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
25/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
"*- TDitter API
Twitter tiene p!blicada a disposición de c!al(!iera de s!s !s!arios s! propia "P2) de forma (!e
c!al(!iera p!ede crear aplicaciones (!e com!ni(!en con esta) teniendo en c!enta ciertas
restricciones+ En el presente apartado) &aremos !n análisis ex&a!sti'o acerca del "P2 de Twitter y
como este nos ay!da para el desarrollo del proyecto+
"*-*$ Partes del API
El "P2 de Twitter tiene tres partes claramente diferenciadas) dos pertenecen al "P2 4E6T y la
otra corresponde con el "P2 de 6treamin+ 6i bien) podemos di'idir el "P2 4E6T en dos "P2s)
(!edando el "P2 estr!ct!rado de la si!iente forma:
• API %est N?BO: Permite acceder a las f!nciones primiti'as o básicas de Twitter ) comoact!ali/aciones de estado) obtener información del cierto !s!ario 3nombre) descripción+++7 o
responder ciertos tweets) entre otras m!c&as cosas+
Cristian Caballero Montiel ?>
Figra :$ iagrama de casos de so Twitter
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
26/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
• API SearcH N
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
27/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Ias aplicaciones conectadas con el "P2 de 6treamin) al contrario) no establecen !na conexión
en resp!esta a !na petición del !s!ario+ En s! l!ar) el mantenimiento de la conexión de 6treamin lo
reali/a !n proceso diferente al proceso (!e recibe las peticiones HTTP+ El si!iente diarama m!estra
la interacción de los distintos elementos al !tili/ar el "P2 de 6treamin:
"*-*- ,i!rerías de TDitter
Desde el p!nto de 'ista del desarrollo) Twitter ofrece !na serie de librer%as para distintos
len!a0es de proramación con soporte al "P2 de Twitter+ En concreto) ofrece librer%as para los
si!ientes len!a0es: *ction/cript>= !lo?re= !oldFsion= Erlang= a7a= a7a/cript= .@ET=&b?ecti7eA!
Para el desarrollo del proyecto) nos centraremos 8nicamente en las librer%as de $a'a N
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
28/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
• TDitter1/ N
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
29/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
a tra'*s de internet 3de a&% el t*rmino ,n!be-7) racias al c!al loramos !na capacidad de cómp!to
mayor además de otras m!c&as 'enta0as) entre ellas las si!ientes:
• 4ed!cción de los tiempos de inacti'idad
• 4ed!cción de rec!rsos) ya (!e !tili/amos 8nica y excl!si'amente los necesarios
• 6implicidad y facilidad de !so
• "&orro de &ardware) ya (!e esta externali/ado
• "bstracción de implementación e infraestr!ct!ra
El termino Clo!d se !tili/a para definir !na ar(!itect!ra por la c!al !s!arios o desarrolladores
tienen acceso a aplicaciones o ser'icios a tra'*s de internet) donde la información fl!ye de formaaparentemente desconocida ,en la n!be-+ Gracias a esto) conse!imos abstraernos de la
infraestr!ct!ra f%sica (!e &ay detrás) ya (!e las aplicaciones se e0ec!tan en !na má(!ina f%sica (!e no
está especificada) los datos se almacenan en !bicaciones externas) c!ya administración es
responsabilidad de !n tercero+
Ia cla'e del Clo!d Comp!tin es la abstracción de la compartición de rec!rsos f%sicos a tra'*s
de la 'irt!ali/ación+ En !na red distrib!ida) el Clo!d Comp!tin &ace referencia a los ser'icios (!e se
e0ec!tan en esta a partir de la 'irt!ali/ación) !tili/ando protocolos de com!nicación en redes+
El Clo!d Comp!tin empe/ó en randes pro'eedores de ser'icios de 2nternet) como Goole y
*ma4on) (!e ofrec%an ser'icios de pao se8n el cons!mo reali/ado+ "demás) permite acceder a !n
catáloo de ser'icios estandari/ados a tra'*s de internet para responder las necesidades del neocio+En el caso de picos temporales de traba0o) en los (!e se necesita !n comp!to mayor) se p!ede paar
8nicamente por el cons!mo reali/ado) lo (!e nos permite adaptar el neocio a necesidades temporales
yRo extremas en todo momento) paando 8nicamente por lo (!e !tili/amos+
"*1*" Modelos de Cloud Computing
Ia comp!tación en la n!be pro'ee s!s ser'icios acorde a tres tipos de modelos o capas
diferenciadas: 2nfraestr!ct!ra como ser'icio 3%aa/: infrastr!ct!re as a ser'ice7) plataforma como
ser'icio 3Paa/: platform as a ser'ice7 y software como ser'icio 3/aa/: software as a ser'ice7+ Ia fi!ra@ m!estra la 0erar(!%a (!e !ardan estas capas N
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
30/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
ambiente de desarrollo) de tal forma (!e el desarrollador se ol'ida del &ardware sobre el (!e
traba0a) teni*ndolo a s! alcance en c!al(!ier momento+ "demás) traba0ando mediante este
paradima) la fi!ra del administrador de sistemas ,desaparece- p!esto (!e estos sistemas
son administrados por el personal encarado de ofrecer la plataforma como ser'icio+ El
e0emplo más claro de esta tecnolo%a es Google*ppEngine N9?O) -indows *4re N9O+ En el si!iente apartado) anali/aremos 'arias sol!cionesde este modelo de Clo!d Comp!tin+
"*1*- Tecnologías de Cloud Computing
Debido a (!e %aa/ es el ser'icio más !tili/ado de la comp!tación en la n!be y a s! importancia
para el desarrollo del proyecto) en este apartado) anali/amos y comparamos 'arias de las sol!ciones
existentes+
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
31/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
OpenStack
Es !n proyecto de códio abierto liderado por la empresa (ack/pace y la @*/*+ Permiteimplementar n!bes pri'adas en cl!sters racias a s!s tres componentes: !ompte D@&2*= &b?ect
/torage D/wift y %mage /er7ice DGlance+ N9@O
• Compute'(2AJ: Es el componente software encarado de instanciar y administrar redes demá(!inas 'irt!ales+ Entre s!s f!nciones) se enc!entran las de administrar los rec!rsos
'irt!ali/ados y las redes locales+ Está escrito en Pyt0on y !tili/a m!c&as bibliotecas externas)
como E7entlet 3para la proramación conc!rrente7) komb 3para la com!nicación *)P y
/3*lc0emy 3para el acceso a la base de datos7
• (!@ect StorageSDiftJ: 6e encara de crear ob0etos de almacenamiento masi'o) escalable yred!ndante+ Permite !n almacenamiento ilimitado ya (!e administra el espacio de forma
elástica) a!mentando y red!ciendo este c!ando sea necesario+
• Image Service GlanceJ: Proporciona el desc!brimiento) reistro y entrea de ser'icios paralas imáenes de discos 'irt!ales+ 6oporta 'arios formatos) entre ellos) 2%D2irtal,ox=
!&-+Dem= 2) y 2)D2)-are
Eucalyptus
Es !na plataforma open so!rce para la implementación de comp!tación en la n!be de forma
pri'ada en cl!sters+ Kiene interado con la distrib!ción GQ1RIin!x 1b!nt! desde la 'ersión B+9 como
!n 8til de comp!tación en la n!be N9AO+ Ias f!nciones más importantes de Ecalypts se res!men a
contin!ación:
• 2mplementa el "P2 de *ma4on -eb /er7ices D*-/) lo (!e le permite la interoperabilidad deEcalypts con ser'icios *-/+
• 2nstalación sencilla !tili/ando pa(!etes E, y (P) +
• Com!nicación se!ra ente procesos !tili/ando protocolos /&*P o -/A/ecrity
• Posee &erramientas de administración básica) as% como estión de !s!arios y r!pos+
• Posee soporte para má(!inas 'irt!ales Iin!x y indows+
Ia si!iente fi!ra) tomada de la web de Ecalypts) m!estra s! ar(!itect!ra de 6oftware :
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
32/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Como 'emos) existen) al menos cinco componentes o mód!los claramente diferenciados: !lod
!ontroller= !lster !ontroller= -alrs= /torage !ontroller y @ode !ontroller + Cada !no de estos
componentes esta implementado como !n ser'icio web independiente y tienen s! propia interfa/ web+
Este dise.o tiene randes 'enta0as) la más importante es (!e cada ser'icio eb expone !na "P2 bien
definida y completamente independiente del len!a0e de proramación !tili/ando el formato -/3
D-eb /er7ices escription 3angage+
OpenNebula
&pen@ebla es !na sol!ción software open so!rce (!e permite constr!ir clo!ds pri'ados)
p8blicos e &%bridos+ Ha sido dise.ado para ser interado en c!al(!ier tipo de red y centro de datos+N9JO
&pen@ebla administra y estiona el almacenamiento) la red y el m*todo de 'irt!ali/ación)
además) c!enta con tecnolo%a para monitori/ar estas tareas+ Tambi*n proporciona se!ridad
mediante s! sistema de estión de !s!arios+ Para ello) el !s!ario administrador será el 8nico (!e
indica (!e !s!arios 3no pri'ileiados7 !tili/an ciertas má(!inas yRo redes 'irt!ales+
Ia ar(!itect!ra interna de &pen@ebla se di'ide en tres capas claramente diferenciadas:
• Tools: Contiene &erramientas de estión empleando las interfaces proporcionadas por eln8cleo del proyecto+ Entre estas) contiene !na &erramienta (!e permite a los !s!arios
estionar de forma man!al la plataforma 'irt!al+
• Core: Contiene !n con0!nto de componentes para estionar y monitori/ar el n8cleo de&pen@ebla) es decir) &erramientas para estionar las má(!inas 'irt!ales) las redes 'irt!ales)
el almacenamiento y la infraestr!ct!ra f%sica 3nodos7+
• &river Modules: Contiene al!nos mód!los espec%ficos para interact!ar con el middleware+ Elmás destacado es el &iper'isor+
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
33/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Amazon EC2
*ma4on Elastic !ompte !lod 3 *ma4on E!+ 7 es !n ser'icio web (!e proporciona &erramientasde comp!tación en la n!be de manera flexible+ Posee !na interfa/ web (!e permite confi!rar y
monitori/ar los ser'icios de manera int!iti'a+ "demás) proporciona capacidad de manera ,elástica- y
áil) de tal forma (!e solo se !tili/an los rec!rsos estrictamente necesarios dependiendo de las
necesidades+
" diferencia de las sol!ciones est!diadas &asta a&ora) no se conocen los detalles internos del
f!ncionamiento del Clo!d de *ma4on) sin embaro) podemos 'er en la web de *ma4on N9BO las
distintas instancias (!e nos ofrecen se8n n!estras necesidades+
Ias instancias se paan por &oras de !so) es decir) si !n cliente desea !na instancia d!rante
menos de !na &ora) se fact!rará como !na &ora completa+
*ma4on E!+ está cambiando el modelo económico de la informática) ya (!e permite paar sólo
por la capacidad y los rec!rsos !tili/ados realmente+
Google Engne
Esta tecnolo%a) desarrollada por Google) nace con la intención de competir con *ma4on E!+ +
Google Engine tiene la misma filosof%a (!e s! competidor: obtener sistemas 'irt!ali/ados escalables
se8n las necesidades del !s!ario N>O+
Ias instancias de má(!inas 'irt!ales (!e ofrece Google Engine son imáenes basadas en
Jbnt #+.6; DPrecise Pangolin o !ent&s C.+ ) a!n(!e tambi*n nos permite crear n!estro propia
imaen del sistema de fic&eros+
1na 'e/ obtenidas las má(!inas 'irt!ales) Google Engine nos permite conectarlas para
!tili/arlas en forma de cl!ster+ "demás) se ofrece !na sencilla interfa/ para confi!rar c!al(!ier detalle
de la má(!ina yRo sistema operati'o+ Por e0emplo) se nos permite de forma sencilla confi!rar el
firewall o otras caracter%sticas del cl!ster 'irt!al creado+
"*1*1 %esumen de las tecnologías de Cloud Computing
1na 'e/ est!diadas al!nas de las distintas tecnolo%as (!e implementan Clo!d Comp!tin)podemos elaborar la si!iente tabla res!men con al!nas de s!s principales caracter%sticas+
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
34/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Implementaci>n Tipo deimplementaci>n
de Cloud
,engua@es deprogramaci>n
Sistemas de virtualiaci>n ,icencia delc>digo
(penStac Pri'ado Pyt&on Kirt!alox) EM1) KMware 5pen 6o!rce
Eucal?ptus Pri'ado $a'a) C Ven) KM) KMware 5pen 6o!rce
(pen'e!ula P8blico) pri'ado e&%brido+
C) C) 4!by)$a'a) 6&ell script
Ven) KM) KMare 5pen 6o!rce
Amaon EC" P8blico QR" Ven Propietaria
Google Engine P8blico QR" KM Propietaria
Tabla ;$ (esmen de las caracter"sticas de las solciones de !lod !ompting
"demás de lo mostrado en la tabla anterior) &ay (!e comentar (!e) mientras (!e todas estas
tecnolo%as se presentan como %nfraestrctre as a /er7ice) &ay bastante diferencia en c!anto a
&pen/tack ) Ecalypts y &pen@ebla por !n lado y *ma4on E!+ y Google Engine por el otro+
Ia primera diferencia clara es (!e las tres primeras son &erramientas de códio abierto) y s! !so
s!ele ser el de implementar comp!tación en la n!be para !n cl!ster pri'ado) mediante &erramientas de
administración y estión del cl!ster+ En cambio) *ma4on y Google ofrecen !n modelo distinto)
proporcionando infraestr!ct!ra y rec!rsos a tra'*s de la n!be) pero no permitiendo crear !na n!be
pri'ada+
"*4 Procesamiento de gran cantidad de datos
En los 8ltimos a.os) el 'ol!men de datos (!e !tili/amos a diario &a a!mentado
considerablemente+ Tanto es as%) (!e a la &ora de administrar con0!ntos masi'os de datos) s!
procesamiento p!ede tener tiempos pro&ibiti'os+
" men!do) aplicar procesamiento paralelo entre con0!ntos de má(!inas p!ede ser la sol!ción)
a!n(!e s!ele ser dif%cil apro'ec&ar al máximo los rec!rsos+
Por todo esto) en los 8ltimos a.os &an aparecido distintas sol!ciones (!e permiten mane0arrandes 'ol8menes de datos en sistemas distrib!idos) entre las (!e destacan las (!e anali/aremos en
este apartado: el motor de base de datos distrib!ido ,igTable) el sistema de fic&eros distrib!ido Google
File /ystem 3GF/7 y el framewor de software )ap(edce+ Todas creadas por Google+
"*4*$ .igTa!le
,igTable es !n motor de base de datos creado por Google para satisfacer las necesidades de la
compa.%a+ Comen/ó a ser desarrollado a principios de ?9 por la necesidad de crear !n sistema
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
35/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
s!ficientemente rande y distrib!ido) alo (!e n!nca se &ab%a pensado con los sistema se bases de
datos relacionales+ N>=O
El proyecto f!e presentado en Qo'iembre de ?@ en !n paper de Google N>?O + En el art%c!lo) se
m!estra el f!ncionamiento y rendimiento de ,igTable) además de al!nas de s!s aplicaciones reales
dentro de la compa.%a 3Google *nalytics) Google Eart0) etc7+
,igTable almacena la información en tablas m!ltidimensionales en forma de mapa) por tanto)
p!ede ser definido como !n mapa m!ltidimensional) distrib!ido y ordenado) en l!ar de el concepto de
base de datos relacional+
El mapa es indexado por la cla'e de la fila) la cla'e de la col!mna y !n timestamp y el 'alor
obtenido es !n strin) por tanto) el mapeo cla'e#'alor 'endr%a dado como si!e:
(fila:string, column:string, time:int64) → string
Ia si!iente fi!ra) tomada del paper de Google m!estra !n e0emplo:
• 7ilas: Ia cla'e de la fila es !n 6trin ordenado lexicoráficamente) normalmente de !nos =#= bytes de tama.o) a!n(!e al!nos de s!s campos s!peran los @9+ En la fi!ra J) se
corresponde con la 14I in'ersa+ ,igTable posee t*cnicas para particionar dinámicamente
ciertos ranos de filas) llamados tabletas+ Estas tabletas tienen !n tama.o de entre = y ?M y son particionadas c!ando a!mentan de este tama.o) consi!iendo as% balanceo de cara
entre los nodos+
• Columnas: Ias cla'es de las col!mnas son ar!padas en familias de col!mnas+ Por tanto)cada fila tiene !na familia de col!mnas y cada familia de col!mnas tiene !na serie de
col!mnas+ En la fi!ra J) la familia de col!mnas contendr%a ,contents- y ,anc&or- y cada !no de
estos podr%a tener !n con0!nto de 'alores cla'e#'alor indexados+ Ia forma de acceder a estos
8ltimos ser%a mediante la notación familia$colmna. En n!estro e0emplo) se p!ede 'er en
Kanc0or$cnnsi.comL y Kanc0or$my.look.caL
• TimeStamps: Cada celda p!ede contener 'arias 'ersiones del mismo 'alor) por tanto) es
Cristian Caballero Montiel
Figra M$ E?emplo de tabla en ,igTable Ie garda datos sobre páginas web
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
36/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
necesaria !na marca de tiempo o Time6tamp+ En ,igTable esto es representado mediante !n
campo de tipo 2nteer de @9 bits+ En la fi!ra J) podemos 'er como ,contents- tiene tres
'ersiones) marcadas con t y t@ mientras (!e Kanc0or$cnnsi.comL y Kanc0or$my.look.caL
tienen 8nicamente !na 'ersión) marcadas con tJ y tB+
Ias 'enta0as (!e tiene ,igTable con respecto a los sistemas de base de datos tradicionales son)
entre otras) escalabilidad) alta disponibilidad y tolerancia a fallos+
"*4*" Google 7ile S?stem
El sistema de fic0eros de Google DGoogle File /ystem) GF/) es !n sistema de fic&erosdistrib!ido propietario desarrollado por Google+ GF/ esta optimi/ado para el almacenamiento y
procesamiento de datos se8n las necesidades de Google+ F!e presentado en ?< en el art%c!lo de
Google con el mismo nombre N>
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
37/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Como 'emos) c!ando se 'a a escribir en !n fic&ero) el cliente ,pre!nta- en (!e !0nk/er7er
p!ede escribir) cons!ltando los meta#datos del )aster + Estos meta#datos se mantienen en memoria y
se s!elen reali/ar tareas periódicas con el fin de reorani/ar estos datos para optimi/ar las cons!ltas+
En eneral) la correspondencia de tama.o de meta#datos por blo(!e s!ele ser de @9 bytes) es decir)
se tienen @9 bytes de meta#datos por cada @9M de datos+
M!c&os de estos meta#datos no se !ardan de forma persistente) sino (!e el )aster pide esta
información periódicamente a los !0nk/er7ers+
Existen !0nk/er7ers primarios y sec!ndarios+ Ios sec!ndarios almacenan copias de los
primarios+ C!ando el cliente escribe en !n fic&ero) se solicita almacenamiento en el !0nk/er7er
primario+ Este asina a los datos !nos n8meros de serie y reali/a la escrit!ra+ "cto se!ido) el
!0nk/er7er primario solicita al sec!ndario (!e e0ec!ten las escrit!ras !tili/ando estos n8meros de
serie+
"*4*- Map%educe
)ap(edce es !n framework de software introd!cido por Google en ?9 en el paper
)ap(edce$ /implified ata Processing on 3arge !lsters N>>O+ Ia moti'ación principal de este
proyecto f!e dar soporte a la comp!tación paralela sobre randes colecciones de datos en r!pos de
ordenadores+
El nombre )ap(edce 'iene dado por la combinación de dos m*todos de la proramación
f!ncional: )ap y (edce+ "ct!almente) existen implementaciones de )ap(edce en C) $a'a y
Pyt&on+
Ias f!nciones )ap y (edce se aplican sobre pares de datos 3cla'e) 'alor7+ Ia f!nción )ap
toma como entrada !n par de datos de este tipo y de'!el'e !na lista de pares en !n dominio diferente+
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
38/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Map(clave1 , valor 1 ) → Lista (clave 2 , valor 2)
Esta operación se reali/a en paralelo para cada par de datos de entrada) por tanto se obtiene
!na lista de pares 3cla'e) 'alor7 por cada llamada a la f!nción+ Desp!*s de eso) el framewor de
)ap(edce ar!pa todos los pares enerados con la misma cla'e de todas las listas) creando !na
lista por cada !na de las cla'es eneradas+
Ia f!nción (edce se reali/a en paralelo tomando como entrada cada lista de las obtenidas
anteriormente+ Prod!ciendo !na colección de 'alores+
Reduce (clave 2 , lista(valor 2)) → Lista (valor 3 )
Desde la perspecti'a del fl!0o de datos) la e0ec!ción de )ap(edce consiste en e0ec!tar n tareas
)ap y m tareas (edce+ Ia fi!ra = m!estra el fl!0o de e0ec!ción de !n traba0o )ap(edce+
Para entender el f!ncionamiento) consideremos !no de los e0emplos básicos de )ap(edce+ 1n
traba0o )ap(edce (!e c!enta las apariciones de cada palabra en !na serie de fic&eros: -ord!ont +
En primer l!ar) se di'iden los datos de entrada en blo(!es de =@ a =?J M 3esta cantidad es
confi!rable por el !s!ario7 y cada !no de estos blo(!es se asina a !n proceso (!e reali/a la f!nción
de )ap) al (!e llamamos )ap worker o )apper + Cada )apper lee cada palabra y emite como dato
Cristian Caballero Montiel
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
39/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
intermedio el par 3palabra) ,=-7+ "cto se!ido) la f!nción intermedia o )erge ar!pa los datos con la
misma cla'e) de tal forma (!e se obtienen tantos pares 3cla'e) listaKalores7 como tareas (edce se
e0ec!tarán+ Cada !na de estas tareas (edce simplemente s!ma los 'alores de entrada y enera !na
8nica salida con la palabra y el n8mero de estas+ El si!iente pse!do#códio m!estra este e0emplo+
map(String key, String value):// key: Nombre del documento// value: Contenido del documentofor each word w in value:
Emitntermediate(w, !"!)#
reduce(String key, terator value$):// key: %na palabra
// value$: li$ta de valore$int re$ult & '#for each v in value$:
re$ult & ar$ent(v)#Emit(*$String(re$ult))#
"*5
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
40/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
•
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
41/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
Hadoop se p!ede e0ec!tar de tres formas distintas se8n n!estras necesidades:• Modo local o standalone: Es la confi!ración por defecto de Hadoop instalándolo en !n solo
nodo como !n proceso $a'a aislado+ 6e !tili/a para dep!rar+
• Modo pseudodistri!uido: Es !na confi!ración !tili/ada para pr!ebas en cl!sters+ En estemodo) se e0ec!tan los demonios de Hadoop en procesos diferentes de $a'a+
• Modo distri!uido: Es la forma de apro'ec&ar el potencial de Hadoop en randes cl!ster demá(!inas+ Con este modo) se apro'ec&a al máximo el paralelismo entre los procesos del
cl!ster+
"*5*"
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
42/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo +$ Estado del *rte
• 'eD 3or Times !tili/a Hadoop 0!nto con *ma4on E!+ para enerar art%c!los en formato PDFtomando como entradas imáenes escaneadas+
• 3aHoo f!e !na de las empresas instiadoras de Hadoop+ 1tili/an más de =) CP1s enmás de 9) má(!inas di'ididas en 'arios cl!sters para temas de b8s(!eda en web y tests
de escalabilidad+
• 7ace!oo !tili/a Hadoop para almacenar copias de los internos y randes fic&eros deanálisis+ Poseen dos cl!sters) !no de == má(!inas con JJ cores y !na tra/a de datos de)
aproximadamente) =? P+
• TDitter !tili/a Hadoop para procesar tweets) fic&eros de los y otros tipos de datos+
Cristian Caballero Montiel 9?
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
43/124
-* T%A.A/( %EA,I0A&(
En el cap%t!lo ? anali/ábamos las distintas tecnolo%as (!e !ardan al8n tipo de relación con el
proyecto+ 1na 'e/ reali/ado este est!dio) en este cap%t!lo &ablaremos sobre el traba0o reali/ado
d!rante el desarrollo del TFG+
Como ya se &a comentado) el traba0o reali/ado consiste en el dise.o e implementación de !n
extractor de Twitter y s! posterior análisis mediante Hadoop+ El ob0eti'o de este traba0o es obtener !n
con0!nto de datos de ran tama.o y !tili/ar Hadoop para anali/ar estos datos de forma distrib!ida+
Dado (!e los datos contienen !n f!erte carácter social 3elecciones enerales de ?==7) el análisis
posterior 'endrá dado en forma de ráficas y estad%sticas+ Con todo esto) se m!estra al lector como
Hadoop y el paradima de )ap(edce p!eden tener aplicaciones de inter*s para las empresas+
-*$ &esarrollo de un eKtractor para TDitter
El primer paso para el correcto desarrollo del proyecto es la reali/ación de !n extractor o
recolector de información para Twitter + Este extractor debe ser capa/ de obtener y almacenar
información sobre Twitter de manera estr!ct!rada) contin!a y) además) debe ser tolerante a fallos+
Para ello) se apoya en el "P2 de 6treamin de Twitter +
El extractor de Twitter está %nteramente escrito en $a'a y se apoya en la librer%a Twitter; para
reali/ar las operaciones de esc!c&a 36treamin7 de tweets+
En este apartado se mostrará el dise.o y la implementación del extractor o Crawler de Twitter +
Primero se mostrarán los re(!isitos (!e debe c!mplir el extractor en c!anto a la f!ncionalidad) se
mostrará y anali/ará la información concreta (!e se 'a a extraer además de la ar(!itect!ra y
f!ncionamiento del extractor y por 8ltimo) se detallará el proceso de desplie!e y e0ec!ción del
extractor+
-*$*$ %eBuisitos del eKtractor
Para el correcto desarrollo del proyecto) se &a decidido (!e el extractor debe c!mplir ciertos
re(!isitos para 'erificar s! correcto f!ncionamiento+
Ia si!iente tabla m!estra los re(!isitos m%nimos (!e se &an acordado para (!e el extractor se
adapte a las necesidades del proyecto+
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
44/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
I& &escripci>n del %eBuisito
4= El extractor debe ser capa/ de obtener los tweets filtrados por t*rminos !tili/ando el "P2 de 6treamin
4? El extractor debe ser capa/ de obtener los tweets por !s!ario !tili/ando el "P2 de 6treamin
4< El n8mero de !s!arios y t*rminos (!e se p!eden se!ir al mismo tiempo estará limitado 8nicamentepor el "P2 de Twitter
49 El extractor debe ser capa/ de rec!perarse de !n error de red
4> El extractor se apoyará en la librer%a Twitter9$
4@ Debe ser posible lan/ar 'arias instancias del extractor en má(!inas distintas con distintos !s!ariosmediante a!tenticación 5"!t&+
4A El extractor almacenará los tweets en fic&eros de texto
Tabla 5$ (eIisitos del extractor de Twitter
Ios re(!isitos 4= y 4? son re(!isitos f!ncionales+ Para conse!ir los datos (!e (!eremos)
necesitaremos extraer t*rminos concretos y !s!arios concretos+ Estos deben !ardar al!na relación
con las elecciones enerales de ?==+ Esto se detallará más en el próximo apartado+
Ia idea del extractor es intentar obtener !na tra/a lo mayor posible+ Para ello) necesitamos
extraer el mayor n8mero de tweets de distintos t*rminos y !s!arios+ En el re(!isito 4< se daba a
entender (!e) efecti'amente) Twitter tiene !nas restricciones en c!anto al !so del "P2 de 6treamin
para e'itar sobrecara+ Por cada e0ec!ción del extractor existe !na limitación de se!imiento de >
!s!arios y 9 t*rminos+ N>BO
El re(!isito 49 es bastante tri'ial+ 6!re de la necesidad de mantener e0ec!tando el extractor
d!rante 'arios d%as o meses+ El ob0eti'o es (!e) ante !na posible ca%da de red) el extractor sia
e0ec!tando+ D!rante ese inter'alo de tiempo) no se rec!perarán tweets) pero es necesario (!e el
extractor '!el'a a rec!perar datos !na 'e/ se restable/ca la conexión) sin nin8n tipo de inter'ención
man!al+
El re(!isito 4> es simplemente !na c!estión de dise.o+ 1na 'e/ probadas las demás librer%as de
Twitter ) se lleo a la concl!sión de (!e Twitter; era la librer%a más apropiada para c!brir n!estras
necesidades de forma sencilla y eficiente+
;a (!e el ob0eti'o es lan/ar 'arias instancias del extractor con distintos t*rminos y !s!arios) el
4@ impone (!e p!edan lan/arse 'arios extractores) siempre (!e el !s!ario confi!rado en cadaextractor sea diferente+ "l &acer esto) podemos ,saltarnos- la limitación de t*rminos y !s!arios del "P2
de Twitter y e0ec!tar los extractores en paralelo en !na n!be pri'ada) como explicaremos más
adelante+
Por 8ltimo) el 4A impone (!e el almacenamiento se realice mediante fic&eros de texto plano) en
l!ar de en base de datos+ "!n(!e !na base de datos permite almacenar !n n8mero amplio de filas en
!na 8nica tabla) las tablas s!elen tener !n n8mero máximo de filas 3aproximadamente) >)7 a
partir del c!al se deber%a reali/ar la partición de la tabla para optar por !n desplie!e distrib!ido+
"demás) dado (!e la intención es !tili/ar posteriormente Hadoop para filtrar y anali/ar los datos) el
enfo(!e claro es el de el almacenamiento en texto plano para desp!*s estionarlos por HF/+
Cristian Caballero Montiel 99
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
45/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
-*$*" Análisis de los datos a eKtraer
El ob0eti'o del extractor es obtener información sobre las elecciones enerales de ?==+ Para
ello) se &a p!esto en com8n !na serie de !s!arios y t*rminos (!e se deben se!ir para obtener la
mayor información posible con respecto a este contexto social+
De esta forma) los parámetros de los (!e se alimentará el extractor serán los si!ientes:
• Una lista de usuarios) (!e se almacenan en el fic&ero llamado Xsers.dat X+ Esta lista de!s!arios contiene el alias o ,screen@ame- de los !s!arios reistrados+ Estas c!entas de Twitter
tienen relación completa con las elecciones de ?== y p!eden ser di'ididos en tres randes
r!pos: !s!arios con clara rele'ancia en al!no de los partidos pol%ticos) periodistas y otros
!s!arios de inter*s+ El n8mero de !s!arios anali/ados son =@B>) correspondiente con el
n8mero de lineas del fic&ero Xsers.dat X+
• Una lista de términos) (!e se almacenan en el fic&ero Xterms.dat X+ Esta lista de t*rminoscontiene @= palabras relacionadas con las elecciones de ?== y el contexto social y pol%tico de
ese a.o+ Podemos di'idirlas en dos r!pos diferenciados:
◦ Iista de &as&ta&s: 1na lista de topics eneralistas a se!ir+ "l!nos e0emplos son: 9+6n=9#5m= 9eta= 9con(balcaba= 9noles7otes= 9ndebatedecisi7o= 9crisis= 9spanis0re7oltion=
etc.
◦ Iista de t*rminos: T*rminos (!e nos dan !n poco de 'isión de la opinión eneral sobre lasit!ación+ "l!nos e0emplos son: KeleccionesL= KcrisisL= KppL= KpsoeL= KiL= K4apateroL= Kra?oyL=
KrbalcabaL= etc.
-*$*- ArBuitecturaL diseo e implementaci>n del eKtractor
En este apartado trataremos los principales detalles del extractor: En primer l!ar) detallaremos
la ar(!itect!ra del extractor con respecto al "P2 de Twitter y el almacenamiento en disco+ "cto se!ido)
&ablaremos de s! implementación) mostrando cada !na de las clases !tili/adas y s!s operaciones
más importantes mediante !n diarama 1MI+
El extractor de Twitter está escrito %nteramente en $a'a y se apoya en el "P2 de Twitter
!tili/ando la librer%a Twitter; + Ia si!iente fi!ra res!me la ar(!itect!ra del extractor:
Cristian Caballero Montiel 9>
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
46/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
Como 'emos en la fi!ra) &ay dos componentes importantes dentro del extractor:
CrawlerManaer y 6toraeManaer+
El CrawlerManaer es el componente principal del extractor+ Este se encara de las f!nciones
principales) como son establecer la conexión con el "P2) rec!perar la conexión en caso de error y filtrar
los t*rminos y !s!arios a se!ir+ De esta manera) el extractor (!eda a la esc!c&a de los tweets (!e
si!en estos criterios) es decir) (!eda a la esc!c&a de los tweets (!e pertenecen a los !s!arios
definidos en el filtro de !s!arios y a los tweets (!e contienen al!no de los t*rminos definidos en el
filtro de t*rminos+ "demás) tambi*n responde ante otros e'entos) como p!eden ser el borrado o la
modificación de !no de estos tweets) entre otros+
El 6toraeManaer es el componente encarado del almacenamiento en disco+ Entre s!s
f!nciones) se enc!entran las de crear los fic&eros donde se escribirán los tweets) escribir en estos
fic&eros y cerrarlos+ 6e encara de almacenar !n total de =) tweets por fic&ero+ 1na 'e/
almacenado este n8mero) se cierra el fic&ero y se '!el'e a crear !no similar) en el (!e se se!irán
escribiendo los tweets+
Como ya &emos comentado) todos los mensa0es recibidos son !ardados en fic&eros de texto
plano) por lo (!e al iniciar el extractor) se crean 'arios fic&eros:
• = fic&ero al (!e se escribirá toda la salida del prorama) llamado:t!tter"streamng"####"$$"%%"&&"mm"log.t't
• = fic&ero en el (!e se escribirán !n mensa0e indicando los Tweets (!e) por di'ersas ca!sas) nose &an podido obtener) llamado:
t!tter"streamng"####"$$"%%"&&"mm"lmtatonNotce
• = fic&ero para escribir todos los mensa0es obtenidos por se!imiento de !s!arios) llamado:t!tter"streamng"####"$$"%%"&&"mm"(ser)ollo!s
• Q fic&eros) = por cada t*rmino introd!cido) para escribir todos los mensa0es obtenidos por
Cristian Caballero Montiel 9@
Figra #+$ *rIitectra del extractor
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
47/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
se!imiento de t*rminos) llamados: t!tter"streamng"####"$$"%%"&&"mm"t*rmno
donde:• 3333: Es el a.o de creación del fic&ero Y?==) ?=?Z
• MM: Es el mes de creación del fic&ero Y=++=?Z
• &&: Es el d%a de creación del fic&ero Y=++n Tipo del campo /ava
createdAt Contiene la fec&a de creación del tweet Date
contri!utors Contiene !na lista de ,contrib!tors-) o n!ll sino &ay nin!no
lonNO
Geo,ocation Contiene la latit!d y lonit!d del l!ar desdedonde se escribió el Tweet) o n!ll en casode (!e no &aya sido posible capt!rar estainformación
GeoIocation
HasHtagEntities Contiene !n Has&taEntity$65Q por cada
&as&ta) o n!ll en cado de (!e no &ayanin!no
Has&taEntityNO
id 2d del Tweet lon
in%epl?ToScreen'ame 6creen name del !s!ario al (!e se respondeo n!ll si el Tweet no es de resp!esta
6trin
in%epl?ToStatusId 2d del Tweet al (!e se responde o #= si elTweet no es de res!esta
lon
in%epl?ToUserId 2d del !s!ario al (!e se responde o #= si elTweet no es de resp!esta
lon
Cristian Caballero Montiel 9A
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
48/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
'om!re del campo &escripci>n Tipo del campo /ava
place Contiene !n Place$65Q con la informaciónasociada al l!ar 3pa%s) calle+++7
Place
retDeetCount Q8mero de retweet lon
retDeetStatus Texto del retweet o n!ll si no es !n 4T 6trin
source 5rien del tweet 3web) 2p&one) "ndroid+++7 6trin
urlEntities Contiene !n 14IEntity por cada !rl (!e&aya en el tweet
14IEntityNO
user Contiene !n 1ser$65Q con la informacióndel !s!ario del tweet 3nombre) descripción)imaen de perfil+++7
1ser
userMentions Contiene !n 1serMention$65Q por cada!s!ario mencionado con la información del!s!ario 3screenQame) nombre) id+++7 o n!ll sino &ay menciones
1serMentionEntity
is7avorited De'!el'e tr!e si el tweet es fa'orito o falseen caso contrario
boolean
Is%etDeet De'!el'e tr!e si el tweet es !n 4to false encaso contrario
boolean
IsTruncated De'!el'e tr!e si el tweet es ,tr!ncated- ofalse en caso contrario
boolean
TeKt Contiene el texto del tweet 6trin
Tabla C$ !ampos almacenados por cada tweet
Para entender esto me0or) el si!iente texto m!estra !na 8nica linea almacenada en !n fic&ero
de twitterOstreamingO9+6@ ) resaltando en nerita el nombre de los campos para mayor claridad:
Created at: on 0an '+ "1:'1:23 CE4 +'"+# contributors: null# geoLocation:null# hashtagEntities: 5a$htagEntity0S6Nmpl7$tart&8+, end&9",tet&;recorte$;< 5a$htagEntity0S6Nmpl7$tart&""9, end&"2",tet&;tomado$ta=a$;< 5a$htagEntity0S6Nmpl7$tart&"2+, end&"2>, tet&;+'N;< #ID: "?29+1'+'>'28192?+# inReplyToScreenName: null# inReplyToStatusId : @"#inReplyToUserId : @"# place: null# retweetCount: '# retweetedStatus: A4B0ulio0uanD A4 BCritiConetrer reparado$ para lo$ recorte$ en--- 2, +,"--- No FuerGa$ cambioG tomado$ta=a$ +'N AaHoypre$idente# source: web#urlEntities: # user: %$er0S6Nmpl7id&+8"3>>33+, name&;0uan Iran;,$creenName&;kaba$h9?;, location&;Elda;, de$cription&;*prendiendo a vivir,Fue e$ como ma$ $e di$fruta JKJ *L M *6A *A* 466S;,i$Contributor$Enabled&fal$e,profilemage%rl&;http://a'-twimg-com/profileKimage$/"8+'1"89>3/1M?ab"4AKnormal;,profilemage%rl5ttp$&;http$://$i'-twimg-com/profileKimage$/"8+'1"89>3/1M?ab"4AKnormal;, url&;null;, i$rotected&fal$e, follower$Count&2", $tatu$&null,profileDackgroundColor&;EECE3;, profile4etColor&;>21'18;,
Cristian Caballero Montiel 9J
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
49/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
profileOinkColor&;'99+?2;, profileSidebarIillColor&;E2E+E;,profileSidebarDorderColor&;2+CI;, profile%$eDackgroundmage&true,
$how*llnlineedia&true, friend$Count&>+, created*t&Iri ar +? "?:?9:1" CE4+'"", favourite$Count&", utc6ff$et&2>'', timeLone&;adrid;,profileDackgroundmage%rl&;http://a'-twimg-com/profileKbackgroundKimage$/28>+>+>"'/manitaKpiFue-Hpg;,profileDackgroundmage%rl5ttp$&;http$://$i'-twimg-com/profileKbackgroundKimage$/28>+>+>"'/manitaKpiFue-Hpg;, profileDackground4iled&true, lang&;e$;,$tatu$e$Count&918, i$PeoEnabled&true, i$Qerified&fal$e, tran$lator&fal$e,li$tedCount&', i$IollowAeFue$tSent&fal$e
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
50/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
Como 'emos) el extractor se compone de c!atro clases implementadas y !na interface)
6tat!sIistener) propia de Twitter; + " contin!ación se explican en detalle cada !na de las clases y s!s
m*todos implementados:
Clase %ataWrter
6e encara de escribir los fic&eros en disco+ Contiene los m*todos necesarios para crear)
escribir y cerrar !n fic&ero de ac!erdo al formato de nombrado decidido+ Entre s!s atrib!tos) &ay !n
6trin para indicar el a.o) mes) d%a) &ora y min!to de creación del fic&ero y !n ob0eto Printriter XfileX
(!e contiene el p!ntero al fic&ero+ 6!s m*todos más importantes son:
• Datariter36trin pat&) 6trin name7: Constr!ctor de la clase+ Escribe !n fic&ero en la r!taindicada en pat& y coiendo el nombre+ De manera (!e el fic&ero tendrá el si!iente nombre:
Ypat&ZRtwitter\streamin\;;;;\MM\DD\&&\mm\YnameZ
• write36trin text7: Escribe el texto pasado por parámetro XtextX en el fic&ero XfileX+
• etFile37: De'!el'e el ob0eto XfileX+
• close37: Cierra el fic&ero XfileX+
• obtainDate37: 5btiene la fec&a y &ora en la (!e se e0ec!ta el m*todo y asina ese 'alor a losatrib!tos correspondientes+
Clase Storage$anager
Clase (!e se encara del almacenamiento y la iniciali/ación de todos los fic&eros+ Posee !n
atrib!to filter!ery de tipo Filter!ery) en el (!e se indican los t*rminos por los (!e filtrar la esc!c&a)
mediante el atrib!to eywords) (!e contiene !na lista de palabras cla'e+ "demás) tambi*n contiene !n
ob0eto Datariter por cada fic&ero de t*rminos) otro para el se!imiento de !s!arios y otro para
escribir las limitaciones en el fic&ero de Iimitation Qotice+ "demás) c!enta con !n ob0eto de tipo
Twitter6tream) (!e se encara de estionar el listener (!e (!eda a la espera de obtener n!e'os
e'entos 3act!ali/aciones de estado) etc7+
Ios m*todos más destacables de la clase son los si!ientes:
• mae2nitialFiles36trin pat&7: Crea todos los fic&eros de cada t*rmino) el fic&ero de se!imientode !s!arios y el fic&ero de IimitationQotice en la r!ta pasada por parámetro en Xpat&X !tili/ando
la clase Datariter+
• addIistener36tat!sIistener stat!sIistener7: Este m*todo se encara de iniciali/ar el listener+ Elparámetro pasado) stat!sIistener) se corresponde a n!estra clase CrawlerManaer) ya (!e es
la (!e implementa esa interface+
• addFilter!ery37: 6e encara de a.adir los filtros al extractor y e0ec!tar el listener+
Cristian Caballero Montiel >
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
51/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
• closeFiles37: Cierra todos los fic&eros de la instancia del extractor+
Clase Cra!ler$anager
Clase (!e implementa la interfa/ 6tat!sIistener para responder a ciertos e'entos+ "demás)
iniciali/a !na instancia del 6toraeManaer e0ec!tando los m*todos necesarios para e0ec!tar el
extractor+
Ia clase CrawlerManaer debe implementar los si!ientes m*todos &eredados de
6tat!sIistener:
• onDeletionQotice36tat!sDeletionQotice stat!s7: 6e lan/a c!ando se borra !n tweet (!e tiene
al!no de n!estros filtros+ Para el caso del extractor) este m*todo no reali/a nin!na acción+
• on6cr!bGeo37: 6e lan/a c!ando se le oblia a !n !s!ario a eliminar s!s datos eoráficos+Tampoco tiene nin!na acción asinada+
• on6tat!s36tat!s stat!s7: 6e lan/a c!ando !n !s!ario escribe !n tweet (!e entra dentro deal!nos de n!estros filtros+ Para este caso) este m*todo se encara de comprobar si el tweet
pertenece a al!no de los t*rminos 3en c!yo caso) se escribirá en el fic&ero de t*rminos
correspondiente7 o al se!imiento de !s!arios 3en c!yo caso) se escribirá en el fic&ero de
se!imiento de !s!arios7+ "demás) se encara de comprobar c!ándo !n fic&ero &a lleado a
s! l%mite de tweets) establecido en =)+ En ese caso) cerrará el fic&ero y creará !no n!e'o
'ac%o) con !n n!e'o timestamp diferente) en el (!e se!irá escribiendo+
• onTracIimitationQotice3int n!mber5fIimited6tat!ses7: 6e lan/a c!ando al!nasact!ali/aciones de estado no &an podido llear por distintas limitaciones+ Para este caso) se
almacena !n mensa0e en el fic&ero twitter\streamin\IimitationQotice con el si!iente formato:
KGot track limitation notice$ > nmber&f3imited/tatses
• onException3Exception e7: 6e lan/a en caso de excepción del extractor) por e0emplo) !n errorde red+ En este caso) el extractor escribe en !n fic&ero de lo) !tili/ando la librer%a 3og; N@=O+
Clase +un,rogram
Es la clase principal del extractor+ 6e encara de obtener los parámetros de entrada y e0ec!tar el
extractor con estos+ Ios ar!mentos (!e recibe el parámetro es) en primer l!ar) la r!ta en la (!e se
escribirán los fic&eros) acto se!ido) el fic&ero (!e contiene los ids de !s!arios a los (!e se!r y por
8ltimo el fic&ero con los t*rminos a se!ir+ Es decir) arsNO será la r!ta en la (!e se escribirán los
fic&eros) arsN=O será la r!ta del fic&ero de texto donde leer los ids de los !s!arios a se!ir y arsN?O
será la r!ta del fic&ero de texto donde leer los topics (!e se!irá el extractor+
Cristian Caballero Montiel >=
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
52/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
-*$*1 &espliegue del eKtractor
1na 'e/ desarrollado y probado el extractor) es &ora de ponerlo en marc&a+ El ob0eti'o es
conse!ir extraer la mayor cantidad de datos) y para ello) se &a decidido e0ec!tar el extractor en 'arias
instancias) !tili/ando Clo!d Comp!tin y 'irt!ali/ación+
Ia &erramienta de Clo!d Comp!tin !tili/ada es Ecalypts N@?O+ Mediante esta &erramienta) nos
conectaremos a !na má(!ina (!e f!nciona como front#end e instanciaremos las má(!inas 'irt!ales+
En cada !na de estas má(!inas 'irt!ales) e0ec!taremos el extractor con distintos parámetros+
1na 'e/ conectados al front#end) primero debemos 'er (!e má(!inas &ay disponibles) para ello
!tili/amos:
euca@de$cribe@image$
En la salida) obtenemos la lista de imáenes disponibles) como 'emos a contin!ación:
ccaballeBcorrecamino$:R euca@de$cribe@image$*PE ami@''''''"" natty@Hava/di$k-img-manife$t-ml available
private 9>K>1 machine aki@'''''''f ari@''''''"'in$tance@$tore
*PE ari@''''''"' natty@Hava/initrd-img-manife$t-ml
available private 9>K>1 ramdi$kin$tance@$tore
*PE aki@'''''''f natty@Hava/vmlinu=-manife$t-ml availableprivate 9>K>1 kernel in$tance@$tore
Ia imaen (!e !tili/aremos es la (!e tiene el identificador ,ami#==-+ Para lan/ar las
má(!inas 'irt!ales) !tili/amos:
euca@run@in$tance$ @k mykey @t m"-cu$tom @n ? ami@''''''""
Con esto) instanciamos > má(!inas 'irt!ales+ Cada !na de estas má(!inas e0ec!tará !n
extractor+ Podemos 'er el estado de las má(!inas mediante el comando ,e!ca#describe#instances-
euca@de$cribe@in$tance$
Ia salida (!e obtenemos es la si!iente:
ccaballeBcorrecamino$:R euca@de$cribe@in$tance$
Cristian Caballero Montiel >?
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
53/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
AESEAQ*46Nr@vu88y+l9 twitter defaultNS4*NCE i@''''''c? ami@''''''"" ">2-""8-"19-"92
">2-""8-"19-"92pending mykey " m"-cu$tom +'"+@'9@+94"8:?3:1+L nova aki@'''''''f ari@''''''"'NS4*NCE i@''''''c> ami@''''''"" ">2-""8-"19-"9+
">2-""8-"19-"9+pending mykey + m"-cu$tom +'"+@'9@+94"8:?3:1+L nova aki@'''''''f ari@''''''"'NS4*NCE i@''''''c8 ami@''''''"" ">2-""8-"19-"9?
">2-""8-"19-"9?pending mykey 2 m"-cu$tom +'"+@'9@+94"8:?3:1+L nova aki@'''''''f ari@''''''"'NS4*NCE i@''''''c9 ami@''''''"" ">2-""8-"19-"91
">2-""8-"19-"91pending mykey 1 m"-cu$tom +'"+@'9@+94"8:?3:1+L nova aki@'''''''f ari@''''''"'NS4*NCE i@''''''c1 ami@''''''"" ">2-""8-"19-"9"
">2-""8-"19-"9"pending mykey ' m"-cu$tom +'"+@'9@+94"8:?3:1"L nova aki@'''''''f ari@''''''"'
Como 'emos) el estado inicial de las má(!inas es ,pendin- 3excepto =@
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
54/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
Con estos datos) podemos editar el fic&ero twitter;?.properties) (!e (!edar%a como si!e:
debug&trueoauth-con$umerTey&p=UUUUUUUUUUUUUUUUUwoauth-con$umerSecret&iOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV$oauth-acce$$4oken&28UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT*
oauth-acce$$4okenSecret&IPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUr$
Tendremos cinco fic&eros twitter;?.properties) !no por cada !s!ario de Twitter e7elopers (!e
&emos creado+ Con esto) el si!iente paso es compilar el extractor y crear n!estro fic&ero e0ec!table
empa(!etado en !n *( N@
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
55/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
!s!ario+ Por tanto) nos (!edará !na lista de t*rminos de =@B> @= ] =A>@+ Por tanto) c!atro instancias
del extractor se!irán 9 topics y la (!inta se!irá =>@+ Con esto (!eda c!bierto el se!imiento de
t*rminos+
En c!anto al se!imiento de !s!arios) a!n(!e la restricción de Twitter ) de > !s!arios no nos
afecta con los =@B> !s!arios (!e (!eremos se!ir) se &a decidido di'idir la extracción de !s!arios
entre los extractores para balancear la cara de cada !no de ellos+ Cada extractor se oc!pará de
!s!arios excepto el (!into) (!e se oc!pará de ?B>+
Para el se!imiento a tra'*s de !s!arios) es necesario saber el 2D de cada c!enta (!e se desea
se!ir+ 6in embaro) estas peticiones se &acen contra el "P2 de 4E6T) y existe !na limitación de
peticiones a la &ora+ N@9O
Ia sol!ción adoptada f!e obtener los 2Ds y almacenarlos de forma permanente) en cinco fic&eros
distintos[ c!atro con 2Ds de !s!arios y otro con ?B> 2Ds) coincidentes con los parámetros (!e sepasan al extractor+
Para empa(!etar el proyecto en !n fic&ero *( ) se !tili/a el si!iente comando) sit!ándonos en
la ra%/ del proyecto:
Har @cvfm etractor-Har ficheroeanifie$to. @C directorio con lo$ -cla$$.-
En el fic&ero de manifiesto) )*@%FE/T.)F ) se edita el classpat& del proyecto para referenciar a
las librer%as externas y se indica c!al es la clase (!e contiene el m*todo main+ Q!estro )*@%FE/T.)Ftiene el si!iente contenido:
anife$t@Qer$ion: "-'Cla$$@ath: - lib/log1H@"-+-">-Har lib/twitter1H@$tream@+-+-?@SN*S564-Harlib/twitter1H@core@+-+-?@SN*S564-Harain@Cla$$: Aunrogram
Para este caso) es necesario (!e las librer%as *( externas se enc!entren en el directorio en
(!e se enc!entra el extractor.?ar ) dentro de !n s!bdirectorio lib
-
8/18/2019 Extracción de información social desde Twitter y análisis mediante Hadoop
56/124
Extracción de información social desde Twitter y análisis mediante Hadoop.!ap"tlo :$ Traba?o reali4ado
necesario monitori/ar diariamente el estado del extractor) para re#lan/arlo en caso de ca%da y reali/ar
copias de respaldo periódicas+
-*$*4 Análisis de la informaci>n eKtraída
En este apartado) se reali/ará !n primer análisis de los datos extra%dos del "P2 de Twitter +
"demás) se 'a a orani/ar la información de los fic&eros de manera (!e la información (!ede
compacta+
El extractor est!'o en f!ncionamiento d!rante @ d%as desde el A de Qo'iembre de ?==+ Dado
(!e las elecciones enerales f!eron el ? de Qo'iembre) este inter'alo de fec&as nos permitió obtener
información sobre las elecciones) antes) d!rante y desp!*s del d%a electora
top related