Logo Studenta

tfg482

¡Este material tiene más páginas!

Vista previa del material en texto

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE 
TELECOMUNICACIÓN 
UNIVERSIDAD POLITÉCNICA DE CARTAGENA 
 
 
 
 
Trabajo Fin de Grado 
 
 
Herramientas para Big Data: Entorno Hadoop. 
 
 
 
AUTOR: Francisco Miguel Rodríguez Sánchez 
DIRECTOR: Diego Alonso Cáceres 
Septiembre / 2014
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Índice general Trabajo Fin de Grado 
3 
 
Índice general 
 
Capítulo 1. Introducción. ................................................................................................. 9 
 
Capítulo 2. Estado de la técnica. .................................................................................... 13 
2.1. R ........................................................................................................................... 14 
2.2. SAS ....................................................................................................................... 21 
2.3. SPSS ...................................................................................................................... 30 
2.4. MongoDB ............................................................................................................. 36 
2.5. Disco project ........................................................................................................ 42 
2.6. Storm ................................................................................................................... 47 
2.7. ¿Por qué se ha elegido la opción propuesta? ...................................................... 52 
 
Capítulo 3. Tecnología utilizada. .................................................................................... 55 
3.1. Big Data ................................................................................................................ 55 
3.2. Apache Hadoop. .................................................................................................. 59 
3.2.1. MapReduce. .................................................................................................. 62 
3.2.2. HDFS. ............................................................................................................. 72 
3.2.3. Hadoop 2.0: YARN (Yet Another Resource Manager). .................................. 74 
3.2.4. Ecosistema Hadoop. ..................................................................................... 79 
3.3. Instalación del servicio virtualizado de Hortonworks. ......................................... 81 
3.3.1 Instalación. ..................................................................................................... 82 
3.3.2 Características del servicio virtualizado. ........................................................ 87 
3.4. Hadoop Java API. ................................................................................................. 89 
3.5. Apache Pig. .......................................................................................................... 93 
3.6. Desarrollo de dos programas con Java y Pig. ..................................................... 101 
3.6.1 Ejemplo 1. .................................................................................................... 101 
3.6.2 Ejemplo 2. .................................................................................................... 110 
3.6.3 ¿Por qué elegir Pig? .................................................................................... 114 
 
Capítulo 4. Análisis de los datos de la TLP6. ............................................................... 115 
4.1 Exploración de los datos y objetivos. ................................................................. 115 
4.2 Análisis de los datos mediante Pig. .................................................................... 118 
4.3 Ejecución en una máquina virtual Hadoop. ....................................................... 125 
4.4 Resultados. ......................................................................................................... 127 
 
Capítulo 5. Conclusiones y trabajos futuros. .............................................................. 145 
 
Bibliografía. .................................................................................................................. 149 
 
ANEXO A: Instalación y configuración de Hadoop en entorno Linux ........................ 151 
A.1 Instalación. ........................................................................................................ 151 
A.2 Principales comandos Hadoop. .......................................................................... 171 
 
4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Índice de figuras Trabajo Fin de Grado 
5 
 
Índice de figuras 
 
Figura 1: Logo R .............................................................................................................. 14 
Figura 2: Esquema función R .......................................................................................... 14 
Figura 3:Consola y editor de R ........................................................................................ 16 
Figura 4: Principales funciones matemáticas en R. ........................................................ 18 
Figura 5: Funciones más complejas en R. ....................................................................... 19 
Figura 6: Parámetros de la función read.table en R. ...................................................... 20 
Figura 7: Parámetros de la función write.table en R. ..................................................... 21 
Figura 8: Logo de SAS ...................................................................................................... 22 
Figura 9: Estructura general de un programa SAS. ......................................................... 24 
Figura 10: Funcionamiento del paso de datos. .............................................................. 25 
Figura 11: Estructura de un data set. ............................................................................. 26 
Figura 12: Ventana inicial SAS. ........................................................................................ 26 
Figura 13: Importación de un archivo en SAS. ................................................................ 28 
Figura 14: Exportación de un archivo en SAS. ................................................................ 28 
Figura 15: Estructura de un procedimiento SAS. ............................................................ 29 
Figura 16: Logo del software SPSS .................................................................................. 30 
Figura 17: Ventana del editor de datos de SPSS. ............................................................ 32 
Figura 18: Menú Archivo SPSS. ....................................................................................... 33 
Figura 19: Editor de datos............................................................................................... 33 
Figura 20: Generación de tabla de frecuencias con SPSS. .............................................. 34 
Figura 21: Cuadro diálogo de Frecuencias. ..................................................................... 34 
Figura 22: Visor de resultados con tabla de frecuencias de variable Salario. ................ 35 
Figura 23: Cuadro dialogo Exportar resultados. ............................................................. 36 
Figura 24: Logo MongoDB. ............................................................................................. 36 
Figura 25: Distribución de datos a través de un clúster MongoDB. ............................... 37 
Figura 26: Ejemplo de modelo de documento para un blog .......................................... 40 
Figura 27: Esquema de uso de MongoDB en un entorno Hadoop. ................................ 42 
Figura 28: Logo de Disco project. ...................................................................................43 
Figura 29: Pantalla principal de Disco. ............................................................................ 44 
Figura 30: Arquitectura Disco. ........................................................................................ 45 
Figura 31: Actual logo de Apache Storm ........................................................................ 47 
Figura 32: Componentes de un clúster Storm. ............................................................... 49 
Figura 33: Ejemplo de una topología en Storm. ............................................................. 51 
Figura 34: Big Data en empresas. ................................................................................... 56 
Figura 35: Crecimiento en la generación de datos. ........................................................ 56 
Figura 36: Tipos de fuentes de datos. ............................................................................ 57 
Figura 37: Esquema de funciones del Data Scientist. ..................................................... 59 
Figura 38: Arquitectura básica de Hadoop MapReduce. ................................................ 61 
Figura 39: Esquema funcionamiento MapReduce. ........................................................ 63 
Figura 40: Esquema simplificado MapReduce. ............................................................... 64 
Figura 41: Esquema completo MapReduce. ................................................................... 65 
Figura 42: Ciclo de aplicación Hadoop. .......................................................................... 67 
Índice de figuras Trabajo Fin de Grado 
6 
 
Figura 43: Interacción JobTracker-TaskTracker. ............................................................... 67 
Figura 44: Esquema de ejecución. .................................................................................. 68 
Figura 45: Esquema detallado de ejecución. .................................................................. 70 
Figura 46: Arquitectura HDFS. ........................................................................................ 73 
Figura 47: Evolución de Hadoop 1.0 a 2.0. ..................................................................... 75 
Figura 48: Ejemplo de nuevas aplicaciones YARN. ......................................................... 76 
Figura 49: Arquitectura Hadoop 2.0. .............................................................................. 77 
Figura 50: Ejecución de una aplicación Hadoop 2.0. ...................................................... 78 
Figura 51: Ecosistema Hadoop. ...................................................................................... 80 
Figura 52: Especificaciones técnicas Hortonworks Sandbox 2.1. ................................... 81 
Figura 53: Esquema de funcionamiento de la Sandbox. ................................................ 82 
Figura 54: Icono VirtualBox. ........................................................................................... 83 
Figura 55: Ventana principal VirtualBox. ........................................................................ 83 
Figura 56: Ventana VirtualBox. ....................................................................................... 84 
Figura 57: Ventana VirtualBox. ....................................................................................... 84 
Figura 58: Ventana VirtualBox. ....................................................................................... 85 
Figura 59: Ventana VirtualBox. ....................................................................................... 85 
Figura 60: Ventana servicio virtualizado. ........................................................................ 86 
Figura 61: Ventana principal Hortonworks Sandbox 2.1. ............................................... 86 
Figura 62: Herramientas de la Hortonworks Sandbox.................................................... 87 
Figura 63: File Browser. .................................................................................................. 87 
Figura 64: HCatalog. ....................................................................................................... 88 
Figura 65: Apache Pig. .................................................................................................... 88 
Figura 66: Apache Hive. .................................................................................................. 89 
Figura 67: Ciclo de programa MapReduce. .................................................................... 90 
Figura 68: Ejemplo de DAG. ............................................................................................ 94 
Figura 69: Pig 0.13.0 instalado. ..................................................................................... 100 
Figura 70: Archivo .jar necesario. ................................................................................. 103 
Figura 71: Añadir .jar a un proyecto JAVA. ................................................................... 104 
Figura 72: Archivo ejemplo 1. ....................................................................................... 105 
Figura 73: Comando put en Hadoop. ........................................................................... 105 
Figura 74: File Browser (HDFS). .................................................................................... 108 
Figura 75: Ejecución completa ejemplo 1. ................................................................... 109 
Figura 76: Archivo para ejemplo 2. ............................................................................... 110 
Figura 77: Logo Teleco LAN Party. ................................................................................ 115 
Figura 78: Estructura de carpetas de los datos. ........................................................... 116 
Figura 79: Interior de una carpeta. ............................................................................... 116 
Figura 80: Comando SED. ............................................................................................. 119 
Figura 81: Tiempos de ejecución. ................................................................................. 126 
Figura 82: Numero de paquetes por minuto. ............................................................... 127 
Figura 83: Numero de paquetes por ejecución. .......................................................... 129 
Figura 84: Paquetes por hora. ...................................................................................... 131 
Figura 85: Numero de paquetes según protocolo por minuto. .................................... 132 
Figura 86: Trafico para el protocolo DNS. ..................................................................... 133 
Figura 87: Trafico por redes sociales............................................................................. 135 
Figura 88: Trafico por webs noticias. ............................................................................ 136 
Índice de figuras Trabajo Fin de Grado 
7 
 
Figura 89: Trafico por webs de música. ........................................................................ 137 
Figura 90: Tráfico por webs de cine. ............................................................................. 138 
Figura 91: Tráfico por juegos. ....................................................................................... 138 
Figura 92: Tráfico por correos electrónicos. ................................................................. 139 
Figura 93: Tráfico web en Google y Youtube. ............................................................... 140 
Figura 94: Tráfico para testdevelocidad.es ................................................................... 140 
Figura 95: Tráfico web para teleconlanparty.org .......................................................... 141 
Figura 96: Tráfico en las tres webs más visitadas. ........................................................142 
Figura 97: Barra de botones VirtualBox. ...................................................................... 151 
Figura 98: Nombre y SO VirtualBox. ............................................................................. 152 
Figura 99: Memoria RAM VirtualBox. .......................................................................... 153 
Figura 100: Unidad de Disco Duro VirtualBox. ............................................................. 154 
Figura 101: Características Disco Duro VirtualBox. ...................................................... 154 
Figura 102: Máquina Virtual hduser2. ......................................................................... 155 
Figura 103: Iniciar Máquina Virtual VirtualBox. ........................................................... 155 
Figura 104: Escritorio Ubuntu. ...................................................................................... 156 
Figura 105: Terminal Ubuntu. ....................................................................................... 157 
Figura 106: Fichero core-site.xml ................................................................................. 165 
Figura 107: Hadoop 2.4 Instalado. ................................................................................ 171 
Figura 108: Comando Version en Hadoop 1.2.1 ........................................................... 173 
 
8 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Capitulo 1 Trabajo Fin de Grado 
9 
 
Capítulo 1. Introducción. 
 
Actualmente vivimos en la era de los datos. La explosión de datos está sucediendo a 
todos los niveles en todos los dispositivos electrónicos, aplicaciones, individuos y 
organizaciones. Cada día se genera una cantidad ingente de datos que hace necesario 
medirlos a escala de cientos de petabytes y, por tanto, ser capaces de administrar y 
analizar esta gran cantidad de información se convierte en un requisito indispensable 
dentro del ámbito empresarial. Además el desarrollo de técnicas y tecnologías para el 
análisis de datos favorece, sin duda, a un mejor conocimiento de la sociedad y de sus 
necesidades. 
 
El término Big Data se refiere a la tendencia en el avance de la tecnología que ha 
abierto las puertas hacia un nuevo enfoque de entendimiento y toma de decisiones, la 
cual es utilizada para describir enormes cantidades de datos (estructurados, no 
estructurados y semi estructurados) que tomaría demasiado tiempo y sería muy 
costoso cargarlos a un base de datos convencional para su análisis. De tal manera que, 
el concepto de Big Data aplica para toda aquella información que no puede ser 
procesada o analizada utilizando procesos o herramientas tradicionales. Sin embargo, 
Big Data no se refiere a alguna cantidad en específico, ya que es usualmente utilizado 
cuando se habla en términos de petabytes o exabytes de datos. Lo que para una 
determinada empresa es Big Data puede podría no serlo para otra, esto depende de los 
recursos de los que cada una disponga. 
 
Para poder extraer valor de Big Data, se necesita un modo alternativo de procesar los 
datos. Una de las principales herramientas capaces de tratar e indagar en estos datos 
para extraer información de ellos se denomina Hadoop. Se trata de una plataforma de 
código libre y desarrollada por Apache que permite el procesamiento de grandes 
volúmenes de datos a través de clústeres, usando un modelo simple de programación. 
Además, su diseño permite pasar de pocos nodos a miles de nodos de forma ágil. 
Básicamente, Hadoop proporciona dos cosas: un sistema de archivos distribuidos 
(HDFS, Hadoop File System) y un framework de MapReduce (paradigma de 
programación) que permite dividir y paralelizar los cálculos entre un número indefinido 
de ordenadores de bajo coste. Del uso de un clúster de computadores convencionales 
en el análisis de datos radica una de las mayores ventajas de Apache Hadoop. 
 
El presente trabajo fin de grado tiene como objetivo presentar y estudiar la 
herramienta Apache Hadoop para el procesamiento de Big Data. Para ello, se realizaran 
una serie de ejemplos además del análisis de archivos provenientes del tráfico 
generado en la Teleco LAN Party 6 (TLP6) durante el primer día de celebración. El 
propósito del trabajo es evaluar la tecnología y todas las herramientas que se derivan 
de ella con la intención de mostrar todas sus posibilidades en el tratamiento de 
cualquier tipo de datos. Además se abordará la instalación y configuración paso a paso 
de la herramienta para distintas versiones. 
 
Capitulo 1 Trabajo Fin de Grado 
10 
 
Apache Hadoop es actualmente la herramienta libre más utilizada para el análisis de 
Big Data, si bien también existen alternativas diseñadas para problemas específicos y, 
por tanto, puede ser más acertado utilizar otro tipo de herramienta para el análisis de 
datos: 
 
 R: es un lenguaje y entorno de programación para análisis estadístico y gráfico. 
Se trata de un proyecto de software libre resultado de la implementación GNU 
del premiado lenguaje S. 
 
 SAS: se trata de un paquete que comprende un conjunto de programas de 
análisis estadístico de datos. Con esta herramienta se pueden realizar diferentes 
tipos de trabajo como almacenar o recuperar información, modificar la 
información existente y realizar estadística y análisis complejos de los datos. 
 
 SPSS: es un programa estadístico informático muy usado en las ciencias sociales 
y las empresas de investigación de mercado. Esta desarrollado en JAVA y es 
propiedad de IBM. 
 
 MONGODB: es un sistema de base de datos NoSQL (no relacional) orientado a 
documentos y desarrollado bajo el concepto de código abierto. 
 
 DISCO PROJECT: se trata de un framework de código abierto para computación 
distribuida basado en el paradigma de programación MapReduce. 
 
 STORM: es un sistema de computación distribuida a tiempo real de código 
abierto. Storm hace que sea sencillo procesar de manera fiable flujos de datos. 
 
 
En el siguiente capítulo, el estado de la técnica, se describirán con más detalle las 
alternativas propuestas, se explicarán las opciones de cada una de ellas, sus 
inconvenientes y se verá cómo muchas de ellas son combinables con Hadoop. Además 
se aclararán los motivos de la elección de Apache Hadoop como la herramienta a 
presentar durante el trabajo fin de grado. 
 
En el tercer capítulo, se abordará la explicación detallada de la arquitectura Apache 
Hadoop y porqué es útil dentro de la sociedad actual. Se explicarán todas sus 
funcionalidades y aspectos relevantes así como sus posibles opciones de instalación y 
configuración (Ver Anexo A) para comenzar con el análisis de los primeros ficheros. 
 
Se dejará para el cuarto capítulo el análisis de los archivos de provenientes del tráfico 
generado durante la TLP6. Para su tratamiento se utilizará un lenguaje de 
programación creado para Apache Hadoop: Pig. Se trata de un lenguaje de alto nivel 
desarrollado por Apache cuyo objetivo es la creación de programas de análisis de 
datos. 
 
Capitulo 1 Trabajo Fin de Grado 
11 
 
Además de todos los capítulos dedicados al análisis de la plataforma, en el capítulo 5 
se plantearán posibles ampliaciones y trabajos futuros que puedan continuar el trabajo 
realizado. Finalmente, se explicarán las conclusiones personales derivadas de este 
trabajo fin de grado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Capitulo 2 Trabajo Fin de Grado 
13 
 
Capítulo 2. Estado de la técnica. 
 
Como se citó en la introducción, existen alternativas para el análisis de datos a Hadoop. 
En este capítulo se van explicar todas aquellas plataformas que se enunciaron durante 
el primer capítulo. 
 
Como ya se ha mencionado, Hadoop proporciona dos elementos principales: un 
framework MapReduce y un sistema de archivos distribuido (HDFS). Por una parte,el 
paradigma de programación MapReduce permite crear algoritmos de análisis de datos 
para extraer valor de ellos a través del estudio de los resultados. Por otra parte, el 
sistema de archivos (HDFS) provee de una base de datos tolerante a fallos y con una 
alta disponibilidad. Por tanto, Hadoop proporciona una doble funcionalidad que en 
algunos casos las plataformas alternativas no van a poder ofrecer. Es decir, alguna de 
las herramientas cumplen únicamente una de las funcionalidades de Hadoop aunque 
de un modo muy eficiente. Varias de las herramientas pueden utilizarse dentro del 
entorno Hadoop para poder completar esta carencia. 
 
Las plataformas que se van a desarrollar en este apartado pueden ser dividas en tres 
grandes bloques: 
 
 Herramientas para el análisis de datos: No proveen de un sistema de gestión de 
archivos pero tienen gran capacidad para el análisis de ficheros de datos. Sobre 
este grupo se van a comentar tres plataformas: R, SAS, SPSS. 
 
 Bases de datos no relacionales: Proveen de un sistema de gestión de archivos 
distribuido capaz de manejar enormes cantidades de datos. Por contra, es 
necesario utilizar una herramienta complementaria para analizar los ficheros de 
datos. Dentro de este grupo se explicará la base de datos MongoDB. 
 
 Proyectos similares a Hadoop: Debido al éxito de Hadoop están surgiendo 
herramientas que intentan conseguir sus dos principales funcionalidades 
utilizando el mismo o distinto paradigma de programación. Estas herramientas 
se encuentran aún en sus primeras versiones y algunas no son demasiado 
utilizadas. Dentro de este grupo se desarrollaran los proyectos Disco project y 
Storm. 
 
 
 
 
 
 
 
 
Capitulo 2 Trabajo Fin de Grado 
14 
 
2.1. R 
 
R es un lenguaje de programación especialmente indicado para el análisis estadístico. 
 
 
Figura 1: Logo R 
 
 
R, cuyo logotipo se muestra en la figura 1, es un lenguaje Orientado a Objetos, y bajo 
este complejo término se esconde la simplicidad y flexibilidad de R. El hecho que R sea 
un lenguaje de programación puede desaminar a muchos usuarios que no tienen 
aptitudes en este tipo de tecnología. Esto no es necesariamente un inconveniente por 
dos razones. Primero R es un lenguaje interpretado (por ejemplo, Java) y no compilado 
(como C, C++, Fortran o Pascal) lo cual implica que los comandos escritos en el teclado 
son ejecutados directamente sin necesidad de construir ejecutables. Además la sintaxis 
de R es muy simple e intuitiva. Por ejemplo, una regresión lineal se puede ejecutar con 
el comando lm(y~x). Para que una función sea ejecutada en R debe estar siempre 
acompañada de paréntesis, inclusive en el caso que no haya nada dentro de los mismos 
(por ejemplo, ls()). Si se escribe el nombre de la función sin los paréntesis, R mostrará 
el contenido (código) mismo de la función. 
 
Orientado a Objetos significa que las variables, datos, funciones o resultados se 
guardan en la memoria activa del computador en forma de objetos con un nombre 
específico. El usuario puede modificar o manipular estos objetos con operadores 
(aritméticos, lógicos, y comparativos) y funciones (que a su vez son objetos). 
 
El uso y funcionamiento de los operadores es relativamente intuitivo. Una función en R 
se puede delinear del siguiente modo esquematizado en la figura 2: 
 
 
 
Figura 2: Esquema función R 
 
 
Los argumentos pueden ser objetos (“datos”, formulas o expresiones), algunos de los 
cuales pueden ser definidos por defecto en la función. Una función en R puede carecer 
totalmente de argumentos, ya sea porque todos están definidos por defecto o porque 
la función realmente no tiene argumentos. 
 
Capitulo 2 Trabajo Fin de Grado 
15 
 
R fue inicialmente diseñado por Robert Gentleman y Ross Ihaka, miembros del 
Departamento de Estadística de la Universidad de Auckland, en Nueva Zelanda. No 
obstante, una de las grandes ventajas de R es que hoy en día es, en realidad, fruto del 
esfuerzo de miles de personas en todo el mundo que colaboran en su desarrollo. 
Por otra parte, R se considera la versión libre de otro programa propietario, llamado S 
(creado por John Chambers) o S-Plus, desarrollado por los Laboratorios Bell. Aunque las 
diferencias entre R y S son importantes, la mayoría del código escrito para S funciona 
en R sin modificaciones. 
 
El código de R está disponible como software libre bajo las condiciones de la licencia 
GNU-GPL, y puede ser instalado tanto en sistemas operativos tipo Windows como en 
Linux o MacOSX. Desde la página principal se puede acceder tanto a los archivos 
necesarios para su instalación como al resto de recursos del proyecto R [Ref1, WWW]. 
 
 
 
Principales objetos R para el análisis de datos. 
 
En el lenguaje de R, los elementos u objetos que se vayan definiendo, bien por el 
propio usuario, bien como resultado de funciones, deben ser distinguidos para un uso 
correcto. Por ejemplo, una matriz, por su propia definición, es una colección de 
números configurados en filas y columnas, todas ellas de la misma longitud. Sin 
embargo, en ocasiones es necesario reunir números en vectores y estos en algún 
objeto cuando no todos ellos tienen la misma dimensión, esto es posible en un tipo 
especial de objeto llamado lista. Desde luego, una lista no es una matriz, luego, aunque 
sirva para introducir en ella vectores de dimensiones distintas, no admite las 
operaciones matriciales habituales. No se pretende ser exhaustivo en la descripción de 
los tipos de objeto de R y, por tanto, solo se van a enunciar los más utilizados para el 
análisis de datos: 
 
 Vectores. 
 Matrices. 
 Hojas de datos (Data frames) 
 
 
Vectores. 
 
Un vector en R puede contener una colección de números o de caracteres no 
numéricos. Para definir un vector, por ejemplo, el vector x = (1, 3, 5), se usaría la orden: 
x<-c(1,3,5) como se ha realizado en la figura 3. 
 
Notar que se utiliza el operador asignación <- aunque el operador = es igualmente 
valido (en las últimas versiones de R). Reseñar también que es la función de 
concatenación c() la que construye el vector. 
 
Capitulo 2 Trabajo Fin de Grado 
16 
 
 
Figura 3:Consola y editor de R 
 
 
De forma más general, la función seq() permite definir secuencias desde un inicio hasta 
un fin con una determinada separación entre ellos. Por ejemplo, y<-seq(-3,3,0.5) 
proporciona: 
 
[1] -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 
 
También es útil la función rep() para definir vectores como repetición de otros vectores. 
Por ejemplo, rep(0,100) devolvería un vector de 100 ceros. O también, rep(1:3,3) 
devolvería: 
 
[1] 1 2 3 1 2 3 1 2 3 
 
Si se desea saber la longitud de un vector, se usará length(). Por ejemplo, length(y) 
devolvería el valor 13. Comentar, por último, que no hay problema en que un vector en 
lugar de incluir números incluya caracteres, siempre que éstos estén entre comillas. Por 
ejemplo, se podría definir el vector genero=c("Mujer","Hombre"). 
 
 
Matrices. 
 
Una matriz se define mediante la función matrix() a la que hay que especificar sus 
elementos y su dimensión. Por ejemplo, para definir la matriz 
 
 
Capitulo 2 Trabajo Fin de Grado 
17 
 
se utilizaría: 
 
matriz<-matrix(c(1,2,3,4,5,6,7,8,9),3,3) 
 
Las dimensiones (nº de filas y columnas) de la matriz pueden obtenerse mediante la 
función dim(). Por ejemplo, dim(matriz) proporcionaría el valor 3 3. Si se desea llegar a 
elementos concretos de una matriz se hará utilizando corchetes para indicar filas y 
columnas. Para realizar una multiplicación de dos matrices se utiliza el operador %*%. 
 
 
Data frames u hojas de datos. 
 
Las hojas de datos constituyen la manera más eficiente en que R puede analizar un 
conjunto estadístico de datos. Habitualmente se configuran de tal manera que cada fila 
se refiere a un elemento de la muestra que se analiza, mientras que cada columna hace 
referencia a las distintas variables analizadas. Con una nomenclatura estadística, 
diríamos que las filas sonlos casos y las columnas son las variables. Esa configuración 
hace que visualmente una hoja de datos parezca una matriz. Sin embargo, como 
objetos de R, son cosas distintas. Se va a explicar cómo se construye una hoja de datos 
con los datos de 3 personas, que incluye el color de sus ojos como factor, su peso y su 
altura. Se comenzaría definiendo el color de los ojos: 
 
ojos=factor(c("Azules","Marrones","Marrones"), 
levels=c("Azules","Marrones","Verdes","Negros")) 
 
Supongamos que los pesos y las alturas son, respectivamente, 68, 75, 88 y 1.65, 1.79, 
1.85. Entonces, se definiría la hoja de datos mediante: 
 
datos=data.frame(Color.ojos=ojos,Peso=c(68,75,88),Altura=c(1.65,1.79,1
.85)) 
 
Así, se tendrán tres variables, llamadas Color.ojos, Peso y Altura. 
 
Es posible forzar a que una matriz se convierta en una hoja de datos mediante la 
función as.matrix. Por ejemplo, datos2<-as.data.frame(matriz) convertiría matriz 
en una hoja de datos. Si se utiliza names(datos2) se verán los nombres que para las 
variables ha elegido por defecto R: 
 
[1] "V1" "V2" "V3" 
 
Si se desea modificar esos nombres de las variables, se utiliza de nuevo la función 
names(), forzando la asignación: 
 
names(datos2)<-c("Variable 1","Variable 2","Variable 3") 
 
El modo en que se puede acceder a los elementos de una hoja de datos es doble: 
 
Capitulo 2 Trabajo Fin de Grado 
18 
 
1. Se puede usar el mismo método que para las matrices. 
2. Se puede utilizar el operador $, de la siguiente manera. Para obtener los datos de la 
variable Color.ojos, por ejemplo, se escribiría datos$Color.ojos. 
 
Para saber el número de filas y de columnas de una hoja de datos se pueden utilizar las 
funciones nrow() y ncol(). Por ejemplo, ncol(datos) es 3. 
 
 
Funciones más utilizadas. 
 
A continuación se van a indicar las principales funciones de R. Se pueden encontrar 
todas las funciones matemáticas simples (log, exp, log10, log2, sin, cos, tan, asin, acos, 
atan, abs, sqrt. . .), funciones especiales (gamma, digamma, beta, besselI. . .), así como 
diversas funciones útiles en estadística. Algunas de estas funciones se detallan en la 
siguiente figura 4. 
 
 
 
Figura 4: Principales funciones matemáticas en R. 
 
 
Estas funciones devuelven un solo valor (o un vector de longitud 1), a excepción de 
range() que retorna un vector de longitud 2, y var(), cov(), y cor() que pueden devolver 
matrices. Las siguientes funciones, mostradas en la figura 5, pueden devolver vectores 
más complejos: 
 
Capitulo 2 Trabajo Fin de Grado 
19 
 
 
Figura 5: Funciones más complejas en R. 
 
 
 
Aparte de las funciones que facilita R, se pueden crear funciones propias lo cual será 
fundamental para el análisis de datos. Para ello se dispone del objeto function. La 
sintaxis es sencilla y se asemeja mucho a otros lenguajes de programación: 
 
NombreFuncion <- function (Argumento1,..., ArgumentoN) 
{ 
 expresión 1 
 ... 
 expresión N 
 } 
 
Si se desea obtener ayuda sobre el uso de alguna función cuyo nombre es conocido, se 
puede utilizar la ayuda de R simplemente antecediendo el nombre de esa función con 
un signo de interrogación. Por ejemplo, ?sort abrirá una ventana del explorador con 
todos los detalles sobre el uso de esa función, incluyendo ejemplos. 
 
 
 
 
Capitulo 2 Trabajo Fin de Grado 
20 
 
Importar/Exportar datos para su análisis. 
 
Para poder analizar datos, es necesario importarlos o cargarlos al entorno de trabajo. 
Para ello se va a explicar cómo utilizar las funciones necesarias para importar/exportar 
datos en R. 
 
R puede leer datos guardados como archivos de texto mediante la función read.table 
(con sus parámetros): 
 
read.table(file, header = FALSE, sep = "", quote = "\"‟", dec = ".", 
row.names, col.names, as.is = FALSE, na.strings = "NA", colClasses = 
NA, nrows = -1, skip = 0, check.names = TRUE, fill = 
!blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, 
comment.char = "#") 
 
La función read.table crea un data frame (hoja de datos) y constituye la manera más 
usual de analizar los datos en R. En la figura 6 se muestran sus principales parámetros. 
 
Figura 6: Parámetros de la función read.table en R. 
 
 
La función write.table guarda el contenido de un objeto en un archivo. El objeto es 
típicamente un data frame pero puede ser cualquier otro tipo de objeto (vector o 
matriz). Los argumentos (ver Figura 7) y opciones configurables son los siguientes: 
 
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol 
= "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, 
qmethod = c("escape", "double")) 
Capitulo 2 Trabajo Fin de Grado 
21 
 
 
 
Figura 7: Parámetros de la función write.table en R. 
 
 
R & Hadoop. 
 
Como se mencionó en la introducción, algunas de las herramientas que se proponían 
como alternativas, eran combinables con Hadoop. Este es el caso de R, que al ser un 
software libre la comunidad de desarrolladores ha creado un paquete que permite 
ejecutar en R en un clúster Hadoop. Este paquete se conoce como Rhadoop, se trata de 
una colección de cuatro paquetes que permiten a los usuarios manejar y analizar datos 
mediante R en un cluster Hadoop. Estos paquetes han sido implementados y testeados 
por la empresa Cloudera y están disponibles en sus versiones pre instaladas de Hadoop 
CDH3 y CDH4 [Ref2, WWW]. 
 
 
 
2.2. SAS 
 
SAS (Statical Analysis System), cuyo logotipo se muestra en la figura 8, es un conjunto 
de software estadístico desarrollado por el SAS institute para el análisis avanzado de 
datos, business intelligence (inteligencia de negocio), manejo de datos y análisis 
predictivos. Es uno de los softwares más utilizados en el mundo empresarial para el 
análisis de datos [Ref3, WWW]. 
 
Capitulo 2 Trabajo Fin de Grado 
22 
 
 
Figura 8: Logo de SAS 
 
 
SAS está compuesto de módulos que tienen tareas específicas, los cuales son vendidos 
separadamente por el instituto SAS. Entre los módulos se encuentra el BASICO (BASE), 
que permite la manipulación de datos y obtener algunas tablas y medidas básicas, el 
STAT, que permite realizar los más variados análisis estadísticos, el IML, el cual es un 
lenguaje matricial muy similar a GAUSS o a MatLab. Entre otros módulos existe el OR, 
para investigación de operaciones, el QC, para control de calidad, el ETS, para el análisis 
de series de tiempo, y muchos otros. Inclusive el Instituto SAS ofrece un compilador 
propio de C++ para el desarrollo de programas que puedan integrarse al sistema SAS 
creado por el propio usuario. En este apartado únicamente se explicarán tareas 
realizadas con el modulo BASE ya que se trata del componente SAS mas utilizado para 
el análisis de datos. 
 
El funcionamiento de SAS se centra alrededor de tres tareas dirigidas a datos 
almacenados denominados datasets (conjuntos de datos): 
 
 Acceso a datos, crear y acceder a los datos que se requieren (ficheros, bases de 
datos, etc.). 
 Manejo de datos, da a los datos el formato que la aplicación requiere. 
 Análisis de datos, reduce o transforma los datos planos en información útil y 
significativa. 
 
 
SAS fue concebido por Anthony J. Barr en 1966. Como estudiante de la Universidad 
Estatal de Carolina del Norte de posgrado 1962-1964, Barr había creado un análisis del 
lenguaje de modelado variación inspirada en la notación estadística de Maurice 
Kendall, seguido de un programa de regresión múltiple que genera el código máquina 
para realizar transformaciones algebraicas de los datos brutos. Sobre la base de esos 
programas y su experiencia con los archivos de datos estructurados, creó SAS, 
introduciendo procedimientos estadísticos en un marco archivo con formato. De 1966 a 
1968, Barr desarrolló la estructura y el lenguaje de SAS fundamental. En 1971, SAS fue 
ganando popularidad dentro de la comunidad académica. Una de las ventajas del 
sistema se analiza experimentos con los datos que faltan, que era útil para la industria 
farmacéutica y agrícola,entre otros. En 1973, John Sall se unió al proyecto, haciendo 
importantes contribuciones de programación en la econometría, series de tiempo, y el 
Capitulo 2 Trabajo Fin de Grado 
23 
 
álgebra matricial. En 1976, SAS Institute, Inc. fue incorporado por Barr, Goodnight, Sall, 
y Helwig. Como hito resaltable, en 2010 se introdujo una versión gratuita de SAS para 
estudiantes. 
 
 
 
Estructura general de un programa SAS. 
 
En la Figura 9 se muestra la estructura que posee un programa SAS. El paso de datos 
(DATA step) toma los datos y crea una estructura denominada data set (conjunto de 
datos) en un formato especial que contiene los datos y sus características, los cuales 
serán después utilizados para los respectivos análisis. 
 
Un programa SAS consiste de instrucciones que terminan con punto y coma (;). Una 
instrucción es un conjunto de palabras reservadas, nombres o identificadores y 
operadores. Las instrucciones en un programa SAS se escriben en formato libre, 
pueden empezar y finalizar en cualquier parte de una línea. Algunas de estas 
instrucciones son agrupadas en "steps" o pasos y las demás se denominan 
instrucciones globales. Hay dos tipos de steps: 
 
 DATA STEP o paso de datos que permiten la creación de conjuntos de datos SAS 
(SAS data sets), estos comienzan con la palabra reservada DATA. 
 PROC STEP o paso de procedimientos, ejecutan un proceso o procedimiento 
SAS, comienzan con la palabra reservada PROC. 
 
 
Capitulo 2 Trabajo Fin de Grado 
24 
 
 
Figura 9: Estructura general de un programa SAS. 
 
El fin de un "step" es marcado por la instrucción RUN, para algunos procedimientos con 
la instrucción QUIT o por la palabra PROC o DATA que marque el comienzo del siguiente 
step. 
 
 
Data sets o conjuntos de datos SAS. 
 
Un “data set” es un conjunto o colección de valores que toman las variables o campos 
de una entidad (observación) junto con la estructura descriptiva de los mismos, 
organizados en forma de una matriz rectangular (filas y columnas) y que puede ser 
reconocida y procesada por el sistema SAS. Una variable es un dato que representa una 
característica de un objeto de interés para el estudio. Las variables se representan por 
medio de nombres SAS y pueden ser de dos tipos: 
Capitulo 2 Trabajo Fin de Grado 
25 
 
 Variables carácter o alfanuméricas, consisten de cadenas de caracteres, los 
cuales pueden ser letras, dígitos y caracteres especiales. La longitud máxima de 
una cadena de caracteres es de 200. 
 Variables numéricas, almacenan números que pueden estar precedido por un 
signo mas (+) o menos (-), representan cantidades numéricas. Están 
almacenados en formato de punto flotante en 8 bytes, lo que proporcionan 
espacio para 16 ó 17 dígitos. 
 
La estructura rectangular de un conjunto de datos SAS implica que todas las variables y 
todas las observaciones tiene que tener un valor. Sin embargo, muchas veces existen 
valores ausentes. Por defecto, un valor ausente numérico se visualiza como un punto y 
un alfanumérico se visualiza como un espacio en blanco. La obtención de estos 
conjuntos de datos implican un procesado de los datos de origen, su esquema se 
puede ver en la figura 10. 
 
Una observación es un grupo de valores que representan los diferentes atributos o 
características de un objeto o entidad en estudio, una persona, una región, un país, un 
almacén, etc. Un “data set”, cuya estructura se representa en la figura 11, está 
constituido por dos áreas: 
 
 Área de descriptores, donde se almacena la documentación del conjunto de 
datos, es decir, información descriptiva del conjunto de datos y sus variables. 
Los atributos del conjunto de datos incluyen etiqueta del conjunto de datos, 
número de observaciones, longitud del registro, fecha de la última 
modificación. La descripción de las variables incluyen atributos tales como, 
nombre, tipo, longitud, formato, etiqueta e índice. 
 Área de datos, en esta parte se almacenan los datos en forma rectangular (filas 
y columnas). 
 
 
 
Figura 10: Funcionamiento del paso de datos. 
 
 
Las columnas en la tabla corresponden a las variables o campos de los datos y las filas 
las observaciones o registros. El número máximo de variables que se puede crear en un 
data set es 1024 mientras que en el número de observaciones no hay límite. 
Los data set pueden ser almacenados en forma temporal, los cuales se borran o se 
pierden en el momento de cerrar una sesión de trabajo con el SAS, por lo general se 
Capitulo 2 Trabajo Fin de Grado 
26 
 
almacenan en medios permanentes. De esta forma los datos pueden ser utilizados en 
futuras aplicaciones sin necesidad de volverlos a crear. Cuando se inicia el software SAS 
se observa una ventana similar a la figura 12. 
 
 
 
Figura 11: Estructura de un data set. 
 
 
 
 
Figura 12: Ventana inicial SAS. 
 
 
 
Funciones principales en SAS. 
 
Cuando se trabaja con las variables de la base de datos, es usual generar nuevas 
variables a partir de aquellas que ya existían utilizando funciones y operadores. 
Igualmente se emplean funciones y operadores para escribir condiciones utilizando, 
Capitulo 2 Trabajo Fin de Grado 
27 
 
además, símbolos para comparar expresiones. Aunque hay una gran cantidad de 
funciones sólo se describen aquellas que son más usuales: 
 
 FUNCIONES NUMÉRICAS: 
 
ABS(EXPRESIÓN) Valor Absoluto 
SQRT(EXPRESIÓN) Raíz Cuadrada 
ROUND(EXPRESIÓN) Redondear 
ROUND(EXPRESIÓN, PRECISIÓN) Redondear con cierta precisión 
EXP(EXPRESIÓN) Exponencial 
LOG(EXPRESIÓN) Logaritmo 
LOG2(EXPRESIÓN) Logaritmo con base 2 
LOG10(EXPRESIÓN) Logaritmo con base 10 
COS(EXPRESIÓN) Coseno 
SIN(EXPRESIÓN) Seno 
TAN(EXPRESIÓN) Tangente 
 
 FUNCIONES ALEATORIAS: 
 
RANBIN(SEMILLA, n, p) Binomial de parámetros "n" y "p" generada a partir de 
 cierta semilla. 
RANNOR(SEMILLA) Normal de media "0" y desviación estándar "1" 
 generada a partir de cierta semilla. 
RANPOI(SEMILLA, a) Poisson de parámetro "a" generada a partir de cierta 
 semilla. 
RANUNI(SEMILLA) Uniforme con parámetros "0" y "1" generada a partir de 
 cierta semilla. 
 
 FUNCIONES ALFANUMÉRICAS: 
 
INDEX Busca una expresión de caracteres dentro de una cadena 
COMPRESS Elimina caracteres específicos de una cadena. 
LOWCASE Convierte todas las letras del argumento a minúsculas 
UPCASE Convierte todas las letras del argumento a mayúsculas 
LENGTH Retorna la longitud del argumento 
LEFT Alinea a la izquierda una expresión de caracteres 
REVERSE Da la vuelta a una cadena 
SCAN Selecciona una palabra en particular de una expresión de caracteres 
SOUNDEX Codifica una cadena a sonidos para facilitar comparaciones 
SPEDIS Determina la similitud entre dos palabras expresada cómo una 
 distancia 
SUBSTR Extraes una subcadena de un argumento 
TRANSLATE Reemplaza caracteres específicos de un argumento 
 
 
 
Capitulo 2 Trabajo Fin de Grado 
28 
 
Exportar/Importar datos en SAS. 
 
 
Figura 13: Importación de un archivo en SAS. 
 
 
Como se aprecia en la Figura 13, para la lectura de datos externos se utiliza la 
instrucción INFILE. En ella se menciona la ruta dónde se encuentra el fichero que 
contiene los datos. La opción LRECL de la instrucción INFILE indica la longitud máxima 
de cada línea (es indispensable si cada registro tiene más de 256 caracteres). 
 
En la instrucción INPUT se declara las variables que se van a leer. Se escriben las 
columnas dónde se encuentran las variables si el fichero de datos externo es de 
formato fijo. En el caso en qué el fichero de datos está delimitado, no tiene sentido 
especificar las columnas. Por defecto, el separador que lee SAS es el espacio, pero con 
la opción DLM se define el delimitador deseado, por ejemplo, DLM='09'x si el fichero es 
encuentra delimitado por tabuladores o DLM=';' si el fichero es encuentra delimitado 
por el símbolo “; ". 
 
Cualquier procedimiento trabaja con el dataset deseado utilizando la opción 
DATA=nombre_dataset. Por defecto, SAS utilizael dataset creado en el paso DATA más 
reciente. 
 
Es útil observar el listado producido por PROC PRINT para comprobar que 
efectivamente los datos se han leído perfectamente (en ocasiones no se cometen 
errores en la sintaxis aunque los datos no se leen adecuadamente). 
 
 
 
Figura 14: Exportación de un archivo en SAS. 
 
 
Capitulo 2 Trabajo Fin de Grado 
29 
 
Como se observa en el ejemplo de la Figura 14, la instrucción FILE es necesaria para 
exportar los datos de un dataset a la ruta y formato deseados, pero sólo sirve para 
ficheros de tipo texto. 
 
En la instrucción PUT se mencionan las posiciones de cada variable (en el caso que el 
fichero de datos sea de formato fijo). 
 
 
Procedimientos SAS. 
 
La sintaxis de los diferentes procedimientos suele ser muy similar. La mayoría de 
opciones sirven para casi todos los procedimientos, pero con prudencia, ya que cada 
procedimiento tiene sus particularidades y no siempre estas opciones tienen sentido 
en cualquier PROC. En líneas generales, la estructura de un procedimiento puede ser 
similar a la de la figura 15: 
 
 
 
Figura 15: Estructura de un procedimiento SAS. 
 
 
A continuación se enuncian los principales procedimientos del componente BASE de 
SAS: 
 
APPEND Procedure Añadir datos a un dataset 
CALENDAR Procedure Calendario con fechas y citas 
CATALOG Procedure Manipula los catálogos de SAS 
CHART Procedure Gráficos de barras sencillos 
CIMPORT Procedure Importación de datos de otras versiones de SAS 
COMPARE Procedure Comparación de Bases de datos 
CONTENTS Procedure Contenidos de un dataset 
COPY Procedure Realiza copias de un dataset 
CORR Procedure Correlación entre variables 
CPORT Procedure Exportación de datos de otras versiones de SAS 
DATASETS Procedure Manipulación de datasets (eliminar). 
DBCSTAB Procedure Produce tablas de conversión a caracteres de doble-byte. 
DISPLAY Procedure Visualizar títulos 
EXPLODE Procedure Títulos grandes, vía explotar caracteres. 
Capitulo 2 Trabajo Fin de Grado 
30 
 
EXPORT Procedure Exportar datasets a texto (p. ej.) 
FORMAT Procedure Dar etiquetas a los valores de las variables 
FORMS Procedure Para crear etiquetas adhesivas 
FREQ Procedure Tablas de frecuencias 
FSLIST Procedure Examinar ficheros externos al SAS 
IMPORT Procedure Importar datos (p. ej. en formato texto) 
MEANS Procedure Resumir los datos 
OPTIONS Procedure Opciones de la ventana OUTPUT 
PLOT Procedure Diagramas de dispersión sencillos 
PMENU Procedure Prepara Menús para ser utilizados por otros módulos de 
 SAS 
PRINT Procedure Listar datasets 
PRINTTO Procedure Definir las rutas dónde almacenar las ventanas LOG y 
 OUTPUT 
RANK Procedure Crea Rangos a partir de variables. 
REGISTRY Procedure Mantiene el registro de SAS. 
REPORT Procedure Para realizar informes 
SORT Procedure Ordenar un dataset 
SQL Procedure Consultas a datasets mediante instrucciones SQL 
STANDARD Procedure Produce variables estandarizadas 
SUMMARY Procedure Estadísticos de Resumen 
TABULATE Procedure Tablas 
TIMEPLOT Procedure Diagramas de dispersión respecto el tiempo 
TRANSPOSE Procedure Transpone datasets 
 
 
 
2.3. SPSS 
 
El programa SPSS (Statistical Product and Service Solutions), cuyo logotipo se muestra 
en la figura 16, es un conjunto de potentes herramientas de tratamiento de datos y 
análisis estadístico. Al igual que el resto de aplicaciones que utilizan como soporte el 
sistema operativo Windows, SPSS funciona mediante menús desplegables y cuadros de 
diálogo que permiten hacer la mayor parte del trabajo simplemente utilizando el 
puntero del ratón. 
 
 
Figura 16: Logo del software SPSS 
Capitulo 2 Trabajo Fin de Grado 
31 
 
SPSS es muy usado en las ciencias sociales y las empresas de investigación de mercado. 
Originalmente SPSS fue creado como el acrónimo de Statistical Package for the Social 
Sciences aunque también se ha referido como "Statistical Product and Service 
Solutions". Sin embargo, en la actualidad la parte SPSS del nombre completo del 
software (IBM SPSS) no es acrónimo de nada [Ref4, WWW]. 
 
Es uno de los programas estadísticos y de análisis de datos más conocidos teniendo en 
cuenta su capacidad para trabajar con grandes bases de datos y un sencillo interface 
para la mayoría de los análisis. La versión 12 de SPSS permitía realizar análisis con 2 
millones de registros y 250.000 variables. El programa consiste en un módulo base y 
módulos anexos que se han ido actualizando constantemente con nuevos 
procedimientos estadísticos. Cada uno de estos módulos se compra por separado como 
en el caso de la herramienta anteriormente descrita SAS. 
 
SPSS fue creado en 1968 por Norman H. Nie, C. Hadlai Hull y Dale H. Bent. 
Entre 1969 y 1975 la Universidad de Chicago por medio de su National Opinion 
Research Center estuvo a cargo del desarrollo, distribución y venta del programa. A 
partir de 1975 corresponde a SPSS Inc. Originalmente el programa fue creado para 
grandes computadores. En 1984 sale la primera versión para computadores personales. 
Desde la versión 14, pero más específicamente desde la versión 15 se ha implantado la 
posibilidad de hacer uso de las librerías de objetos SPSS desde diversos lenguajes de 
programación. Aunque principalmente se ha implementado para Python, también 
existe la posibilidad de trabajar desde Visual Basic, C++ y otros lenguajes. El 28 de 
junio de 2009 se anuncia que IBM, meses después de ver frustrado su intento de 
compra de Sun Microsystems, adquiere SPSS, por 1.200 millones de dólares. 
 
 
Estructura de SPSS. 
 
Al iniciar una sesión con SPSS emerge una ventana de aspecto similar al de una hoja de 
cálculo: el Editor de datos (ver Figura 17). El Editor de datos es la ventana principal de 
SPSS, pero no la única. Existen ocho tipos de ventanas SPSS, aunque no todas ellas 
poseen la misma importancia desde el punto de vista de su utilidad para el usuario. Las 
dos ventanas principales (imprescindibles para trabajar con SPSS) son: 
 
 El Editor de datos. Contiene el archivo de datos sobre el que se basa la mayor 
parte de las acciones que es posible llevar a cabo con el SPSS. El Editor de datos 
se abre automáticamente (vacío, sin datos: Figura 17) cuando se entra en SPSS. 
La ventana del Editor de datos puede mostrar dos contenidos diferentes: los 
datos propiamente dichos y las variables del archivo acompañadas del conjunto 
de características que las definen. Al igual que el resto de ventanas SPSS, el 
Editor de datos contiene una barra de menús (un conjunto de menús 
desplegables), una barra de herramientas (una serie de botones-iconos que 
facilitan el acceso rápido a muchas de las funciones SPSS) y una barra de estado 
(con información puntual sobre diferentes aspectos relacionados con el estado 
del programa). Es posible abrir más de un Editor de datos y, por tanto, trabajar 
Capitulo 2 Trabajo Fin de Grado 
32 
 
con varios archivos de datos simultáneamente. No obstante, los datos que 
interese analizar juntos deberán estar en el mismo archivo. En este editor se 
representa la estructura de datos fundamental de SPSS. Las filas representan los 
casos y las columnas representan las variables. Cada casilla tiene un valor que 
corresponde a un determinado caso en una determinada variable. 
 
 El Visor de resultados. Recoge toda la información (estadísticos, tablas, gráficos, 
etc.) que SPSS genera como consecuencia de las acciones que lleva a cabo. El 
Visor permite editar los resultados y guardarlos para su uso posterior. Es posible 
tener abiertas varias ventanas del Visor asociadas a cada Editor de datos. 
 
Los resultados del Visor adoptan tres formatos distintos: tablas, gráficos y texto. SPSS 
dispone de un editor (y, por tanto, una ventana distinta) para cada uno de estos tres 
formatos básicos. El resto de ventanas son el borrador del Visor de resultados, el editor 
de sintaxis y el editor de procesos. 
 
 
Figura 17: Ventana del editor de datos deSPSS. 
 
 
Tareas usuales con SPSS. 
 
En una sesión estándar para analizar ficheros, se suelen realizar cuatro tareas básicas 
con el software SPSS: 
 
 Abrir un archivo de datos. 
 Ejecutar un procedimiento estadístico. 
 Examinar los resultados. 
 Exportar los resultados. 
 
 
Abrir un archivo de datos. 
 
Una vez abierto el Editor de datos (ver Figura 17), la primera acción suele consistir en 
Capitulo 2 Trabajo Fin de Grado 
33 
 
introducir datos desde el teclado o en abrir un archivo de datos existente. Para ello se 
selecciona la opción Abrir del menú Archivo para acceder al cuadro de diálogo Abrir 
archivo (ver Figura 18). Este cuadro de diálogo muestra, por defecto, un listado de los 
archivos con extensión .sav (archivos de datos en formato SPSS). 
 
 
 
Figura 18: Menú Archivo SPSS. 
 
 
 
Al abrir un archivo de datos, el Editor de datos, hasta ahora vacío, toma el aspecto que 
muestra la Figura 19. 
 
 
Figura 19: Editor de datos. 
 
 
 
Ejecutar un procedimiento estadístico. 
 
Una vez abierto un archivo de datos, la segunda acción que suele llevarse a cabo en 
una sesión con SPSS consiste en seleccionar algún procedimiento estadístico. 
 
Para ello se selecciona el menú Analizar. Dentro de este menú, como se muestra en la 
Capitulo 2 Trabajo Fin de Grado 
34 
 
figura 20, se encuentran multitud de procedimientos estadísticos. Por ejemplo, si se 
selecciona Estadísticos descriptivos> Frecuencias se podrá generar una tabla de 
frecuencias (ver Figura 21). 
 
 
 
Figura 20: Generación de tabla de frecuencias con SPSS. 
 
 
 
Figura 21: Cuadro diálogo de Frecuencias. 
 
 
Examinar los resultados. 
 
El Visor de resultados es el encargado de recoger la información que SPSS genera como 
consecuencia de los procedimientos que ejecuta. Puesto que únicamente se ha 
solicitado un histograma de la variable salario, el Visor de resultados contiene 
únicamente el histograma que muestra la figura 22. 
 
Capitulo 2 Trabajo Fin de Grado 
35 
 
 
Figura 22: Visor de resultados con tabla de frecuencias de variable Salario. 
 
 
 
Exportar los resultados. 
 
La opción Exportar permite guardar los objetos de texto y las tablas pivotantes en 
formato HTML y en formato de texto ASCII. Además permite guardar los gráficos en 
una amplia variedad de formatos. Para exportar total o parcialmente el archivo de 
resultados se selecciona la opción Exportar del menú Archivo. El aspecto visual de 
menú se muestra en la figura 23. 
 
 
Capitulo 2 Trabajo Fin de Grado 
36 
 
 
Figura 23: Cuadro dialogo Exportar resultados. 
 
 
Este menú contiene tres opciones (pulsando el botón de menú desplegable) para 
decidir qué parte del archivo de resultados se desea exportar: documento completo, 
documento sin gráficos y sólo los gráficos. 
 
 
 
2.4. MongoDB 
 
MongoDB, cuyo logotipo se muestra en la figura 24, es un sistema de base de datos 
distribuido NoSQL y orientado a documentos. Esto quiere decir que en lugar de guardar 
los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda 
estructuras de datos en documentos tipo JSON con un esquema dinámico (MongoDB 
llama ese formato BSON), haciendo que la integración de los datos en ciertas 
aplicaciones sea más fácil y rápida. 
 
 
 
 
Figura 24: Logo MongoDB. 
 
 
 
 
Capitulo 2 Trabajo Fin de Grado 
37 
 
El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de 
software 10gen. Ahora MongoDB es una base de datos lista para ser utilizada y con 
muchas características. Las propiedades más resaltables de MongoDB son 
su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de 
datos. Se podría decir que alcanza un balance perfecto entre rendimiento y 
funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en 
nuestro sistema relacional, pero sin sacrificar en rendimiento. Además de estas dos 
características, esta tecnología presenta una alta escalabilidad. MongoDB es una base 
de datos distribuida y fue diseñada para que ser altamente escalable. Su modelo de 
datos orientada a documentos permite que sea más fácil distribuir datos a través de 
múltiples servidores o computadoras, como se esquematiza en la figura 25. MongoDB 
se encarga automáticamente de mantener el equilibrio de datos y carga de 
computación a lo largo del clúster, de la redistribución automática de los documentos y 
de enrutar las peticiones de usuario a las maquinas correctas, lo que permite a los 
desarrolladores centrarse únicamente en el desarrollo de las aplicaciones. En el 
momento que un clúster necesita mayor capacidad, se puede añadir nuevas maquinas 
y MongoDB se percatará automáticamente de como los datos deben ser distribuidos 
entre las nuevas computadoras incorporadas. Esta tecnología es de código abierto y se 
puede descargar desde su web oficial [Ref5, WWW]. 
 
 
 
Figura 25: Distribución de datos a través de un clúster MongoDB. 
 
 
Esta base de datos es altamente utilizada en las industrias y MTV Network, Craigslist y 
Foursquare son algunas de las empresas que utilizan esta base de datos. 
http://www.10gen.com/
Capitulo 2 Trabajo Fin de Grado 
38 
 
Formato de los documentos. 
 
En MongoDB, cada registro o conjunto de datos se denomina documento. Los 
documentos se pueden agrupar en colecciones, las cuales se podría decir que son el 
equivalente a las tablas en una base de datos relacional (sólo que las colecciones 
pueden almacenar documentos con formatos muy distintos, en lugar de estar 
sometidos a un esquema fijo). Se pueden crear índices para algunos atributos de los 
documentos, de modo que MongoDB mantendrá una estructura interna eficiente para 
el acceso a la información por los contenidos de estos atributos. 
 
Los distintos documentos se almacenan en formato BSON, o Binary JSON, que es una 
versión modificada de JSON que permite búsquedas rápidas de datos. BSON guarda de 
forma explícita las longitudes de los campos, los índices de los arrays y demás 
información útil para el escaneo de datos. Esto es debido a que, en algunos casos, el 
mismo documento en BSON ocupa un poco más de espacio de lo que ocuparía de estar 
almacenado directamente en formato JSON. Pero una de las características claves en 
los sistemas NoSQL es que el almacenamiento es económico (clúster de computadoras 
convencionales) y es mejor aprovecharlo si de este modo se introduce un considerable 
incremento en la velocidad de localización de información dentro de un documento. 
 
No obstante, en la práctica, no se ve el formato en que verdaderamente se almacenan 
los datos, y se trabaja siempre sobre un documento en JSON tanto al almacenar como 
al consultar información. Un ejemplo de un documento en MongoDB podría ser el 
siguiente, que representa el modo en el que podrían almacenarse los posts de un blog: 
 
 
{ 
 “_id” : “4da2c0e2e999fb56bf000002” 
 “title” : “Una introducción a MongoDB”, 
 “body” : “Lorem ipsum dolor sit amet…”, 
 “published_at” : “2011-05-09T18:17:07-07:00”, 
 “author_info” : { 
 “_id” : “4dc8919331c0c00001000002” 
 “name” : “Carlos Paramio” 
 }, 
 “tags” : [“MongoDB”, “NoSQL”, “Bases de datos”] 
 “comments” : [ 
 { 
 “author_info” : { “name” : “Jorge Rubira”, 
“email” : “email1@example.com” }, 
 “body” : “Test”, 
 “created_at” : “2014-05-10T10:14:01-07:00” 
 }, 
 { 
 “author_info” : { “name” : “Francisco 
Rodríguez”, “email” : “email2@example.com” }, 
 “body” : “Otro test”, 
 “created_at” : “2014-05-10T10:14:09-07:00” 
 } 
 ] 
 “liked_by” : [“4d7cf768e999fb67c0000001”, 
“4da34c62ba875a19d4000001”]Capitulo 2 Trabajo Fin de Grado 
39 
 
 } 
 
Una de las diferencias más importantes con respecto a las bases de datos relacionales, 
es que no es necesario seguir un esquema. Los documentos de una misma colección 
pueden tener esquemas diferentes. Es decir, se podría formar una colección con el 
documento anterior y otro documento que no contiene los mismos atributos. 
 
Como se puede observar en el primer documento, se pretende representar la manera 
en que podrían almacenarse los datos correspondientes a un post de un blog. Los 
atributos “_id” (o clave principal) pueden tener el formato que se desee, aunque 
MongoDB utiliza un valor parecido a un UUID en hexadecimal por defecto si no se ha 
especificado ninguno. A pesar de parecer un valor completamente aleatorio (aunque es 
sabido que la aleatoriedad real no existe en informática), utilizan como base 
una semilla basada en la MAC de la interfaz de red de la máquina (y otros detalles de la 
misma) para evitar que dos máquinas diferentes puedan generar el mismo valor para la 
clave de un documento. Y los primeros bytes corresponden a una marca de tiempo, de 
modo que las claves se ordenan de forma natural por orden de creación (o casi, pues 
está claro que las distintas máquinas MongoDB deben tener la fecha y hora 
sincronizadas) sin tener que mirar cuál fue el último valor usado. 
 
Las etiquetas y los comentarios están en el propio documento, en lugar de guardarlos 
en colecciones separadas y utilizar claves foráneas(o clave ajena) para referenciar a los 
mismos. Sin embargo, en el atributo “liked_by” sí que guardamos una relación de 
claves, que corresponden a los usuarios que han marcado el post como que les ha 
gustado. Utilizar una forma u otra dependerá de las necesidades de acceso a estos 
datos. En este caso, por ejemplo, no se va a mostrar información sobre los usuarios que 
han marcado un post con un “me gusta”, pero sí se va a ver cuántos lo han marcado así 
o si el usuario actual ya lo ha marcado o no, con lo que almacenar únicamente las 
claves de esos usuarios y guardar su información personal detallada en otra colección 
es lo más conveniente. 
 
Por supuesto, no es necesario pedir a MongoDB que devuelva todo el documento cada 
vez que lo consultamos. Si se va a mostrar únicamente un listado de posts recientes, 
seguramente sea suficiente obtener el atributo “title”, con los documentos ordenados 
por “published_at”. De este modo se ahorra ancho de banda entre el motor de base de 
datos y la aplicación al mismo tiempo que memoria, dado que no hay que instanciar 
todo el documento. Además, si se tienen muchos miles de visitantes, el atributo 
“liked_by” podría llegar a crecer bastante. Aunque el tamaño de un documento de 
MongoDB puede llegar hasta los 16 Megabytes, con lo que se puede almacenar 
bastante información dentro de un único documento sin necesidad de utilizar 
referencias. En caso de que se tuviera que almacenar mucho más, habría que optar por 
utilizar otro esquema. 
 
En ocasiones es necesario desnormalizar para poder tener a mano la información 
necesaria a la hora de mostrar un post. Es por eso que en el atributo “author_info” se 
ha utilizado una versión intermedia: Si bien se tiene la clave principal del usuario que 
Capitulo 2 Trabajo Fin de Grado 
40 
 
ha escrito este post, como es habitual que se muestre el nombre del autor, se ha 
almacenado también dicho nombre en el documento que representa al post, para que 
no sea necesario realizar una segunda consulta a la colección “usuarios”. Estas 
desnormalizaciones dependen nuevamente del uso que se den a los datos. En este 
caso, es evidente que el nombre de un usuario no va a variar demasiado, así que 
recorrer todos los posts para cambiar este valor en caso de que el usuario realice esta 
operación, si bien es una modificación que podría llevar un tiempo considerable para 
ejecutarse, no es una operación habitual frente a la consulta del nombre del autor, y 
por tanto, compensa. Incluso se podría llegar a tratar el post como algo más 
permanente, de modo que aunque un usuario cambiara su nombre a posteriori, el 
nombre utilizado para firmar los posts anteriores no varíe o sencillamente los posts 
puedan firmarse con diferentes pseudónimos. 
 
Como se puede intuir, el modelado del esquema de datos con MongoDB depende más 
de la forma en que se consultarán o actualizarán los datos que de las limitaciones del 
propio sistema. Un esquema para un ejemplo similar al explicado se muestra en la 
figura 26. 
 
 
Figura 26: Ejemplo de modelo de documento para un blog 
 
 
 
Como consultar los datos. 
 
Sin entrar demasiado en detalles acerca de todas las posibilidades que MongoDB 
ofrece para consultar los datos almacenados, sí se van a citar algunas de ellas, para 
señalar que no se está frente a un sistema simple de almacenamiento de pares clave-
valor. 
 
En primer lugar, MongoDB permite utilizar funciones Map y Reduce escritas en 
Javascript para seleccionar los atributos que interesan de los datos, y agregarlos 
(unificarlos, simplificarlos) del modo deseado, respectivamente. Esto es algo habitual 
en muchos sistemas NoSQL, y en algunos casos es incluso la única forma posible de 
consultar datos. Aunque muchas veces necesitamos algo bastante más sencillo que 
esto. 
Capitulo 2 Trabajo Fin de Grado 
41 
 
En MongoDB se pueden utilizar consultas al valor de un atributo específico. Por 
ejemplo, se puede capturar el post que tiene un determinado título: 
 
 db.posts.find({„title’ : „Explicación de MongoDB‟}) 
 
El valor a consultar puede estar anidado en un tipo de datos más completo en el 
atributo del documento (por ejemplo, como valor de una tabla hash asociada al 
atributo, o como el valor de uno de los ítems de un array). Se utiliza un punto como 
separador de los nombres de las claves de los diferentes hashes que hay que recorrer 
hasta llegar al valor deseado. Por ejemplo, la siguiente consulta devolvería todos los 
posts escritos por un determinado autor: 
 
 db.posts.find({„author_info._id‟ : „4da2c0e2e999fb56bf000002‟}) 
 
Y esta otra los posts etiquetados con MongoDB: 
 
 db.posts.find({„tags‟ : „MongoDB‟}) 
 
El hash utilizado como conjunto de condiciones que deben cumplir los documentos a 
devolver puede incluir operadores de muy diversos tipos, no sólo comparadores del 
valor absoluto buscado. Algunos de ellos son: 
 
 $all : Para indicar que el array almacenado como valor del atributo debe tener 
los mismos elementos que el proporcionado en la condición. 
 $exists : Para comprobar que el atributo existe en el documento. 
 $mod : Para comprobar el resto de una división del valor del atributo por un 
número. 
 $ne : Para indicar que el valor no puede ser el proporcionado. 
 $in : Para indicar que el valor debe estar entre alguno de los proporcionados. 
 $nin : Contrario de $in. 
 $or : Para indicar que se debe cumplir al menos una condición de entre un 
grupo de condiciones. 
 $nor : Contrario de $or. 
 $size : Para indicar el número de elementos que debe haber en el array 
almacenado como valor. 
 $type : Para comprobar el tipo del valor almacenado (número, cadena…) 
 
 
Cuando utilizar MongoDB. 
 
Aunque se suele decir que las bases de datos NoSQL tienen un ámbito de aplicación 
reducido, MongoDB puede ser utilizado en muchos de los proyectos que desarrollamos 
en la actualidad. 
 
Cualquier aplicación que necesite almacenar datos semi estructurados puede 
usar MongoDB. Es el caso de las típicas aplicaciones CRUD o de muchos de los 
Capitulo 2 Trabajo Fin de Grado 
42 
 
desarrollos web actuales. 
 
No obstante, aunque las colecciones de MongoDB no necesitan definir un esquema, es 
importante diseñar la aplicación para seguir uno. Se tendrá que pensar si se necesita 
normalizar los datos, denormalizarlos o utilizar una aproximación mixta. Estas 
decisiones pueden afectar al rendimiento de la aplicación. El propio esquema lo 
definen las consultas que vayamos a realizar con más frecuencia.MongoDB es especialmente útil en entornos que requieran escalabilidad. Con sus 
opciones de replicación, se puede conseguir un sistema que escale horizontalmente sin 
problemas. Esto provoca que MongoDB se adapte perfectamente a aplicaciones de Big 
Data donde la cantidad de datos es continuamente creciente y suelen no estar 
estructurados. 
 
 
MongoDB & Hadoop. 
 
Como en el caso de la plataforma estadística R, previamente explicada, MongoDB es 
combinable con Hadoop ya que pueden utilizarse juntos para abordar complejos 
análisis y procesamiento de datos para ficheros almacenados en MongoDB. 
 
El conector de MongoDB para Hadoop es un plugin para Hadoop que proporciona la 
habilidad de usar MongoDB como entrada o salida de datos. Como los dos software 
son de código libre podemos descargar el plugin desde la página oficial de MongoDB 
[Ref6, WWW]. El esquema de uso de MongoDB dentro de Hadoop se muestra en la 
figura 27. 
 
 
Figura 27: Esquema de uso de MongoDB en un entorno Hadoop. 
 
 
 
2.5. Disco project 
 
Disco, cuyo logo se muestra en la figura 28, es una implementación de MapReduce 
para programación distribuida. Soporta computación paralela sobre grandes conjuntos 
de datos y almacenamiento seguro en clúster de computadoras. Esto hace que sea una 
herramienta perfecta para el análisis y el procesamiento de grandes conjuntos de 
Capitulo 2 Trabajo Fin de Grado 
43 
 
datos, sin tener que preocuparse por aspectos técnicos relacionadas con la 
distribución, tales como protocolos de comunicación, equilibrio de carga, el bloqueo, la 
planificación de tareas, y la tolerancia a fallos, que son manejados por Disco. 
 
Esta plataforma se puede utilizar para una variedad de tareas relativas al análisis de 
datos: análisis a gran escala, la construcción de modelos probabilísticos, algoritmos de 
machine learning y muchas otras tareas. 
 
 
 
Figura 28: Logo de Disco project. 
 
 
Este proyecto supone una re-implementación de MapReduce a través de un enfoque 
distinto al de Hadoop. Disco utiliza una combinación de Python y Erlang lo que trae a 
un framework MapReduce herramientas basadas en Python. 
 
Disco nació en el Nokia Research Center en 2008 para resolver desafíos reales en el 
manejo de grandes cantidades de datos. Desde entonces se ha desarrollado 
activamente por Nokia y muchas otras compañías. Se trata de un proyecto de código 
libre que puede ser descargado desde su web oficial [Ref7, WWW]. 
 
 
Características de Disco. 
 
El núcleo de Disco está escrito en Erlang, un lenguaje funcional diseñado para construir 
aplicaciones distribuidas con tolerancia a fallos. Los usuarios de Disco normalmente 
escriben trabajos en Python, lo que hace posible expresar algoritmos más complejos 
con muy poco código. 
 
Por ejemplo, el siguiente ejemplo totalmente funcional calcula frecuencias de palabras 
en un texto de gran tamaño, este ejemplo se realizará en el siguiente capítulo con 
Hadoop: 
 
 
from disco.core import Job, result_iterator 
 
def map(line, params): 
 for word in line.split(): 
 yield word, 1 
 
def reduce(iter, params): 
 from disco.util import kvgroup 
 for word, counts in kvgroup(sorted(iter)): 
 yield word, sum(counts) 
 
Capitulo 2 Trabajo Fin de Grado 
44 
 
if __name__ == '__main__': 
 job = 
Job().run(input=["http://discoproject.org/media/text/chekhov.txt"], 
 map=map, 
 reduce=reduce) 
 for word, count in result_iterator(job.wait(show=True)): 
 print(word, count) 
 
 
Esta tecnología, está meditada para integrarse fácilmente en aplicaciones grandes por 
lo que las tareas computacionalmente exigentes se pueden delegar a un grupo de 
computadoras independientes de la aplicación principal. Disco proporciona una API de 
Phyton bastante compacta (normalmente sólo se necesitan dos funciones). Al iniciar el 
software se puede observar una ventana similar a la de la figura 29. 
 
 
 
Figura 29: Pantalla principal de Disco. 
 
 
A continuación se enuncian las características más importantes de Disco: 
 
 Alta escalabilidad: Disco permite su ejecución en un clúster de computadoras y 
la realización de tareas simultáneamente. Asimismo si necesitamos incrementar 
la capacidad del sistema, es muy sencillo añadir nuevas computadoras. 
 
 Fácil de usar: Las tareas típicas consiste en dos funciones escritas en Python y 
dos llamadas a la API de Disco. Al contrario de Disco, la programación 
MapReduce para Hadoop realizada en JAVA puede ser bastante compleja. 
 
 Las tareas se pueden especificar en otros lenguajes de programación mediante 
la implementación del protocolo Disco. 
 
 Los datos de entrada pueden estar en cualquier formato. Además los datos 
Capitulo 2 Trabajo Fin de Grado 
45 
 
pueden estar situados en cualquier fuente que sea accesible a través de HTTP o 
pueden estar distribuidos en discos locales. 
 
 Tolerancia a fallos: El bloqueo de un servidor no interrumpe las tareas que estén 
en ejecución. Se pueden añadir nuevos computadores sobre la marcha. 
 
 Flexible: Además de las funciones map y reduce el usuario puede proporcionar 
funciones de combinación o de lectura de entradas. 
 
 Disco provee un sistema de almacenamiento distribuido (Disco Distributed 
FileSystem). 
 
 
Arquitectura de Disco. 
 
 
 
Figura 30: Arquitectura Disco. 
 
 
 
Disco, como se puede distinguir en la figura 30, está basado en la arquitectura maestro-
esclavo: 
 
 El maestro recibe los trabajos, los agrega a la cola de trabajos y los ejecuta en el 
clúster cuando los nodos están disponibles. 
 
 Los programas cliente envían trabajos al maestro. 
 
 Los esclavos son iniciados por el maestro en cada nodo del clúster. Se 
monitorizan todos los procesos que se ejecutan en sus respectivos nodos. 
 
Capitulo 2 Trabajo Fin de Grado 
46 
 
 Los workers realizan la computación y sus resultados se envían al maestro. 
 
 Una vez que los archivos se almacenan en el clúster Disco intenta mantener los 
datos localizados mediante la programación de tareas que usan esos archivos 
como entrada en los mismos nodos en los que se almacenan. Disco ejecuta un 
servidor HTTP en cada nodo para que los datos sean accesibles remotamente 
cuando un worker no se puede ejecutar en el mismo nodo donde se encuentran 
los datos. 
 
Los usuarios pueden limitar el número de workers que se ejecutan en paralelo en cada 
nodo. Por lo tanto, pueden fácilmente ejecutar tantas tareas como CPUs hay 
disponibles en el clúster. 
 
Disco permite designar más de un máster para conseguir una alta disponibilidad y no 
permitir que tengamos un único punto de fallos. 
 
 
Disco Distributed Filesystem (DDFS). 
 
El DDFS proporciona a Disco un almacenamiento distribuido de los datos. Está 
diseñado específicamente para apoyar los casos de uso que son típicos para Disco y 
MapReduce en general: almacenamiento y procesamiento de grandes cantidades de 
datos. Esto hace que sea propicio para almacenar datos de registro, objetos binarios 
(fotos, vídeos, índices) o colecciones de datos brutos. 
 
En este sentido, DDFS es complementario a las bases de datos relacionales 
tradicionales o almacenamientos clave-valor distribuidos que a menudo tienen 
dificultades para ampliar a tera o petabytes de datos. Aunque DDFS no es una base de 
datos de propósito general. Más bien, se trata de una capa de almacenamiento de 
propósito específico similar al sistema de archivos de Google o Hadoop. 
 
DDFS es un componente de bajo nivel en la pila de Disco, encargado de la distribución 
de datos, la replicación, el direccionamiento y el acceso. No proporciona una 
sofisticada consulta de datos en sí misma, sino que está integrada con los trabajos que 
se realizan en Disco. Como almacenar los resultados provenientes del análisis, 
proporcionando persistencia y fácil acceso a los datos tratados. 
 
DDFS es un sistema de archivos basado en etiquetas: En lugar de tener que organizar 
los datos en directorios

Otros materiales