extracción de información social desde twitter y análisis mediante hadoop

Upload: esau-acevedo

Post on 07-Jul-2018

214 views

Category:

Documents


0 download

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