Logo Studenta

Estudo de Desempenho de Bancos de Dados New SQL

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD POLITÉCNICA DE MADRID
TRABAJO FIN DE MÁSTER
Estudio del rendimiento de sistemas de
gestión de bases de datos New SQL
Autor:
Claudiu BARZU
Supervisor:
Marta PATIÑO MARTÍNEZ
7 de julio de 2017
III
Muchas gracias a mi novia por apoyarme en los momentos
más duros, a mi tutora por supervisarme en el desarrollo de
este trabajo y sobretodo a mis familia por la incesante ayuda
proporcionada durante toda mi vida académica.. . .
V
UNIVERSIDAD POLITÉCNICA DE MADRID
Resumen
Facultad de Informática
Máster Universitario en Ingeniería Informática
Estudio del rendimiento de sistemas de gestión de bases de datos New SQL
by Claudiu BARZU
El volumen de datos generados en los últimos años ha impulsado el desarrollo
de nuevas tecnologías diseñadas para este entorno. A pesar de las grandes ventajas
que poseen estos sistemas, han dejado de lado funcionalidades como las transac-
ciones o el lenguaje SQL.
El presente trabajo se centra en el estudio de rendimiento de dos nuevos sistemas
adaptados a los requerimientos actuales que pretenden ofrecer las funcionalidades
de los sistemas tradicionales, como las transacciones y el lenguaje SQL por su faci-
lidad y popularidad.
Las pruebas realizadas miden el rendimiento de ambos sistemas en situaciones con
distintos tipos de operaciones, algunas con alta carga de escritura y otras con alta
de lectura. Asimismo, se ha variado el tamaño de la base de datos para observar la
escalabilidad de ambos sistemas.
Por último, en base a los datos obtenidos se puede concluir que ambos sistemas
ofrecen una capa de compatibilidad completa con el lenguaje SQL y un rendimien-
to similar en situaciones con alta carga de datos. Sin embargo, el comportamiento
entre ambos sistemas es muy diferente, ya que Apache Phoenix necesita más tiem-
po en operaciones de lectura mientras que Splice Machine lo emplea en operaciones
de escritura.
VII
UNIVERSIDAD POLITÉCNICA DE MADRID
Resumen
Facultad de Informática
Máster Universitario en Ingeniería Informática
Estudio del rendimiento de sistemas de gestión de bases de datos New SQL
by Claudiu BARZU
The volume of new data generated in last years has forced the development of new
systems adapted to this new environment. Although the new developed systems
has caracteristics adapted to the current requirements, functionalities like transac-
tions or SQL language are not available for this systems.
The current study is focused on the performance of two recently-developed sys-
tems, Apache Phoenix and Splice Machine, which tries to offer the best of both
worlds: escalabilty and performance of new systems, but integrity of data and easy
of use with SQL.
The developed benchmark is designed to measure the performance of these sys-
tems on situations with heavy read load or with heavy write load. In addition,
several database sizes are used to check the behavior of the systems.
Finally, based on the results we can conclude that both systems offer the same th-
roughput when the database is big enough but the behavoir of each system is diffe-
rent. Apache Phoenix needs more time to do read operations while Splice Machine
uses more time on write operations.
IX
Índice general
Resumen V
Abstract VII
1. Introducción y objetivos 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Estado del arte 3
2.1. Historia del benchmarking . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Beneficios de realizar un benchmark . . . . . . . . . . . . . . . . . . . 4
2.3. Tipos de benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4. Herramientas actuales . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Evaluación de riesgos 7
3.1. Plan de gestión de riesgos . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Desarrollo 9
4.1. Descripción de las herramientas utilizadas . . . . . . . . . . . . . . . 9
4.1.1. Descripción de Apache Hadoop . . . . . . . . . . . . . . . . . 9
4.1.2. Descripción de HBase . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.3. Descripción de Apache Phoenix . . . . . . . . . . . . . . . . . 11
4.1.4. Descripción de Splice Machine . . . . . . . . . . . . . . . . . . 13
4.2. Elección del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1. Pruebas empíricas . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3. Introducción al benchmark definido . . . . . . . . . . . . . . . . . . . 17
4.4. Especificación del plan de pruebas . . . . . . . . . . . . . . . . . . . . 17
4.5. Instalación y configuración del entorno . . . . . . . . . . . . . . . . . 19
4.5.1. Descripción de la infraestructura . . . . . . . . . . . . . . . . . 19
4.5.2. Instalación y configuración de herramientas comunes . . . . . 19
4.5.3. Arquitectura del cluster . . . . . . . . . . . . . . . . . . . . . . 20
4.5.4. Instalación de Apache Phoenix . . . . . . . . . . . . . . . . . . 21
4.5.5. Instalación de Splice Machine . . . . . . . . . . . . . . . . . . . 22
4.5.6. Preparación de las pruebas . . . . . . . . . . . . . . . . . . . . 23
Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Ejecución de las pruebas . . . . . . . . . . . . . . . . . . . . . . 24
4.5.7. Monitorización del proceso e identificación de cuellos de botella 25
5. Resultados 27
5.1. Resultado benchmark de Apache Phoenix . . . . . . . . . . . . . . . . 27
5.1.1. Benchmarking de la base de datos pequeña con alto porcen-
taje de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
X
Resultado elección del número de clientes . . . . . . . . . . . 27
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . 28
5.1.2. Benchmarking de la base de datos pequeña con alto porcen-
taje de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Resultado elección del número de clientes . . . . . . . . . . . 29
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 29
5.1.3. Benchmarking de la base de datos grande con alto porcentaje
de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Resultados elección del número de clientes . . . . . . . . . . . 30
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 31
5.1.4. Benchmarking de la base de datos grande con alto porcentaje
de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Resultado elección del número de clientes . . . . . . . . . . . 32
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 32
5.1.5. Discusión de resultados Apache Phoenix . . . . . . . . . . . . 33
5.2. Benchmark de Splice Machine . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.1. Benchmarking de la base de datos pequeña con alto porcen-
taje de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Resultado elección del número de clientes . . . . . . . . . . . 35
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 36
5.2.2. Benchmarking de la base de datos pequeña con alto porcen-
taje de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Resultado elección del número de clientes . . . . . . . . . . . 37
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 37
5.2.3. Benchmarking de la base de datos grande con alto porcentaje
de escritura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Resultado elección del número de clientes . . . . . . . . . . . 38
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 39
5.2.4. Benchmarking de la base de datos grande con alto porcentaje
de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Resultado elección del número de clientes . . . . . . . . . . . 39
Resultados benchmarking . . . . . . . . . . . . . . . . . . . . . 40
5.2.5. Discusión de resultados Splice Machine . . . . . . . . . . . . . 40
5.3. Comparación de Apache Phoenix y Splice Machine . . . . . . . . . . 43
5.3.1. Comparación delas técnologias . . . . . . . . . . . . . . . . . 43
5.3.2. Comparación de resultados . . . . . . . . . . . . . . . . . . . . 44
6. Conclusiones 47
7. Líneas futuras 49
A. Distribuciones 51
Bibliografía 53
XI
Índice de figuras
4.1. Arquitectura de HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Apache Phoenix en el ecosistema Hadoop . . . . . . . . . . . . . . . . 12
4.3. Arquitectura Apache Phoenix y HBase . . . . . . . . . . . . . . . . . . 12
4.4. Apache Phoenix modelo de datos . . . . . . . . . . . . . . . . . . . . . 13
4.5. Splice Machine motores de búsqueda . . . . . . . . . . . . . . . . . . 13
4.6. Splice Machine arquitectura . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7. Tpcc esquema de base de datos . . . . . . . . . . . . . . . . . . . . . . 15
4.8. Monitorización con Apache Ambari . . . . . . . . . . . . . . . . . . . 20
4.9. Distribución de componentes . . . . . . . . . . . . . . . . . . . . . . . 21
4.10. Distribución de componentes con Apache Phoenix . . . . . . . . . . . 22
4.11. Distribución de componentes con Apache Phoenix . . . . . . . . . . . 23
4.12. Monitorización plataforma con Apache Ambari . . . . . . . . . . . . 25
4.13. Resultado IOTOP en un nodo . . . . . . . . . . . . . . . . . . . . . . . 26
4.14. Resultado HTOP en un nodo . . . . . . . . . . . . . . . . . . . . . . . 26
5.1. Resultados número de clientes base de datos pequeña alta escritura . 27
5.2. Resultados con gran carga escritura base de datos pequeña . . . . . . 28
5.3. Resultados número de clientes base de datos grande alta escritura . . 29
5.4. Resultados con gran carga escritura base de datos pequeña . . . . . . 30
5.5. Resultados número de clientes base de datos grande alta escritura . . 31
5.6. Resultados con gran carga escritura base de datos grande . . . . . . . 31
5.7. Resultados número de clientes base de datos grande alta escritura . . 32
5.8. Resultados con gran carga de lectura base de datos grande . . . . . . 33
5.9. Tiempos de escritura en función del throughput . . . . . . . . . . . . 34
5.10. Tiempos de lectura en función del throughput . . . . . . . . . . . . . 34
5.11. Throughput en función del tamaño de la base de datos y el tipo de
carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.12. Resultados número de clientes base de datos pequeña alta escritura . 36
5.13. Resultados con gran carga escritura base de datos pequeña . . . . . . 36
5.14. Resultados número de clientes base de datos pequeña alta escritura . 37
5.15. Resultados con gran carga escritura base de datos pequeña . . . . . . 38
5.16. Resultados número de clientes base de datos pequeña alta escritura . 38
5.17. Resultados con gran carga escritura base de datos pequeña . . . . . . 39
5.18. Resultados número de clientes base de datos pequeña alta escritura . 40
5.19. Resultados con gran carga escritura base de datos pequeña . . . . . . 40
5.20. Tiempos de escritura Splice Machine en función del throughput . . . 42
5.21. Tiempos de lectura Splice Machine en función del throughput . . . . 42
5.22. Throughput en función del tamaño de la base de datos y el tipo de
carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.23. Phoenix y Splice máximo throughput . . . . . . . . . . . . . . . . . . 45
5.24. Tiempo medio de respuesta por tecnología . . . . . . . . . . . . . . . 45
XIII
Índice de cuadros
3.1. Riesgos identificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1. Descripción de las máquinas . . . . . . . . . . . . . . . . . . . . . . . . 19
1
Capítulo 1
Introducción y objetivos
En este apartado se comenta brevemente una introducción al entorno actual,
incluyendo aspectos tecnológicos y la justificación del presente trabajo.
1.1. Introducción
En los últimos años la cantidad de datos generados se ha incrementado ex-
ponencialmente y la explotación de estos recursos requiere de nuevas tecnologías
adaptadas al volumen de datos actuales.
El acceso a Internet desde cualquier sitio por parte de cualquier persona ha pro-
vocado un aumento considerable de datos. En 2013 se estaban generando más de
4.4 Zetabytes cada día[6] y se calcula que la cantidad se multiplicará por 10 hasta
2020, llegando a los 44 Zetabytes de datos generados diariamente.
El tratamiento de estos datos ha provocado la aparición de nuevas tecnologías
orientadas al procesamiento y almacenamiento de grandes cantidades de informa-
ción. Uno de los compromisos de estás tecnologías es ofrecer un tiempo de res-
puesta adecuado en base a los datos presentes. Para ello se utilizan ordenadores
más potentes, o por el contrario, un cluster de ordenadores que trabajan conjunta-
mente para ofrecer resultados en menor tiempo.
Para satisfacer estas necesidades de procesamiento de datos han surgido las ba-
ses de datos NoSQL(Not Only Structure Query Language), que no suelen tener un
esquema sino que la información se obtiene mediante un sistema de clave-valor.
Estas bases de datos NoSQL utilizan un sistema de ficheros distribuido, como por
ejemplo HDFS (Hadoop File System) que se encarga de la replicación y distribución
de los datos por todo el cluster.
Una de estas bases NOSQL es HBase, una base de datos basada en clave-valor la
cual ofrece buen rendimiento tanto en escritura como en accesos aleatorios.
Sin embargo, las bases de datos NOSQL no son la única forma de procesamiento y
almacenamiento de datos. Como alternativas, han surgido tecnologías que permi-
ten en procesamiento en tiempo real de los datos de entrada. Spark es un ejemplo
de tecnología de procesamiento de datos en tiempo real.
Estas nuevas tecnologías no comparten un lenguaje común por lo que es necesario
2 Capítulo 1. Introducción y objetivos
estudiar detalladamente cada lenguaje en particular. Por ello, ha surgido la pregun-
ta de si se puede utilizar el lenguaje SQL tradicional para interrogar estas nuevas
bases de datos, dando lugar a NewSQL.
En este trabajo se estudiará el rendimiento de dos motores de bases de datos NewSQL,
en concreto Splice Machine y Apache Phoenix.
1.2. Objetivos
El objetivo principal del trabajo se puede definir como la realización de un es-
tudio acerca del rendimiento de varios sistemas de bases de datos no relacionales.
Dicho objetivo se compone de los siguientes subobjetivos:
(O1) Estudio de la arquitectura de Apache Phoenix y Splice Machine, indicando las
principales diferencias entre ambos sistemas, las ventajas e inconvenientes de
cada herramienta y casos de uso idóneos para cada uno.
(O2) Despliegue en una infraestructura distribuida con Hadoop, Hbase y los siste-
mas objeto de análisis.
(O3) Definir un procedimiento teórico que cubra el análisis de rendimiento y esca-
labilidad de los sistemas estudiados.
(O4) Adaptar los clientes utilizados para permitir su utilización con los sistemas
evaluados.
(O5) Realizar en benchmarking de los sistemas en base a la especificación teórica
definida
(O6) Realizar una comparación entre ambos sistemas, analizando las diferencias
entre los tiempos de respuesta y el número de operaciones máximo por se-
gundo obtenido.
3
Capítulo 2
Estado del arte
En este capitulo se presenta que es el concepto de benchmarking con el fin de
entender mejor el proceso y los resultados de las siguientes secciones.
2.1. Historia del benchmarking
Dentro del ámbito de la informática, se puede definir el concepto de benchmark
como el acto de medir y evaluar el rendimiento de los ordenadores, protocolos,
componentes, dispositivos y software bajo unas condiciones de referencia[14].
El concepto de benchmark no es nada nuevo en la informática. En los años 1970,
el concepto de benchmark se formó como un término técnico que significa "punto
de referencia". Posteriormente este término migró al ámbito empresarial, donde se
definió el benchmark como el proceso de medir para realizar comparaciones.
Uno de los grandes casos de éxito lo podemos encontrar en la empresa Xerox. Esta
empresa es considerada una de las pionerasen el mundo del benchmark. Xerox
definió el benchmarking como el proceso continuo de comparación de nuestros procesos,
productos y servicios, frente a los de los competidores o a los de aquellas compañías recono-
cidas como líderes permitiendo identificar y adoptar prácticas exitosas[2].
Esta compañía gracias al estudio detectó muchas deficiencias respecto a sus com-
petidores Japoneses, los cuales conseguían vender el mismo producto a un precio
notablemente inferior.
Esta es la lista de defectos encontrados por parte de Xerox:
1. El número de personas involucradas desde la fabricación hasta el usuario
final era más del doble que sus competidores
2. El número de proveedores era nueve veces superior
3. El time to market era el doble
4. La cadena de producción llevaba el doble de tiempo
5. El número de defectos por cada 100 productos es siete veces superior al de la
competencia
Gracias al bencharmk realizado Xerox consiguió encontrar sus principales proble-
mas, lo cual le ha permitido mejorar sus procesos y ofrecer así unos servicios y
4 Capítulo 2. Estado del arte
productos a un precio más competitivo.
Inicialmente los estudios del rendimiento se centraban en componentes hardwa-
re, principalmente en CPU. El estudio de distintas CPUs con diferentes arquitec-
tura dió lugar a la necesidad de establecer unas unidades que permitan realizar
dichas comparaciones. Para solventar esta necesidad, surgieron los MIPS ( millions
of instructions per second) y MFLOPS (milliones of floating point operations per
seconds).
No obstante, la aparición de unas unidades de medición no resuelve el problema
ya que las instrucciones de una arquitectura a otra no son equivalentes, y así pues,
la ejecución de una instrucción en una arquitectura puede equivaler a dos o más
instrucciones en otra. A pesar de todo, a día de hoy, se sigue utilizando como una
medida discriminación entre procesadores.
Con el despegue de la informática pronto surgieron organizaciones y herramientas
para estandarizar el proceso y las medidas a la hora de realizar las comparativas.
Una de estás organizaciones es The Standard Performance Evaluation Corporation
(SPEC), la cual fue fundada en 1988 por una asociación de vendedores de ordena-
dores que vieron la necesidad urgente de tener unas pruebas realistas y estandari-
zadas para realizar comparaciones. SPEC es una organización sin animo de lucro
cuyo objetivo es establecer, mantener y proveer una lista de benchmarks actualiza-
dos que pueden ser aplicados a los nuevos ordenadores de altas prestaciones. Esta
organización se centra principalmente en componentes hardware y software de ba-
jo nivel, como kernel de los sistemas linux.
Sin embargo SPEC no es la única organización que realiza y provee estándares para
realizar un benchmark. The Transaction Processing Performance Council (TPC) es
una organización sin ánimo de lucro que propone benchmarks para procesamiento
de transacciones de bases de datos. Dispone de distintos modelos de referencia pe-
ro sus principales benchmarks son TPC-C y TPC-D en los cuales se usan un cliente
para generar las peticiones a un sistema servidor que las atiende, procesa y genera
los resultados.
2.2. Beneficios de realizar un benchmark
Estudiar el rendimiento de los sistemas y el software utilizado se realizó históri-
camente por las empresas para conocer el estado actual de sus sistemas y así poder
realizar una estrategia de futuro [13].
Asímismo, los resultados obtenidos permite dimensionar su infraestructura, tener
presente hasta que punto se puede ofrecer servicio con la infraestructura actual, rea-
lizar una estimación de costes en función de la carga necesaria a soportar o evaluar
el riesgo . Para el presente trabajo los resultados obtenidos permitirían la elección
de un sistema frente a otro en un entorno con las mismas capacidades.
2.3. Tipos de benchmark 5
2.3. Tipos de benchmark
Existen distintos tipos de herramientas para realizar un estudio del rendimien-
to, y se pueden clasificar de la siguiente manera [4]:
1. Basado en el nivel del rendimiento
a) Herramientas de bajo nivel
b) Herramientas de alto nivel
2. Basado en su composición
a) Herramientas de medida sintéticas
b) Herramientas basadas en aplicaciones
Las herramientas de bajo nivel sirven para obtener métricas a muy bajo nivel de los
componentes, por ejemplo, el reloj de la CPU, el tiempo medio de acceso al disco,
los tiempos de acceso a la memoria RAM, etc. Estos tipos de herramientas pueden
servir para comprobar el correcto funcionamiento de los componentes instalados
en el sistema.
Las herramientas de alto nivel sirven para medir combinación de componentes,
pero generalmente no el sistema completo. De este modo, con un test de alto nivel
se podría comprobar el rendimiento de una interfaz de red o el rendimiento del
acceso a disco con unos determinados parámetros de configuración.
Los benchmarks sintéticos en general son usados para comprobar el rendimien-
to de un solo componente llevándolo al limite, independientemente del resto de
componentes del sistema. El problema de este tipo de tests es que no son realistas,
ya que el componente no está siendo probado en unas condiciones iguales a las de
producción.
Los benchmarks de aplicaciones son los más extendidos actualmente ya que mi-
den el rendimiento global de un sistema (entiéndase por sistema el conjunto de
hardware y software utilizado para llevar a cabo una tarea).
Para el presente trabajo se va realizar un benchmark de aplicación.
2.4. Herramientas actuales
Actualmente el bechmarking colaborativo es muy popular, tanto, que encontrar
resultados de rendimiento de todas las herramientas opensource populares es posi-
ble. A nivel de benchmarking de hardware, muchas veces suelen ser provistos por
parte del propio fabricante.
A nivel hardware una de las herramientas más utilizadas profesionalmente es Si-
Soft Sandra, con versión libre y de pago que permite realizar una prueba de carga
de los distintos componentes hardware de nuestro sistema para ver su rendimiento
ante situaciones limite. Esta herramienta contiene una base de datos online que nos
permite comparar nuestro sistema con otras alternativas del mercado.
6 Capítulo 2. Estado del arte
A nivel de aplicación se van a explicar brevemente los benchmarks destinados a
medir los servidores de aplicaciones. La mayoría de estas herramientas utilizan el
protocolo HTTP estándar para realizar las pruebas de rendimiento de nuestro sis-
tema. Asimismo, estas herramientas realizan una prueba de carga y nos informa de
del thoughput de nuestro sistema (número de operaciones por segundo, latencia,
tiempo de respuesta, etc). Una de las herramientas más comunes para realizar este
tipo de pruebas es JMeter. Otras alternativas opensource que se están popularizan-
do son Vegeta y Taurus.
Para realizar benchmarks de sistemas de gestión de bases de datos SQL está la he-
rramienta HammerDB, la cual nos permite ejecutar las pruebas definiendo nuestras
propias sentencias, consultas, actualizaciones o borrado. Esta herramienta soporta
las principales bases de datos SQL del mercado, Oracle 11G, MYSQL, Oracle DB2,
etc. Otra herramienta muy popular es Escada TPC-C, la cual implementa la espe-
cificación tpc-c y por lo tanto los resultados nos permiten compararlos con otros
productos del mercado sin necesidad de realizar nosotros mismo el estudio.
Por último, en el mundo del cloud han surgido nuevos sistemas de gestión de datos
no estructurados, los conocidos como gestores NoSQL y NewSQL. Para realizar un
benchmark en este tipo de entorno, ha aparecido una herramienta que se ha im-
puesto como un estándar en el mundo cloud. Se trata de YCSB, una herramienta
muy simple que ofrece integraciones con sistemas de gestión de datos clásicos, co-
mo bases de datos SQL, así como sistemas más modernos como HBASE, Cassandra,
Mongodb, etc.
7
Capítulo 3
Evaluación de riesgos
Todos los proyectos sufren amenazas, ya sean internas o externas, independien-
temente de su tamaño, duracióno naturaleza. Identificar correctamente estás ame-
nazas así como su impacto sobre el proyecto puede marcar la diferencia entre rea-
lizarlo con éxito y a tiempo, o por el contrario realizarlo con retraso o, incluso,
cancelarlo.
3.1. Plan de gestión de riesgos
Antes de hacer hincapié en la gestión de riesgos, con el fin de entender mejor
de que trata esta sección se define primero qué es el riesgo
El riesgo se define como un evento o condición incierta que en caso de ocurrir puede
tener un impacto positivo o negativo sobre cualquiera de los objetivos del proyecto (tiempo,
costo, alcance, recursos, satisfacción del cliente) [12].
A continuación se muestra una lista con todos los riesgos identificados así como su
definición. En la tabla 3.1 se presentan los riesgos identificados junto a una probabi-
lidad de ocurrencia así como la estimación del impacto y un plan de contingencia.
(Rsk1) Indisponibilidad del cluster: Posibilidad de que el cluster no esté disponible
para instalar y realizar las pruebas
(Rsk2) Planificación errónea: posibilidad de que la planificación no esté bien reali-
zada, de modo que se dedique tiempo a tareas menos importantes y no el
suficiente a las tareas más grandes.
(Rsk3) Benchmark inadecuado: realizar un benchmark incompleto debido a la falta
de experiencia en realizar este tipo de estudios
8 Capítulo 3. Evaluación de riesgos
Cód Riesgo Prob Impacto Plan de actuación
Rsk1 Indisponi-
bilidad del
cluster
Baja Alto Definir el trabajo y realizar las pruebas
en un dispositivo local antes de reali-
zarlas en un cluster, disminuyendo así
el tiempo necesario del mismo.
Rsk2 Planificación
errónea
Alta Media Revisar periódicamente el trabajo rea-
lizado y pendiente para detectar cuan-
to antes errores de planificación y re-
ajustar
Rsk3 Benchmark
inadecuado
Medio Alto Consultar periódicamente los avances
con la tutora y rectificar
CUADRO 3.1: Riesgos identificados
9
Capítulo 4
Desarrollo
En el presente capitulo se va explicar el desarrollo del proyecto, desde la defi-
nición del alcance hasta la realización del benchmarking y presentación de resulta-
dos, pasando antes por diseño y configuración del cluster.
4.1. Descripción de las herramientas utilizadas
En esta sección se explican brevemente las herramientas utilizadas para la rea-
lización del trabajo, dando una visión global de su arquitectura y funcionamiento,
así como de sus funciones.
4.1.1. Descripción de Apache Hadoop
Apache Hadoop es un framework de código abierto que permite el almace-
namiento distribuido y el procesamiento de grandes conjuntos de datos, utilizan-
do largos clusters de ordenadores comerciales y el paradigma de programación
Map/Reduce.
Apache Hadoop ha sido diseñado bajo la premisa de que el hardware puede fa-
llar, y es por ello que el software debe detectar y manejar los fallos, resolviendo los
problemas de hardware en la capa de aplicación.
El proyecto Hadoop incluye los siguientes módulos:
1. Hadoop Common Las utilidades comunes entre todos los modulos de Ha-
doop.
2. Hadoop Distributed File System(HDFS) Un sistema de ficheros distribuido
escalable y seguro que ofrece un alto rendimiendo a las aplicaciones.
3. Hadoop YARN Un framework que permite el manejo de tareas y recursos
dentro del claster.
4. Hadoop MapReduce Un sistema basado en YARN para el procesamiento pa-
ralelo de largos conjuntos de datos.
4.1.2. Descripción de HBase
HBase es un sistema de gestión de bases de datos disperso, distribuido, persis-
tente, multimensional que se ejecuta encima de Hadoop Distributed File System.
Se trata de un sistema de base de gestión de base de datos NOSQL diseñado para
10 Capítulo 4. Desarrollo
ofrecer acceso aleatorio a grandes cantidades de datos, con billones de filas o millo-
nes de columnas, en tiempo casi real[1].
A continuación se presenta una lista con las principales características de HBase:
1. Tolerante a fallos
a) Replicación automática en el cluster
b) Alta disponibilidad gracias a la recuperación automática de fallos
c) Balanceo y distribución automática de las tablas
d) Operaciones consistentes a nivel de fila
2. Rápido
a) Acceso en tiempo real a los datos
b) Caché de los datos más recientes
c) Procesamiento de los datos en la parte del servidor
HBase consigue las ventajas enumaradas anteriormente gracias a su diseño y arqui-
tectura. En HBase las tablas son distribuidas a lo largo de cluster automáticamente
cuando son demasiado grandes para ser manejadas como un conjunto. La unidad
de datos con la que trabaja HBase se llama región. Una región es un subconjunto
de datos de una tabla, o lo que es lo mismo, un conjunto ordenado de filas alma-
cenadas juntas en un determinado servidor. HBase contiene un único máster y un
conjunto de “esclavos“ denominados regionservers, los cuales sirven varias regio-
nes mientras que una región es servida únicamente por un regionserver.
En la figura 4.1 se presenta la arquitectura de HBase. En ella se puede observar
los tres elementos más importantes de HBase: el Máster, los Regionservers y Zoo-
keeper.
FIGURA 4.1: Arquitectura de HBase
4.1. Descripción de las herramientas utilizadas 11
El HMáster es un proceso ligero encargado de distribuir las regiones entre los
distintos Regionservers con propósito de mejorar la escalabilidad. Entre sus princi-
pales funciones se encuentra:
Manejar y monitorizar el cluster
Manejar las peticiones de creación, manipulación y borrado de tablas
Coordinar la recuperación en caso de un fallo
Atender las peticiones por partes de los clientes correspondientes al cambio
de schema, manipulación de regiones . . .
Los Regionserver son los encargados de escuchar las peticiones de lectura, actua-
lización e inserción de los datos a petición de los clientes. Se ejecutan en todos los
nodos del cluster y sirven los datos guardados en los Datanodes de Hadoop. Los
componentes más importantes de los regionserver son :
Block cache Los datos más leídos se guardan en memoria. Si no hay espacio
en memoria para nuevos datos, los menos accedidos son eliminados de la
memoria para guardar los nuevos.
Memstore Esta es la caché de escritura y guarda los nuevos datos antes de ser
escritos todos juntos en disco.
Write Ahead Log Para asegurar la persistencia de los datos en caso de fallo
del regionerver, por cada dato guardado en la memstore se guarda un regis-
tro/log en el WAL para recuperar el dato en caso de fallo.
HFile Es la estructura de datos que guarda todos lo datos ordenados en disco.
Por último Zookeeper, un servicio de coordinación distribuido altamente fiable que
guarda datos en formato clave-valor, en este caso se utiliza para guardar informa-
ción acerca de los regionservers y el máster. Entre las funciones de Zookeeper se
encuentran las siguientes:
Establecer la comunicación entre el cliente y los regionservers
Monitorizar fallos de particiones de red
Mantener la configuración del cluster
4.1.3. Descripción de Apache Phoenix
Apache Phoenix es un proyecto que ha surgido con el objetivo de ”poner el
SQL de vuelta dentro del NOSQL”. Con esta finalidad presente, se puede decir que
Apache Phoenix es una capa de base de datos relacional para HBase, escuchando
peticiones SQL y transformándolas a peticiones nativas de HBase[11].
Existen varias razones por las que un proyecto como Apache Phoenix es necesa-
rio. Para empezar, a pesar de su antigüedad, desde los años 1970, el SQL sigue
siendo uno de los lenguajes más utilizados hoy en día a nivel empresarial. Su faci-
lidad de uso, su popularidad, la cantidad de librerías y sistemas que actualmente
lo utilizan, hacen que el lenguaje SQL siga siendo interesante para nuevas librerías
12 Capítulo 4. Desarrollo
o proyectos. Apache Phoenix pretende ofrecer todas las ventajas del lenguaje SQL
combinadas con las ventajas de un sistema de base de datos NOSQL, como por
ejemplo su capacidad para escalar y ofrecer un mayor throughput, pudiendo llegar
a millones de operaciones por segundo, en entornos donde un sistema relacional
no seríacapaz, con petabytes de datos de distinta naturaleza.
En la figura 4.2 se presenta dónde encaja Apache Phoenix dentro del ecosistema
Hadoop. Como se puede observar, Phoenix es un sistema más junto a Hive, Pig,
que se ejecutan encima de HDFS. Esta herramienta, se divide en dos partes, una
parte servidora que escucha y ejecuta las querys realizadas realizadas por la parte
cliente, que se instala como librerías adicionales en tu proyecto.
FIGURA 4.2: Apache Phoenix en el ecosistema Hadoop
La figura 4.3 presenta un esquema arquitectural más detallado, mostrando co-
mo encaja los componentes de Apache Phoenix dentro de HBase.
FIGURA 4.3: Arquitectura Apache Phoenix y HBase
Por último, en la figura 4.4 se presenta como Apache Phoenix realiza la tra-
ducción de tablas de Phoenix a las tablas de HBase. Como se puede observar, la
traducción es bastante directa pero hay que tener presente que la clave primaria de
una tabla de HBase se forma mediante la concatenación de los valores de las co-
lumnas que forman la primary key. Teniendo en cuenta está implementación, para
obtener un mayor rendimiendo hay que fijar como clave primaria aquellas tablas
que sean utilizadas frecuentemente en las clasulas "where".
4.1. Descripción de las herramientas utilizadas 13
FIGURA 4.4: Apache Phoenix modelo de datos
4.1.4. Descripción de Splice Machine
Splice Machine es otro sistema que ha surgido con el crecimiento de las bases
de datos NOSQL y que pretende ofrecer una capa compatible con SQL para acce-
der a estos nuevos sistemas. Sin embargo, a diferencia de Apache Phoenix, Splice
Machine es mucho más que una herramienta o un framework, es toda una plata-
forma de análisis de datos dónde la compatibilidad SQL y NOSQL es sólo una de
sus funciones.
Splice Machine contiene en su arquitectura dos motores de ejecución, uno especia-
lizado en Procesamiento de Transacciones En Línea (OLTP) y otro On-Line Analy-
tical Processing (OLAP). El primero, especializado en transacciones, utiliza HBase
como sistema de gestión de los datos. Por el otro lado, cuando se trata de ejecu-
ciones muy costosas que requieren de varias operaciones o de distinta naturaleza
, como group by, joins, ordenar, etc, se utiliza Spark como motor de análisis de los
datos requeridos. Su filosofía se puede encontrar la figura 4.5, donde se observa la
distinción entre los distintos tipos de operaciones, su flujo de procesamiento y el
problema que se pretende evitar.
FIGURA 4.5: Splice Machine motores de búsqueda
14 Capítulo 4. Desarrollo
Los objetivos que persiguen tratan de conseguirlos con las herramientas pre-
sentadas en la figura 4.6. En este diagrama de su arquitectura se puede ver como
en los nodos de computo además de HBase viene instalado Spark y unos compo-
nentes adicionales propios de Splice Machine. Estos componentes, como el parser,
el planner y el cost based optimizer son los encargados de analizar el mejor flujo
para cada operación y enviarla por la "víaçorrecta.
FIGURA 4.6: Splice Machine arquitectura
4.2. Elección del cliente
Para realizar un benchmark es necesario elegir un cliente que se adapte a la in-
fraestructura que se quiere analizar, o en su defecto, sea lo suficientemente flexible
como para adaptarlo a nuevos entornos. Dependiendo del tipo de cliente se hace
énfasis en un determinado tipo de operaciones u otras, buscando el rendimiento
de una determinada operación. Por lo tanto, los resultados obtenidos con una he-
rramienta no son comparables con los obtenidos por otra, y en consecuencia, la
herramienta elegida se va utilizar para el test de ambos sistemas.
Las herramientas elegidas son YCSB y Escada TPC-C. Los dos clientes están desti-
nados a probar el rendimiento de distintos sistemas, ambos son fácilmente adapta-
bles y personalizables y ambos ofrecen un resumen con las estadísticas del estudio,
como por ejemplo el thoughput, el tiempo medio de respuesta por tipo de opera-
ción, percentil 95, percentil 99 etc. . .
Yahoo! Cloud Serving Benchmark (YCSB) es una herramienta que se ha impues-
to como un estándar en el mundo cloud. Permite realizar pruebas de manera muy
ágil ya que únicamente se necesita Java instalado en la máquina cliente. Por defecto
nos permite especificar el número de clientes concurrentes a utilizar, la distribución
a la hora seleccionar los datos y ofrece distintas operaciones ( lectura, actualización,
inserción, scan). El esquema de la base de datos es muy sencillo, consta únicamente
de una tabla con una clave y 10 campos.
Por el contrario, el cliente Escada TPC-C es una implementación del estándar
tpcc-c, descrito en el apartado 2.1, y que por lo tanto ofrece unos resultados que
se pueden comparar con otras bases de datos al tratarse de un estándar, indepen-
dientemente de si se usó el mismo cliente o no para realizar la prueba. El estándar
describe exactamente como se debe realizar las pruebas, tamaño de datos, tiempos
etc. A diferencia de YCSB, el esquema de la base de datos es más compleja, y por
4.2. Elección del cliente 15
lo tanto más completo al ofrecer distintos tipos de relaciones y distintos tipos de
transacciones, algunas que involucra más tablas, columnas,etc. En la figura 4.7, se
puede observar el esquema relacional establecido por el estándar tpcc.
FIGURA 4.7: Tpcc esquema de base de datos
4.2.1. Pruebas empíricas
Para la prueba empírica se ha desarrollado las conectores que permiten la co-
municación con Apache Phoenix y Splice Machine de ambos clientes.
La implementación de YCSB ha resultado muy sencilla ya que está bien documen-
tada y únicamente hay que modificar las consultas a realizar. Al tratarse de una
herramienta creada con el fin de probar distintos sistemas, la flexibilidad forma
parte de su arquitectura.
Por el contrario, Escada TPC-C es una implementación ad hoc, y aunque ofrezca
una manera de integrarse con otros sistemas se ha requerido de cierta ingeniería
inversa para desarrollar el conector entre el cliente y los servidores. Además, cier-
tas funcionalidades de las que se espera de una base de datos relacional, y que por
lo tanto Escada TPC-C, no está disponible ni en Apache Phoenix ni en Splice Machi-
ne, como por ejemplo el autoincrement. Esto ha complicado aún más el desarrollo
del conector para Escada.
Durante el proceso de implementación se han utilizado las versiones Standalone
de los sistemas objetos de prueba, o el cluster con un tamaño de base de datos ínfi-
mo, suficiente para probar la correcta implementación, pero no el rendimiento del
sistema.
La primera gran diferencia a la hora de evaluar los dos clientes nos las encontra-
mos al cargar los datos. Las diferencia de tiempo entre YCSB y Escada TPC-C para
cargar 10 GB de datos es de aproximadamente 3 horas, llevando 4 horas cargarlos
con YCSB y más de 7 horas con ESCADA TPC-C. Esta diferencia podría deberse a
que en el segundo cliente, se están utilizando indices, claves primarias, más tablas
y columnas, aunque finalmente el tamaño de los datos sea similar.
16 Capítulo 4. Desarrollo
Las primeras pruebas con YCSB dieron resultados muy satisfactorias, llegando a
más de 1000 operaciones por segundo y tiempos de respuesta muy contenidos, por
debajo de los 50 milisegundos en lectura y 10 milisegundos en escritura. Teniendo
en cuenta que hay 3 máquinas bastante pequeñas, ofrecer más de 1000 operaciones
por segundo, aunque sea unas operaciones muy sencillas, es un resultado satisfac-
torio.
Con Escada TPC-C se encontraron problemas de rendimiendo cuando se aumenta
el tamaño de la base de datos, incluso con unos pocos GB que caben en la memoria.
Mirando las trazas de log se ha observado que es debido al tipo de operaciones que
se realizan. Las operaciones de lectura en lugar de realizar un Get hacen una ope-
ración Scan, la cual es mucho más lenta y costosa. Durante la realización de estas
operaciones la CPU de todos los nodos está al 100 %.
4.3. Introducción al benchmark definido 17
4.3. Introducción al benchmark definido
En el presente apartado se explica el plan de pruebas arealizar, incluyendo tan-
to la parte software como de infraestructura, para analizar el rendimiento de los
sistemas objeto de estudio, Apache Phoenix y Splice Machine.
La primera etapa es la definición de las pruebas a realizar. Esta fase incluye el di-
seño de un plan de pruebas que cubra un amplio caso de pruebas y que nos permita
obtener conclusiones útiles. Este plan debe establecer tanto el tipo de operaciones
a realizar, número de clientes, tamaños de bases de datos así como la duración de
cada prueba.
La segunda fase del presente proyecto, incluye la instalación y configuración del
entorno. También se incluye en este apartado la instalación de herramientas de mo-
nitorización de las máquinas de modo que se pueda detectar cuellos de botella o
deficiencias de nuestras máquinas. El resultado de esta fase es un cluster de Apache
Phoenix y Splice Machine plenamente funcional.
La tercera fase corresponde a la ejecución. El objetivo principal en estos momentos
es la ejecución de los scripts anteriormente mencionados y la monitorización de la
plataforma para asegurar su integridad operacional de modo que los resultados de
la prueba sean válidos.
Por último, queda la frase de análisis de resultados, etapa en la que se analizan
los datos obtenidos para transformarlos en información. El resultado de esta etapa
es un informe con los resultados y conclusiones extraídas.
4.4. Especificación del plan de pruebas
Las pruebas definidas deben cubrir un amplio rango de casos que nos permi-
tan extraer conclusiones objetivas. Para ello es necesario definir un procedimiento
estándar a seguir durante todas las pruebas.
En primer lugar se debe encontrar el número óptimo de clientes, que nos permi-
tan realizar el máximo número de operaciones por segundo teniendo en cuenta la
latencia de escritura y lectura.
Para ello hay que probar diferentes combinaciones de los parámetros de los clien-
tes, siendo de los más importantes cuantos clientes se utilizan. Un número dema-
siado elevado de clientes puede saturar el sistema dando lugar a peores tiempos
o número de operaciones por segundo (throughput). Utilizar pocos clientes puede
provocar poco tráfico y peticiones,y por lo tanto, no llegar a la capacidad máxima
del cluster. Cada prueba debe durar al menos dos horas, y cada aumento de clien-
tes será de 50 en 50 hasta alcanzar el máximo que el cluster pueda atender.
Para obtener el valor óptimo para el número de clientes, se va a ir aumentando
poco a poco el número de clientes y se va ejecutar una prueba, con el fin de obtener
el máximo throughput y observar como varía los tiempos de respuesta. El cliente
18 Capítulo 4. Desarrollo
"óptimo.es subjetivo, ya que para algunos casos de uso el objetivo es conseguir el
mayor número de operaciones, mientras que para otros el objetivo es conseguir la
mejor latencia. Para el presente trabajo se va a usar aquel que ofrezca el mayor nú-
mero de operaciones sin penalizar demasiado los tiempos de respuesta.
Una vez se obtenga el número de clientes óptimo se pasa a realizar las pruebas
de rendimiento. El objetivo es ver como varía el tiempo de respuesta con respecto
al número de operaciones por segundo. Para ello, se va a comenzar con un número
bajo de operaciones por segundo para posteriormente aumentarlo y volver a rea-
lizar la prueba. Se van a realizar un total de cuatro pruebas, siendo cada aumento
calculado como el máximo throughput obtenido en el paso anterior dividido para
cuatro. Cada prueba, va a durar cuatro horas para minimizar el impacto de los pi-
cos de latencia puntuales, y obtener así un resultado más robusto y real.
Con el fin de minimizar/eliminar la interferencia de una prueba anterior en la si-
guiente, los datos deben restaurarse quedando siempre en un estado consistente y
sin ninguna modificación realizada después de la carga de datos. El cluster se va
reiniciar después de cada prueba, eliminando así los datos residentes en memoria,
y por lo tanto, restos de ejecuciones anteriores.
Con todas las pruebas, se puede obtener un gráfico comparando como varía las
latencias con respecto al número de operaciones, así como la capacidad máxima
del cluster.
Por último, con el fin de probar la escalabilidad del sistema, las pruebas anterio-
res se van a realizar con distintos tamaños de la base de datos, los cuales de definen
a continuación.
tam_base_de_datos_normal = no_regionservers ∗memoria_regionserver
Un tamaño de base de datos "normal.es lo suficientemente grande como para no
caber en memoria, siendo necesario de este modo frecuentes accesos a disco aun-
que haya ocasiones que los datos se sirvan directamente de memoria.
tam_base_de_datos_grande = no_regionservers ∗memoria_regionserver ∗ 3
Para probar la escalabilidad del sistema, triplicamos el tamaño de base de datos
del paso anterior. El objetivo es probar si la cantidad de datos influye en el sistema,
y si lo hace, hasta que punto. Obviamente, el sistema tendrá un limite a partir del
cual no escalará, pero el objetivo es observar si hay grandes diferencias entre tener
pocos datos que prácticamente caben en memoria, o una cantidad que implique
siempre el acceso a disco.
Las pruebas anteriores se van a realizar para ambos sistemas objetos de estudio,
Apache Phoenix y Splice Machine.
4.5. Instalación y configuración del entorno 19
4.5. Instalación y configuración del entorno
En esta sección se explica el proceso de instalación y configuración del cluster
para la prueba, indicando las características de la infraestructura así como la arqui-
tectura del sistema.
4.5.1. Descripción de la infraestructura
La infraestructura para la prueba se ha montado en un cluster de Openstack
con cuatro máquinas virtuales. En la tabla 4.1 se muestra una lista con las distintas
maquinas con sus características hardware y sofware.
FQDN Disk Memory Cores SO
blade39 300GB SSD/1TB HDD 8GB 4 Ubuntu 14
blade40 300GB SSD/1TB HDD 8GB 4 Ubuntu 12
blade41 300GB SSD/1TB HDD 8GB 4 Ubuntu 12
blade83 300GB SSD/1TB HDD 8GB 4 Ubuntu 14
CUADRO 4.1: Descripción de las máquinas
Se destaca la igualdad de las especificaciones físicas de las siguientes máquinas
y la diferencia a nivel de sistema operativo. Tener diferentes versiones del sistema
operativo en un mismo cluster nunca es buena idea debido a posibles incompatibi-
lidades.
4.5.2. Instalación y configuración de herramientas comunes
Apache Phoenix y Splice Machine se ejecutan encima de HBASE el cual necesita
Hadoop para su funcionamiento. Por ello el primer paso consiste en la instalación
de un cluster de Hadoop. Inicialmente se ha optado por la instalación y configura-
ción manual de cada una de las máquinas, sin embargo pronto se han encontrado
dificultades a la hora de mantener el cluster, detectar componentes caídos o modi-
ficar de parámetros de configuración.
Debido a los problemas encontrados, se ha visto la necesidad de instalar sistemas
que permitan la gestión integral del cluster de una manera más sencilla y sobretodo
ágil, empleando así más tiempo en las pruebas y menos en mantenimiento.
La instalación de clusters de Hadoop y HBase es una tarea frecuente entre los profe-
sionales del sector, y es por ello que han surgido algunos proyectos, como Cloudera
y Apache Ambari, que automatizan esta tarea. Ambos proyectos ofrecen mediante
un servidor gráfico la posibilidad de configurar e instalar las herramientas necesa-
rias en todas las máquinas que componen el cluster. Para el presente proyecto se ha
seleccionado Apache Ambari al ser opensource.
Apache Ambari ofrece la posibilidad de asignar de manera gráfica los distintos
roles, como por ejemplo Namenode en el caso de Hadoop, o Regionservers a cada
una de máquinas del cluster. Por defecto, Ambari nos sugiere una configuración de
modo que los distintos servicios se distribuyen a lo largo de todo el cluster, aunque
20 Capítulo 4. Desarrollo
ha sido necesario modificarla.
Además de la instalación de Hadoop y Hbase, Apache Ambarí ofrece servicios
agregados que aportan valor al cluster, tales como la posibilidadde añadir o quitar
nodos de manera visual así como la monitorización de la plataforma. Así mismo,
ofrece una interfaz que nos permite modificar las configuraciones del cluster de
una manera rápida y consistente para todas los nodos. Por último, cuando ocurre
una anomalía en la plataforma, una alerta es disparada para poder actuar en con-
secuencia.
En la figura 4.8 podemos observar la plataforma Apache Ambari instalada y fun-
cionando.
FIGURA 4.8: Monitorización con Apache Ambari
4.5.3. Arquitectura del cluster
En esta apartado se comenta brevemente la distribución de los distintos com-
ponentes en los distintos nodos del cluster.
En la figura 4.9 se puede observar los componentes del principales de HDFS y HBa-
se y su distribución entre los distintos nodos. Se destaca el hecho de que el nodo
blade39 no se está utilizando para guardar datos, sino que se encuentra únicamente
el cliente que realiza las peticiones y unos pocos componentes que no requieren
demasiados recursos, y por lo tanto, no provoca que el cliente se convierta en el
cuello de botella.
Se han omitido los flujos entre los distintos componentes ya que se trata del están-
dar de HBase, no hay nada adicional, y restaría claridad al presentar la distribución
de los componentes.
4.5. Instalación y configuración del entorno 21
FIGURA 4.9: Distribución de componentes
Se remarca que la figura 4.9 presenta el cluster base, a partir del cual es necesario
instalar los gestores NoSQL adicionales, Apache Phoenix o Splice Machine.
4.5.4. Instalación de Apache Phoenix
La instalación de Apache Phoenix se realiza mediante la interfaz de Apache
Ambari, ya que la plataforma ofrece una integración nativa con Apache Phoenix.
Esta versión es un poco antigua al tratarse de una versión de hace aproximadamen-
te dos años, finales de 2015. Sin embargo, Apache Ambari no permite ni aconseja
la actualización de un componente individual, por lo que las pruebas se han tenido
que realizar con la versión Apache Phoenix 4.7.1. Se ha intentado actualizar a la
versión 4.10.0 sin éxito.
La instalación consiste en añadir a las librerías de HBase unas adicionales, las de
Apache Phoenix, que levantan un servidor escuchando las peticiones SQL que tra-
duce a peticiones de HBase.
Se ha instalado el servidor de Apache Phoenix en cada uno de los nodos donde
está presente HBase, quedando la arquitectura como se presenta en la figura 4.10.
22 Capítulo 4. Desarrollo
FIGURA 4.10: Distribución de componentes con Apache Phoenix
4.5.5. Instalación de Splice Machine
Apache Ambari no ofrece la posibilidad de instalar Splice Machine, por lo que
es necesario realizar una instalación por manual. No obstante, debido a la popu-
laridad de Apache Ambari , existe una guía adaptada donde se indica los pasos
necesarios para instalar Splice Machine, incluyendo las modificaciones que se de-
ben realizar a nivel de Ambari o a nivel de sistema operativo.
La primera parte del proceso de instalación consiste en descargarse los ficheros
y ejecutar unos scripts de instalación, los cuales copian unos ficheros en las carpe-
tas de la instalación de HBase.
La segunda parte consiste en modificar las configuraciones de Hadoop, Zookeper y
HBase con optimizaciones o modificaciones necesarias para utilizar las librerías de
Splice Machine. Entre dichas modificaciones se destaca a nivel de Hadoop el nivel
de replicación de los datos así como la memoria de los distintos componentes de
Hadoop.
A nivel de Zookeper es necesario modificar las conexiones máximas permitidas
desde un determinado cliente, ya que por defecto se permiten 20 concurrentes y en
el caso de Splice puede resultar insuficiente.
Las principales modificaciones se tienen que realizar a nivel de HBase, donde Spli-
ce Machine requiere unos modificaciones profundas de algunos parámetros. Entre
ellas se destaca la modificación de la memoria máxima de todos los componentes,
número de conexiones permitidas, timeouts, etc. Aparte de dichas configuraciones,
es necesario ajustar los coprocesadores de las peticiones de las regiones de HBase,
para que en lugar de utilizar los establecidos por defecto, utilice los de Splice Ma-
chine. Otra configuración destacable a nivel de HBase es que se modifica el Garbage
4.5. Instalación y configuración del entorno 23
Collector utilizado, marcando el Current Mark Sweep como el garbage collector a
utilizar en lugar del establecido por defecto.
Por último, los parámetros sugeridos por Splice Machine referentes a la memo-
ria han sido necesarios adaptarlos, ya que entre sus requisitos Splice requiere que
todas las máquinas tengan 64GB de RAM, cantidad muy superior a los 8GB de los
que se dispone en el cluster actual.
En la figura 4.11 se muestra la distribución de los componentes una vez instalado
y configurado el cluster. Todo lo que hay en color naranja, está relacionado con la
instalación de Splice Machine. Como se puede observar se añaden nuevos compo-
nentes a HBase, añadiendo funciones a los regionservers que no están por defecto.
FIGURA 4.11: Distribución de componentes con Apache Phoenix
4.5.6. Preparación de las pruebas
Carga de datos
Tras instalar y configurar Hadoop, Hbase, Phoenix y otros componentes la me-
moria disponible para los regionservers de 4Gb.
Aplicando el procedimiento descrito en la sección 4.4,calculamos los tamaños de
las dos bases de datos, dando como resultado 12 Gb ( 3nodos∗4Gb/nodo) en el caso
de la base de datos normal y de 36Gb ( 3nodos ∗ 4Gb/nodo) en el caso de la base de
datos grande. Cada registro ocupa unos 110Kb, por lo tanto hacen falta alrededor
de 11 millones de registros para la base de datos normal y unos 30 millones de re-
gistros para la base de datos grande.
Se destaca que a pesar de que la memoria de los regionservers sea de 4gb y el ta-
maño de la base de datos sea de 12Gb, no caben todos los datos en memoria. Hbase
reserva memoria para buffers de escritura y buffers de lectura. Dependiendo del
porcentaje que se le dé a cada tipo de operación, el tamaño del heap de los region-
servers varía entre los 2gb y los 3gb. Por lo tanto, incluso con una base de datos
24 Capítulo 4. Desarrollo
tan pequeña es necesario frecuentes accesos a disco. Además, se tiene configurado
a nivel de hdfs un factor de replicación de 3, por lo que los datos están triplicados
en disco.
En el caso de la base de datos grande, los accesos al disco serán continuos por
lo que los tiempos de respuesta, a priori, deberían ser superiores y el disco se con-
vierta en cuello de botella.
Por defecto, se ha dejado la responsabilidad de distribuir los datos a HBase, sin
embargo el resultado no ha sido del todo satisfactorios. Aparte de la tabla, USER-
TABLE, utilizada para las pruebas, en HBase existen otras para los procesos inter-
nos. Debido a esto, ha ocurrido que algunos regionservers tuvieran más regiones
de la table USERTABLE que otros. Para solucionarlo, se ha realizado una interven-
ción manual para mover algunas regiones a otros regionservers, distribuyendo así
las regiones con los datos de USERTABLE de una manera más equilibrada.
Esto aplica tanto a la base de datos creada con Apache Phoenix como con Splice
Machine.
Ejecución de las pruebas
Una vez instalada la plataforma, configurada y cargados los datos queda reali-
zar las pruebas definidas. En una primera instancia se ha considerado la posibilidad
de automatizar el proceso para que no haga falta intervención humana, sin embar-
go se ha descartado debido al esfuerzo que supone en comparación con las ventajas.
La intervención humana necesaria es bastante limitada, únicamente se interviene
para restaurar la base de datos a un estado inicial, reiniciar el cluster y lanzar la
prueba. El principal problema cuando se reinicia un cluster de HBase es que la dis-
tribución de las regiones no quede uniforme entre todos los servidores, por lo que
es necesario moverlas manualmente. Con el fin de asegurar la correcta distribución
de los datos se ha optado por la realización manual de estos pasos.
Cada caso de pruebatiene un fichero con configuración propio, que es pasado al
cliente YCSB en el momento de lanzar la ejecución del proceso. Crear un fichero
de configuración diferente para cada prueba nos permite obtener una mejor traza-
bilidad de las pruebas, así como la posibilidad de realizar más interaciones con la
misma configuración.
nohup ./ycsb -p workload_heavy_read_50t_475ops.properties
-cp $CLASSPATH > workload_heavy_read_50t_475ops.out &
nohup ./ycsb -p workload_heavy_read_50t_950ops.properties
-cp $CLASSPATH > workload_heavy_read_50t_950ops.out &
Nohup nos permite ejecutar en segundo plano la prueba sin necesidad de mantener
la conexión ssh activa, por lo que la comunicación con el cluster se limita a realizar
las operaciones anterior.
4.5. Instalación y configuración del entorno 25
Los resultados obtenidos son recogidos y guardados en una hoja de calculo que
posteriormente permite realizar el análisis de los resultados.
4.5.7. Monitorización del proceso e identificación de cuellos de botella
Durante la ejecución de las pruebas se ha monitorizado el sistema con el ob-
jetivo de encontrar qué componente se satura antes. Apache Ambari ofrece esta
funcionalidad de caja ya que trae varios componentes que nos permiten monitori-
zar tanto los sistemas como los componentes en sí. Aunque cumple su función, las
gráficas resultantes se muestran agrupando las métricas de todos los nodos, por lo
que si un nodo está muy saturado mientras que los otros están más liberados, los
resultados conjuntos mostrarán que el cluster está liberado a pesar de que pueda
haber un problema.
En la figura 4.12 se presenta un ejemplo de monitorización de una prueba de carga
de HBase . Se puede observar como la velocidad de acceso a disco está alrededor
de los 100Mbs por segundo. Sin embargo, aunque este dato es real no representa
con suficiente detalle dónde está el problema en concreto.
FIGURA 4.12: Monitorización plataforma con Apache Ambari
Según la figura anterior el cluster no tiene ningún problema, sin embargo si ac-
cedemos a los nodos podemos observar que algunos se encuentran sobresaturados
mientras que otros no tienen prácticamente carga. La figura 4.13 representa la si-
tuación de los nodos cuando se llega al máximo throughput del sistema. Se puede
observar como los procesos de los regionservers son los que más iowait tienen. El
IOWAIT indica cuanto por ciento del tiempo de ejecución de un determinado pro-
ceso ha estado esperando por una operación de entrada o salida. En este caso, el
iowait del 99 % indica que el cuello de botella se encuentra en el acceso a disco, en
concreto, acceso de lectura.
Esta situación se presenta en prácticamente todas las pruebas realizadas, siendo
más acentuada en las pruebas con Apache Phoenix mientras que con Splice Machi-
ne, aunque también se da la situación, ocurre en menor medida.
26 Capítulo 4. Desarrollo
FIGURA 4.13: Resultado IOTOP en un nodo
Por el otro lado, la memoria se utiliza prácticamente al máximo en todos los
nodos, mientras que la CPU en las pruebas realizadas no resulta un problema. La
figura 4.14 muestra el uso de recursos típico durante una prueba. Se puede observar
como la memoria sí que llega ocuparse mientras que la CPU se mantiene en niveles
muy bajos y estables.
FIGURA 4.14: Resultado HTOP en un nodo
27
Capítulo 5
Resultados
5.1. Resultado benchmark de Apache Phoenix
En esta sección se presenta y discute el resultado del benchmark de Apache
Phoenix, tras aplicar el procedimiento especificado en la sección 4.4.
5.1.1. Benchmarking de la base de datos pequeña con alto porcentaje de
escritura
En este apartado se explica las pruebas con un tamaño de base de datos pe-
queño. En este caso de prueba, las operaciones realizadas son de tipo get y write,
siendo un 50 % operaciones de lectura y un 50 % operaciones de escritura. Al haber
un gran porcentaje de escritura, se ha configurado HBase para que asigne un 50 %
de la memoria a los buffers y un 50 % a los buffers de lectura.
Resultado elección del número de clientes
Para la elección del número de clientes se han realizado las pruebas especifica-
das en la sección 4.4. En la figura 5.1 se puede observar los resultados obtenidos de
dichas pruebas. Se observa que a partir de los 100 clientes el número de operacio-
nes se mantiene estable, incluso decae ligeramente, pero los tiempos de respuesta
aumentan notablemente. Es por ello, que para el caso de pruebas con 50 % lectura,
50 % escritura y un tamaño de base de datos 12Gb, se han elegido 100 clientes para
acceder a la base de datos concurrentemente.
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.1: Resultados número de clientes base de datos pequeña
alta escritura
28 Capítulo 5. Resultados
Resultados benchmarking
En la sección anterior se determinó que 100 es número de clientes óptimo para
realizar la prueba, al ser el número de clientes que mejor balance ofrece entre la
latencia y el número de operaciones.
En las pruebas realizadas para obtener el número de clientes óptimo, se ha obser-
vado que el throughput máximo es de 2640 operaciones por segundo. De acuerdo
a la especificación del plan de pruebas, sección 4.4, se van a realizar las pruebas con
los siguientes throughputs prefijados:
incremento = max_throughput/4; incremento = 2640/4 � 655
Se va a utilizar un incremento de 655 para calcular los valores intermedios de th-
roughput para los cuales se va a medir la latencia. Los valores resultantes son [655,
1310, 1965, 2650]. Para el último valor en lugar de utilizar un salto de 655 se ha
aumentado a 685, ya que puede ocurrir que en la prueba de selección de clientes
haya dado un valor ligeramente menor que en la prueba final.
En la figura 5.2 se presenta el resultado de las pruebas realizadas. Se puede ob-
servar como el tiempo de escritura y lectura son bastante similares hasta prácti-
camente llegar al máximo throughput del sistema, donde el tiempo de lectura se
dispara mientras que el de escritura tiene un aumento más lineal.
FIGURA 5.2: Resultados con gran carga escritura base de datos pe-
queña
5.1.2. Benchmarking de la base de datos pequeña con alto porcentaje de
lectura
En esta sección se presenta las pruebas realizadas con una base de datos peque-
ña pero con alto porcentaje de lectura, en este caso, un 95 % de lectura y un 5 % de
escritura.
5.1. Resultado benchmark de Apache Phoenix 29
Resultado elección del número de clientes
Al igual que en el apartado anterior, y según se especificó en la sección 4.4 con el
plan de pruebas teórico, el primer paso es encontrar en número de clientes óptimo.
En la figura 5.3 se presenta los resultados de la prueba. De nuevo, se puede ob-
servar como con los 100 clientes se alcanza prácticamente el máximo throughput
ofrecido y a pesar de aumentar el tiempo de respuesta con respecto a los 50 clientes
concurrentes, se asume debido al aumento de throughput en más de 100 operacio-
nes por segundo.
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.3: Resultados número de clientes base de datos grande
alta escritura
Resultados benchmarking
Con los 100 clientes seleccionados como número de clientes óptimo en la sec-
ción anterior, se han obtenido 1574 operaciones por segundo. Con estos datos po-
demos calcular los throughputs intermedios con los que se van a realizar las prue-
bas. En este caso dan lugar a un incremento de 395 ( 1574/4) y los throughputs
[395,790,1185,1600]. De nuevo se aumenta ligeramente el último umbral se pone
un poquito por encima por si el sistema pudiera dar más de si.
En la figura 5.4 se presenta los resultados obtenidos con los datos mencionados.
Se observa que el throughput máximo es inferior al obtenido en la sección anterior,
debido principalmente a que el número de operaciones mayoritarias, en este caso
de lectura, cuesta más tiempo realizarlas.
30 Capítulo 5. Resultados
FIGURA 5.4: Resultados con gran carga escritura base de datos pe-
queña
De nuevo se puede observar que el tiempo de escritura no varía muchocon
respecto al throughput, aunque aumenta, no es tan acelerado como en el caso de
lectura. Por el contrario, el tiempo de respuesta cuando se realizan pocas peticiones
es muy bajo y prácticamente igual tanto para lectura como para escritura. A pesar
de todo, se sigue tratando de tiempos bajos.
5.1.3. Benchmarking de la base de datos grande con alto porcentaje de
escritura
En esta sección se realiza la prueba de rendimiento de la base de datos después
de haber triplicado su tamaño, ocupando 36GB. En esta sección se va probar el
rendimiento con una alta carga de escritura, siendo el 50 % de las operaciones de
escritura y el 50 % de lectura.
Resultados elección del número de clientes
Para la elección del número de clientes se han realizadas las pruebas especifi-
cadas en la sección 4.4. En la figura 5.7 se puede observar los resultados obtenidos
en las pruebas realizadas. A partir de los 100 clientes el número de operaciones
aumenta ligeramente, sin embargo el tiempo de lectura se incrementa en mayor
cantidad. Es por ello, que para el caso de pruebas con 50 % lectura, 50 % escritura
y un tamaño de base de datos 36GB, se han elegido 100 clientes para acceder a la
base de datos concurrentemente.
5.1. Resultado benchmark de Apache Phoenix 31
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.5: Resultados número de clientes base de datos grande
alta escritura
Resultados benchmarking
Con los 100 clientes seleccionado como número de clientes óptimo en la sección
anterior se han obtenido 2250 operaciones por segundo. Con estos datos podemos
calcular los throughputs intermedios con los que se van a realizar las pruebas. En
este caso dan lugar a un incremento de 565 (2250/4) y los throughputs [565, 1130,
1695 y 2260].
FIGURA 5.6: Resultados con gran carga escritura base de datos gran-
de
De nuevo el resultado es parecido a todas las pruebas realizadas anteriormente;
tiempos muy parecidos con pocas operaciones por segundo y un aumento conside-
rable al llegar al limite del sistema. Con este tamaño de la base de datos el tiempo
de respuesta en el caso de escritura aumentó más que en las pruebas anteriores, con
una base de datos más pequeña, al alcanzar el máximo throughput.
5.1.4. Benchmarking de la base de datos grande con alto porcentaje de
lectura
En esta sección se realiza la prueba de rendimiento de la base de datos después
de haber triplicado su tamaño. En esta sección se va probar el rendimiento con una
32 Capítulo 5. Resultados
alta carga de escritura, siendo el 50 % de las operaciones de escritura y el 50 % de
lectura.
Resultado elección del número de clientes
Para la elección del número de clientes se han realizado las pruebas especifica-
das en la sección 4.4. En la figura 5.7 se puede observar los resultados obtenidos
de las pruebas realizadas. Se observa como a partir de los 100 clientes el número
de operaciones se mantiene estable, incluso decae ligeramente, pero los tiempos de
respuesta empiezan a aumentar. Es por ello, que para el caso de pruebas con 50 %
lectura, 50 % escritura y un tamaño de base de datos 36b, se han elegido 100 clientes
para acceder a la base de datos concurrentemente.
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.7: Resultados número de clientes base de datos grande
alta escritura
Resultados benchmarking
Con los 100 clientes seleccionado como número de clientes óptimo en la sección
anterior se han obtenido 1250 operaciones por segundo. Con estos datos podemos
calcular los throughputs intermedios con los que se van a realizar las pruebas. En
este caso dan lugar a un incremento de 310( 1250/4) y los throughts [610,620, 930 y
1250].
5.1. Resultado benchmark de Apache Phoenix 33
FIGURA 5.8: Resultados con gran carga de lectura base de datos
grande
Este es el caso en los que más altos se han obtenido los tiempos de respuesta,
tanto para escritura como para lectura. Debido a ello, el thoughput máximo tam-
bién es bastante inferior a todos los demás casos.
5.1.5. Discusión de resultados Apache Phoenix
En este apartado se discute los resultados obtenidos en las subsecciones ante-
riores, analizando la diferencia de tiempos y de thoughput obtenido.
La primera observación es que los tiempos de escritura se mantienen siempre muy
por debajo de los tiempos de lectura, al menos al alcanzar el máximo throughput.
Esto se debe a que HBase está optimizado para escritura, guardando en memoria
los datos escritos hasta que haya un número suficiente de datos como para ser or-
denado y escrito a disco. Por lo tanto, la escritura siempre va ser más rápida que
la lectura al no necesitar acceso a disco tan frecuente, y al hacerlo, es una escritura
secuencial lo cual contribuye a mejorar a rendimiento [10].
Un comportamiento similar se puede observar en un benchmark realizado por
Yahoo, dónde se medía el rendimiento de distintos sistemas no relacionales, entre
ellos HBase [3]. En ese estudio los tiempos de escritura igualmente se mantenían
por debajo de los de lectura, sin embargo había una diferencia mucho mayor que
en el presente estudio dónde las diferencias, sobretodo en los throughputs bajos,
son mínimas. Este comportamiento no es debido a Apache Phoenix, que en prue-
bas sin transacciones, no presentes en este informe, se han obtenido tiempos muy
similares a HBase. El incremento de tiempo se debe al componente que maneja las
transacciones, Apache Tephra. Este componente es el que añade un incremente al
tiempo de escritura.
En la figura 5.9 se representa los tiempo de escritura en función del throughput
máximo obtenido en cada caso de prueba. Se puede observar como los tiempos
son muy similares en un entorno con pocas operaciones por segundo, sin embargo,
34 Capítulo 5. Resultados
cuando se llaga al límite del sistema el tiempo de escritura se incremente cerca de
50 % con un tamaño de base de datos grande.
FIGURA 5.9: Tiempos de escritura en función del throughput
Con respecto a los tiempos de lectura, en la figura 5.10 se puede observar como
el tiempo de lectura no aumenta tanto al variar el tamaño de la base de datos, pero
sí se ve un incremento entre el tipo de carga alto en lectura comparado con el de
escritura. Se destaca que el comportamiento es muy similar en todos los casos, con
pocas operaciones por segundo en todos los casos el tiempo de respuesta es muy
contenido pero aumenta considerablemente al llegar a la máxima capacidad.
FIGURA 5.10: Tiempos de lectura en función del throughput
Por último, queda por analizar el número máximo de operaciones que se ob-
tiene en cada prueba. En la figura 5.11 se puede observar claramente que aquellas
pruebas con una alta carga de escritura obtiene un mayor número de operaciones
por segundo. Esto se debe principalmente a que hay un mayor número de opera-
ciones de escritura que, como se ha visto anteriormente, son más rápidas.
5.2. Benchmark de Splice Machine 35
Con respecto al tamaño de la base de datos, con un tamaño de base de datos pe-
queño y una alta carga de escritura ( columnas small-50r y big-50r de la figura 5.11)
se obtiene un 17 % más de operaciones por segundo que con un tamaño de base de
datos grande. En el caso de tener una alta carga de lectura, se obtiene un 25 % más
de operaciones con una base de datos pequeña que con una grande.
FIGURA 5.11: Throughput en función del tamaño de la base de datos
y el tipo de carga
5.2. Benchmark de Splice Machine
En esta sección se presenta todos los resultados obtenidos durante las pruebas
de rendimiendo del sistema gestor de base de datos Splice Machine.
5.2.1. Benchmarking de la base de datos pequeña con alto porcentaje de
escritura
En esta sección se presenta las pruebas realizadas con una base de datos peque-
ña pero con alto porcentaje de escritura, en este caso, un 50 % de lectura y un 50 %
de escritura.
Resultado elección del número de clientes
El procedimiendo seguido es el especificado en la sección 4.4 con el plan de
pruebas teórico. Por lo tanto el primer paso es encontrar el número de clientesóp-
timo.
En la figura 5.14 se presenta los resultados de la prueba. Se puede observar co-
mo con los 50 clientes se obtiene el throughput máximo, así como los tiempos de
respuesta más bajos de todas las pruebas. Por lo tanto, el mejor número clientes
para esta prueba es de 50.
36 Capítulo 5. Resultados
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.12: Resultados número de clientes base de datos pequeña
alta escritura
Se destaca que el tiempo de escritura es notablemente superior al de lectura,
siendo el doble con pocos clientes y cuatro veces más con un número de clientes
muy elevado.
Resultados benchmarking
Con los 50 clientes seleccionado como número de clientes óptimo en la sec-
ción anterior se han obtenido 1275 operaciones por segundo. Con estos datos po-
demos calcular los throughputs intermedios con los que se van a realizar las prue-
bas. En este caso dan lugar a un incremento de 320 ( 1275/4) y los throughputs
[320,640,960,1280].
En la figura 5.13 se presenta los resultados obtenidos con el número de clientes
seleccionado en el apartado anterior. Se observa como en todo momento el tiem-
po de escritura es superior al tiempo de lectura, incluso en situaciones con pocas
operaciones por segundo.
FIGURA 5.13: Resultados con gran carga escritura base de datos pe-
queña
5.2. Benchmark de Splice Machine 37
5.2.2. Benchmarking de la base de datos pequeña con alto porcentaje de
lectura
En esta sección se presenta las pruebas realizadas con una base de datos peque-
ña pero con alto porcentaje de escritura, en este caso, un 95 % de lectura y un 5 %
de escritura.
Resultado elección del número de clientes
En la figura 5.14 se presenta los resultados de la prueba. Se puede observar co-
mo con los 50 clientes se obtiene más de 1410 operaciones por segundo, bastante
cerca del máximo 1475 obtenido con 100 clientes. Sin embargo, con 100 clientes se
puede observar como el tiempo de escritura se duplica con respecto a 50 clientes.
Por esta razón, para la prueba de rendimiento se van a utilizar 50 clientes concu-
rrentes accediendo a la base de datos.
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.14: Resultados número de clientes base de datos pequeña
alta escritura
Resultados benchmarking
Con los 50 clientes seleccionados como número de clientes óptimo, en la sec-
ción anterior se han obtenido 1418 operaciones por segundo. Con estos datos po-
demos calcular los throughputs intermedios con los que se van a realizar las prue-
bas. En este caso dan lugar a un incremento de 360 ( 1418/4) y los throughputs
[360,720,1080,1440].
En la figura 5.15 se presenta los resultados obtenidos con el número de clientes
obtenidos en el apartado anterior. En situaciones con pocas operaciones por segun-
do, los tiempos están bastante controlados, por debajo de los 10-15 milisegundos.
Sin embargo, cuando se llega al máximo throughput ofrecido por el sistema en es-
tas condiciones, los tiempos de respuesta aumentan hasta los 50 y 15 milisegundos,
para escritura y lectura respectivamente.
38 Capítulo 5. Resultados
FIGURA 5.15: Resultados con gran carga escritura base de datos pe-
queña
5.2.3. Benchmarking de la base de datos grande con alto porcentaje de
escritura
En esta sección se presenta las pruebas realizadas con una base de datos grande
pero con alto porcentaje de escritura, en este caso, un 50 % de lectura y un 50 % de
escritura.
Resultado elección del número de clientes
En la figura 5.16 se presenta los resultados de la prueba. Se puede observar
como con los 50 clientes se obtiene alrededor de 1000 operaciones por segundo,
cantidad que apenas es superada por los 100 clientes. Con 50 clientes se obtienen
unos tiempos de respuesta, tanto en escritura como lectura, notablemente inferiores
que con otros casos de prueba.
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.16: Resultados número de clientes base de datos pequeña
alta escritura
5.2. Benchmark de Splice Machine 39
Resultados benchmarking
Con los 50 clientes seleccionados como número de clientes óptimo en la sec-
ción anterior se han obtenido 1418 operaciones por segundo. Con estos datos po-
demos calcular los throughputs intermedios con los que se van a realizar las prue-
bas. En este caso dan lugar a un incremento de 250 ( 1006/4) y los throughputs
[250,500,750,1025].
En la figura 5.17 se presenta los resultados obtenidos con el número de clientes
obtenido en el apartado anterior y los intervalos calculados previamente.
FIGURA 5.17: Resultados con gran carga escritura base de datos pe-
queña
5.2.4. Benchmarking de la base de datos grande con alto porcentaje de
lectura
En esta sección se presenta las pruebas realizadas con una base de datos grande
pero con alto porcentaje de escritura, en este caso, un 95 % de lectura y un 5 % de
escritura.
Resultado elección del número de clientes
En la figura 5.18 se presenta los resultados de la prueba. Se puede observar
como con los 50 clientes se obtiene alrededor de 1300 operaciones por segundo,
cantidad superada con 100 clientes que llega a los 1375 operaciones por segundo.
De nuevo, se opta por realizar la prueba con los 50 clientes ya que los tiempos de
respuesta son notablemente inferiores.
40 Capítulo 5. Resultados
(A) Operaciones por segundo (B) Tiempo medio de respuesta
FIGURA 5.18: Resultados número de clientes base de datos pequeña
alta escritura
Resultados benchmarking
Con los 50 clientes seleccionados como número de clientes óptimo en la sec-
ción anterior se han obtenido 1418 operaciones por segundo. Con estos datos po-
demos calcular los throughputs intermedios con los que se van a realizar las prue-
bas. En este caso dan lugar a un incremento de 335 ( 1300/4) y los throughputs
[335,670,1005,1350].
En la figura 5.19 se presenta los resultados obtenidos con el número de clientes
obtenido en el apartado anterior y los intervalos calculados previamente.
FIGURA 5.19: Resultados con gran carga escritura base de datos pe-
queña
5.2.5. Discusión de resultados Splice Machine
En esta sección se van a discutir los resultados obtenidos en los apartados an-
teriores, haciendo hincapié en las las diferencias obtenidas entre los distintos tipos
de carga así como la influencia del tamaño de la base de datos en los tiempos obte-
nidos.
5.2. Benchmark de Splice Machine 41
El primer dato que se destaca, es que el tiempo de escritura es superior al tiem-
po de lectura. Teniendo en cuenta que HBase está optimizado para escritura, este
comportamiento implica perder el punto fuerte de HBase. Además, se observa que
cuantas más operaciones concurrentes se realizan, los tiempos aumentan hasta lle-
gar a limites inadmisibles.
Esto puede tener varias explicaciones, la primera puede ser debida a la implemen-
tación que añade un cierto overload a las operaciones y que las situaciones como
las de la prueba, con muchas operaciones muy cortas y simples no sean las ópti-
mas para este gestor. De hecho, en todas las presentaciones oficiales del producto
se hace hincapié en la lectura y en operaciones costosas, tales como operaciones de
analítica donde se involucran muchas tablas.
Otro motivo por el cual puede ocurrir que el tiempo de escritura sea considera-
blemente más alto que usando HBase, es debido a la escasa memoria de la que dis-
pone el sistema una vez instalado. En sus recomendaciones oficiales se recomienda
nodos de 64GB de ram, de la cual hay que dedicar un 25 % a la escritura. En la
configuración del cluster usado para el estudio, la memoria dedicada a la escritura
apenas llega a 1GB.
En la figura 5.20 se presenta los resultados conjuntos de escritura de las distintas
pruebas realizadas. Se puede observar como los tiempos obtenidos son similares en
situaciones con pocas peticiones por segundo, pero los tiempos aumentan de ma-
nera muy diferente cuando se llega al limite del sistema. El factor más influyente
en los tiempos de respuesta es el tamaño de la base de datos. Se puede observar
que independientemente del tipo

Continuar navegando