|ARQUITECTURA Y COMPUTACIÓN PARALELA
OCTUBRE 2018 – FEBRERO 2019
Tema: Análisis e implementación de un clúster
Primer Bimestre
Objetivos
Objetivos General
- Implementar una arquitectura para desarrollar computación
paralela mediante un clúster.
Objetivos específicos
- Aplicar los conocimientos obtenidos en el aula para el desarrollo
del proyecto
- Identificar los conceptos claves para el desarrollo del proyecto
- Diseñar un clúster con Dask Distributed para el presente
proyecto
- Demostrar los conocimientos obtenidos en computación paralela
en el desarrollo de un clúster
Introducción
Actualmente los datos son una fuente muy importante en muchos ámbitos tanto
para educación, investigación, y para las empresas es un activo muy importante,
por tal motivo es fundamental, para que éstos aporten un valor agregado y poder
tomar decisiones, que sean procesados y analizados; pero esto con el paso de
los años se ha convertido en un problema ya que el gran volumen de datos ha
sido un obstáculo, impidiendo que una sola máquina pueda almacenar y procesar
gran cantidad de datos.
Una solución a este problema es la programación paralela, que es un campo en
desarrollo continuo, que en estos últimos años a tenido mucho protagonismo en
el procesamiento de información, se ayuda de otros campos de las ciencias de la
computación para lograr su objetivo.
En este documento se detalla la implementación de cluster Dask Distibuted, es
una solución al procesamiento de grandes cantidades de datos , el cual permite
analizar altas cantidades de información en un ambiente informático distribuido
sin contar las configuraciones a nivel de infraestructura del computador.
Dask está diseñado para escalar a miles de máquinas, cada una ofrece
computación y almacenamientos locales, de tal forma que el procesamiento de
grandes volúmenes de datos, distribuidos en distintas máquinas, sea una tarea
más fácil y rápida.
1. Estado del Arte
1.1. Big Data
En el concepto de Big Data, el procesamiento se dirige hacia la gran cantidad de
datos, para almacenar los datos, se utiliza hardware de productos básicos. Otro
punto a considerar es que se aplicaría la computación distribuida, en la que sería
posible la replicación de datos. Si hay una falla, entonces los datos replicados
serán considerados y la falla en alguna máquina en el clúster no será considerada;
De hecho, se volvería a ejecutar en algún otro nodo. Esto asegurará un flujo de
operación sin problemas y no afectará el proceso general.
Las empresas suelen tener bases de datos estructuradas en las que se
implementaría el procesamiento de datos. Los datos fueron limitados y se
mantuvieron de manera sistemática utilizando sistemas de gestión de bases de
datos.
Cuando Google desarrolló su motor de búsqueda, se combinó con la tarea de
mantener una gran cantidad de datos, ya que las páginas web solían actualizarse
regularmente. Se tenía que almacenar mucha información en la base de datos, y
la mayoría de los datos estaba en un formato no estructurado. Los registros de
video, audio y web resultaron en una enorme cantidad de datos.
1.1.1. Características de Big Data
Las características de Big Data (como se cita en Camargo-Vega, Camargo-
Ortega, & Joyanes-Aguilar, 2015) son tres como se menciona a continuación:
- Volúmen:
Las empresas cada día registran un aumento significativo de sus
datos creados
tanto por personas como por máquinas.
- Variedad:
ésta va muy de la mano con el volúmen, pues existen muchas
formas de
representar los datos, como pueden ser estructurados y no
estructurados.
- Velocidad:
esta característica hace referencia a la velocidad en la que se
crean los datos.
1.2. Dask y su Arquitectura
1.2.1. Dask
Dask fue desarrollado para escalar más allá de una sola máquina tanto bibliotecas
computacionales como Numpy, Pandas y Scikit-Learn como una gran cantidad de
bibliotecas para visualización, cuadernos interactivos, colaboración, etc.
Trabaja con el ecosistema de Python existente para escalarlo a máquinas de
múltiples núcleos y clústeres distribuidos (DASK, s.f.).
Dask es una herramienta que ayuda a extender fácilmente las herramientas de
análisis de datos de Python a datos medianos y grandes, es decir, un conjunto de
datos que no cabe en la memoria RAM de una computadora. En muchos casos,
dask también permite acelerar el análisis mediante el uso de múltiples núcleos de
CPU. Dask puede ayudar a trabajar más eficientemente en una computadora
portátil y también puede ayudar a ampliar el análisis en HPC y plataformas en la
nube. Lo más importante es que dask es casi invisible para el usuario, lo que
significa que puede centrarse en su ciencia, en lugar de en los detalles de la
computación paralela (Key, 2017).
1.2.2. Paralelismo en Dask
Dask es una librería de python para computación paralela. Está compuesta de
dos casos de uso, mencionados a continuación(Antonio, 2016):
1. Colecciones “Big Data”: analiza conjuntos grandes de datos. Similar a las
bases de datos y bibliotecas grandes de matriz(Antonio, 2016).
2. Dynamic task scheduling: Crea tareas personalizadas las cuales
dependen unas de otras para las cargas de trabajo
personalizado(Antonio, 2016).
Los entornos de computación dask se dividen en dos categorías:
1. Paralelismo en una solo máquina con hilos o procesos: la programación
en una sola máquina de Dask aprovecha al máximo la potencia de la CP,
ya sea de una portátil o una estación de trabajo. No soporta
computacional ni conceptualmente big data (DASK, s.f.).
2. Paralelismo de clúster distribuido en múltiples nodos: La programación
de dask distributed coordina las acciones de múltiples máquinas o un
clúster (DASK, s.f.).
1.2.3. Arquitectura principal Dask Distributed
[Link] es un programador de tareas dinámico, distribuido y administrado
centralmente. El dask-scheduler proceso central coordina las acciones de varios
dask-worker procesos distribuidos en varias máquinas y las solicitudes
simultáneas de varios clientes.
Dask-Scheduler
dask-worker dask-worker dask-worker
La programación es asíncrono e impulsado por eventos, respondiendo
simultáneamente a las solicitudes de cómputo de múltiples clientes y siguiendo
el progreso de múltiples trabajadores. La naturaleza dirigida por eventos y
asíncrona lo hace flexible para manejar simultáneamente una variedad de
cargas de trabajo provenientes de múltiples usuarios al mismo tiempo, mientras
que también maneja una población de trabajadores fluidos con fallas y
adiciones. Los trabajadores se comunican entre sí para la transferencia masiva
de datos a través de TCP.
1.2.4 Web Interface Dask
Internamente, el programador realiza un seguimiento de todo el trabajo con un
entorno web, que cambia constantemente de acuerdo a las tareas que estén
ejecutando los dask-workers . Una tarea es una función de Python que opera en
objetos de Python, que puede ser el resultado de otras tareas. Este gráfico de
tareas crece a medida que los usuarios envían más cómputos, se llenan a
medida que los trabajadores completan las tareas y se reduce a medida que los
usuarios dejan o se interesan por los resultados anteriores.
1.2.3. Sistema Operativo
[Link]. Linux
Linux es un sistema operativo de libre distribución creado por Linus Torvalds,
entregado a la comunidad de software libre y desarrollado por la misma. Es uno
de los “buques insignia” dentro de la filosofía del software libre.
Este sistema operativo posee un gran volumen de desarrolladores y es muy
reconocido a nivel mundial. Realmente Linux es solo el núcleo de un sistema.
Para nombrar el sistema operativo completo se recomienda utilizar “GNU/Linux”,
aunque comúnmente se le llama simplemente “Linux”. El uso más importante
que se le suele dar a este sistema operativo es el de actuar como servidor tanto
en pequeñas redes como en corporaciones, incluyendo servidores web, de
correo electrónico, etc.
1.3. TRABAJOS RELACIONADOS
Tema Detalle
(Matthew Rocklin, 2015)La principal meta de este trabajo era
Dask:
juntar algoritmos bloqueados con una programación de tareas
computación
dinámica y consciente de la memoria para lograr un clon
paralela con
NumPy paralelo y fuera de núcleo. Se muestra cómo esto
algoritmos
extiende la escala efectiva del hardware moderno a conjuntos
bloqueados y
programación de de datos más grandes y se discute cómo estas ideas pueden
tareas aplicarse más ampliamente a otras colecciones paralelas.
Análisis paralelo El análisis de las simulaciones de computadora biomoleculares
en análisis MDA se ha convertido en un desafío porque la cantidad de datos de
utilizando la salida ahora está rutinariamente en el rango de terabyte, por
biblioteca de
ello Khoshlessan, Paraskevakos, Jha, & Beckstein, 2017
computación
evaluaron si se puede enfrentar este desafío con un enfoque
paralela Dask
de reducción de mapa paralelo con la biblioteca de
computación paralela Dask para computación basada en
gráficos de tareas junto con nuestra biblioteca MDAnalysis
Python para el análisis de simulaciones de dinámica molecular
(MD). Lo que descubrieron fue que el sistema de
almacenamiento subyacente (unidades de estado sólido,
sistemas de archivos paralelos o discos de plato giratorio
simple) puede ser un factor de rendimiento decisivo que lleva a
la ingestión de datos a convertirse en el cuello de botella
principal en el flujo de trabajo de análisis, la elección del
formato del archivo de datos puede mitigar el efecto del sistema
de almacenamiento. Aunque se pudo lograr una escalación
muy buena para nodos simples, la buena escalada en múltiples
nodos se vio obstaculizada por la aparición persistente de
"rezagados", tareas que llevan mucho más tiempo que todas
las demás tareas, y cuya causa final no se pudo determinar
completamente. En resumen, Khoshlessan, Paraskevakos,
Jha, & Beckstein, 2017 mostraron que, debido al enfoque en la
alta interoperabilidad en el sistema científico Python eco, es
sencillo implementar map-reduce con Dask en el análisis de
MDA y proporcionar un análisis en profundidad de las
consideraciones para obtener un buen rendimiento paralelo en
HPC recursos.
DaskDask & La pila Scientific Python comprende más de dos décadas de
Numba:
código probado en batalla. Aprovechando la sintaxis expresiva
bibliotecas
sencillas para de Python, los cálculos complicados se pueden describir en
optimizar el solo unas pocas líneas de código. Debido a la sencilla interfaz
código
de programa de aplicación (API) de la matriz NumPy, el
científico de
Python contenedor estándar para datos numéricos en Python, el
lenguaje ha encontrado un amplio uso tanto en la industria
como en el mundo académico.
Al ser un lenguaje interpretado, el rendimiento proviene de la
descripción de operaciones de alto nivel en Python, y de
empujar la mayor parte del trabajo hacia el código C o Fortran
rápido. Sin embargo, este modelo puede descomponerse en
forma de complejidad de cálculo o escalas de tamaño de datos.
A medida que aumenta la complejidad, es posible que los
cálculos no puedan expresarse mediante operaciones de alto
nivel y que el usuario deba escribir bucles lentos en Python.
A medida que aumenta el tamaño de los datos, aumenta la
necesidad de paralelismo de datos, lo que se ve obstaculizado
por una pila de un solo hilo históricamente. El número de
usuarios que confían en estos paquetes hace que una
reescritura sea imposible. En su lugar, proponemos
herramientas de software para mejorar el rendimiento sin
requerir una reescritura completa. Aquí discutimos dos
soluciones propuestas para estos problemas. Numba [3] es un
compilador justo a tiempo (JIT) para un subconjunto del
lenguaje Python, que permite que el código numérico de Python
se compile en un código de máquina rápido. Dask [4] es un
sistema flexible para ejecutar cálculos paralelos en máquinas
individuales y clústeres. Ambos están diseñados con API
simples para hacer que el rendimiento mejorado sea accesible
para los usuarios que pueden no tener una formación en
informática clásica(Crist, 2016).
Un óptimo Este documento presenta un algoritmo de selección externa de
algoritmo de muestreo óptimo (SES) para seleccionar el elemento más
selección
pequeño en el k-ésimo en conjuntos de datos grandes para el
externa y su
aplicación en modelo de memoria de dos niveles. Sobre la base del algoritmo
internet. SES, también se proponen dos algoritmos SES / DASK (clave
de clasificación asignada dinámica) y SES / FASK (clave de
clasificación asignada fija) que se aplican al problema de
selección mundial en el entorno de Internet. Utilizamos el
esquema de información de muestreo para formar un algoritmo
elegante y simple para reducir el número de E / S de disco.
Especialmente, nuestro algoritmo es más eficiente para las
selecciones múltiples (Leu, Chiou, Tsai, & Tang, 2001).
nbodykit: Un kit Presentamos nbodykit, un conjunto de herramientas Python
de herramientas masivamente paralelo de código abierto para simulaciones de
de Python para cosmología y análisis de datos desarrollado para máquinas de
simulaciones de
computación de alto rendimiento. Discutimos los desafíos
cosmología y
encontrados al diseñar software paralelo y escalable en Python
análisis de datos
que aún explota las herramientas interactivas únicas
en sistemas
proporcionadas por la pila de Python. Utilizando la biblioteca
paralelos de HPC
mpi4py, nbodykit implementa un conjunto de algoritmos
canónicos totalmente paralelos en el campo de la cosmología
de estructuras a gran escala y también incluye un conjunto de
contenedores de datos distribuidos, aislados de los algoritmos
mismos. Utilizamos la biblioteca dask para proporcionar un
método sencillo para que los usuarios manipulen los datos sin
preocuparse por los costos de las operaciones de IO paralelas.
Aprovechamos la legibilidad de Python como lenguaje
interpretado al implementar nbodykit en Python puro, a la vez
que garantiza un alto rendimiento al confiar en bibliotecas
compiladas externas, optimizadas para tareas específicas.
Demostramos la facilidad de uso y las capacidades de
rendimiento de nbodykit con varios escenarios reales en el
campo de la cosmología (Hand & Feng, 2017).
2. Implementación del Clúster con la herramienta
seleccionada:
1.1. Estudio a nivel de Hardware, Software y Red
1.1.1. Descripción de Hardware
En esta sección se describe el hardware a utilizar para la configuración del clúster de Dask de
varios nodos en un entorno distribuido.
El ambiente del clúster Dask utiliza un dask-scheduler y tres dask-workers
.Las máquinas que se utilizarán tienen las siguientes especificaciones:
- Dask-scheduler
- Architecture: amd64
- Core: i7
- RAM: 8GB
- Disco: 450GB
- Dask-worker 1
- Architecture: i386
- Core: i7
- RAM: 8GB
- Disco:
- Dask-worker 2
- Architecture: i386
- Core: i5
- RAM: 8GB
- Disco:
- Dask-worker 3
- Architecture: amd64
- Core: i7
- RAM: 16GB
- Disco: 150GB
1.1.2. Descripción de Software (SO, requerimientos para la herramienta,
herramienta de monitoreo)
- SO
SO: Linux
Nodo maestro
- Debian 9.6
Nodo esclavo 1, 2
- Ubuntu 16.04
Nodo esclavo 3
- Ubuntu 18.04
- Requerimientos
- Versión de Dask: dask distributed Revision 8fd95ede.
- Version Python : Python 3
- Versión de gestionador de paquetes en Python : Pip 3 version 18.1
- Librerías para el análisis de datos: pandas , numpy, bokeh
- Entorno de ejecución: ipython, jupyter notebook
- Herramienta de monitoreo
- Nmap
- Htop
- dask-interface
1.1.3. Descripción de Red (topología, direccionamiento clase de IP, Diseño
Lógico [Packet Tracer])
Figura 1. Topología de red.
PACKET TRACER
Figura 2. Esquema de conexión en Packet Tracer.
Figura 3. Envío de archivos desde dask-scheduler.
Figura 4. Recibo de archivos por parte del dask-worker.
Figura 5. Comunicación exitosa entre los nodos.
1.2. Implementación de la herramienta
1.2.1. Requerimientos de instalación
- Sistema Linux Nativo
- Python 3
- Virtualenv
1.2.2. Instalación de la herramienta
1. Ingresar a la Terminal
2. Crea el entorno virtual con python 3
virtualenv -p python3 entorno-python3
3. Ingresar el entorno
source ~/entorno-python3/bin/activate
4. Instalar el gestionador de paquete de python 3
sudo apt install python3-pip
5. Instalar la siguientes librerías
pip3 install numpy pandas matplotlib ipython jupyter
6. Instalar dask-distributed a cada maquina
pip install dask distributed --upgrade
1.2.3. Pruebas de instalación
1. Ingresar a la terminal del nodo maestro, activar el entorno virtual y escribimos
lo siguiente:
dask-scheduler
Nos saldrá lo siguiente
2. Los demás nodos esclavos nos conectamos al nodo maestro con el siguiente
comando.
dask-worker [Link]:8786
3. Abrimos la interfaz de administración escribiendo en nuestro navegador la
dirección ip y el puerto, en este caso [Link]:8787 (para abrir la
interfaz web es siempre por el puerto 8787). Tenemos lo siguiente:
Y listo dask esta configurado y listo para funcionar.
7. Implementación de la Aplicación Paralela
7.1. Tema, Problemática y descripción funcionamiento de la Aplicación
Python proporciona estructuras de datos rápidas, flexibles y expresivas
diseñadas para hacer que el trabajo con datos "relacionales" o "etiquetados"
sea fácil e intuitivo.
Pretende ser el elemento fundamental de alto nivel para realizar análisis de
datos prácticos y del mundo real en Python. Además, tiene el objetivo más
amplio de convertirse en la herramienta de análisis / manipulación de datos de
código abierto más potente y flexible disponible en cualquier idioma . Ya está en
camino hacia esta meta.
Tema: Conocer estadísticas sobre carreras que realizan los taxistas en NY
Problemática: Cada vez es mayor el número de personas que hacen uso de un
taxi para transportarse, y en numerosas ocasiones los servicios brindados por
los taxistas no satisfacen al cliente, como por ejemplo en la forma de pago.
Por este motivo se pretende, analizar y presentar tendencias sobre algunos
parámetros de las carreras realizadas durante los primeros seis mese del año
2018 en New York, tomando en cuenta la forma de pago, los horarios con
mayor concurrencia y las distancias de las carreras realizadas.
7.2. Algoritmo Secuencial
La estructura que siguen los algoritmos secuenciales es en la que una acción
sigue a otra en secuencia, es decir que la salida de una tarea es la entrada de
la siguiente y así sucesivamente hasta terminar el proceso.
El algoritmo DataFrame en pandas es una estructura de datos que hace que la
manipulación de los datos se más fácil, como la selección o sustitución de
columnas, y los índices para la remodelación de los datos.
El procesos de manipulación de datos en DataFrame pandas se realiza de
manera secuencial, lo que produce que el tiempo sea mayor cuando se tiene un
conjunto de datos grande.
7.3. Algoritmo Paralelo
Dask DataFrame es un gran DataFrame paralelo que está compuesto de muchos
DataFrame de pandas más pequeños que se encuentran divididos a los largo del
índice.
Con Dask DataFrame los datos pueden estar en varias máquinas diferentes en
un clúster. Lo que con Dask DataFrame se hace en una operación en pandas
DataFrame desencadena muchas operaciones.
A continuación se presenta el diseño de DataFrame tanto en pandas como en
Dask.
Algunas características de de dask Distibuted que se pueden destacar son:
- Se utiliza en situaciones en las que que pandas falla ya sea por el tamaño
de los datos o por la velocidad de cálculo.
- Acelera los cálculos a través del uso de varios núcleos.
- Aunque el conjunto de datos sean muy grandes y no caben en la memoria
se puede manipularlos.
Algunas operaciones que se pueden realizar en Dask más rápido que en pandas
son:
- Selecciones de modo fila
- Operaciones elemento a elemento
- Loc
- Agregaciones comunes
- Groupby-agregado
- Groupby- aplicado sobre el índice.
- Unir tramas de datos
- Promedio
7.3.1. Descripción de las funciones y librerías paralela que se utiliza
Librerias
- NumPy: agrega mayor soporte para vectores y matrices, constituyendo
una biblioteca de funciones matemáticas de alto nivel para operar con esos
vectores o matrices
- Pandas: ofrece estructuras de datos y operaciones para manipular tablas
numéricas y series temporales
Funciones
Desafortunadamente, actualmente Dask no ofrece funciones adicionales
sobre Python para evitar la mutación de esta manera. Dask solo ejecuta
las funciones de Python, y esas funciones de Python pueden hacer lo que
quieran.
7.3.2. Descripción de funcionamiento de la aplicación
Permite distribuir las tareas en los diferentes nodos que están
conectados al maestro, para que cada uno realice ciertas actividades,
ayudando a agilizar la ejecución de los procesos.
La aplicación de este algoritmo permite leer dataFrames de manera más
eficiente y permitiendo que el agrupamiento múltiple sea más rápido
usando Dask DataFrame.
Al usar Dask DataFrame permite trabajar con menor dependencia a la
infraestructura actual de hardware, como a demás que un algoritmo
secuencial haría el trabajo muy por debajo de lo que se puede hacer con
Dask.
Para poder hacer el análisis de los datos se obtuvieron archivos csv de
los registros de taxis en New York. Se probó primero con Pandas
DataFrame para lo cual se fue insertando los archivos csv, que debía
analizar, uno por uno. En cambio para trabajar con Dask DataFrame se
colocó todos los csv en un solo espacio, envolviendo lógicamente los
diferentes archivos en un DataFrame lógico, y se pasó todo para que
sea analizado. Como Dask es un subconjunto de Pandas hacer las
pruebas en ambos no fue muy difícil ya que se podía cambiar de Pandas
a Dask sin hacer muchas modificaciones al código.
8. Integración del Cluster y la Aplicación [9 de enero 2019]
8.1. Plan de Pruebas [Método o medio de plan de pruebas]
Para las pruebas se hará uso de jupyter, el cual es un entorno de trabajo open
source. Soporta alrededor de 40 lenguajes como R, Python, Scala, Ruby, Go
entre otros.
Para trabajar con Jupyter, éste ofrece una shell interactiva vía web, esta shell
se organiza por bloques, donde cada bloque puede tener texto arbitrario.
Permite escribir código en cada celda e ir ejecutándolo paso a paso o todo,
presentando los resultados parciales.
En la imagen se muestra la arquitectura de Jupyter
8.2. Comparación mediante los criterios de evaluación de las versión
secuencial y paralela (tiempo de ejecución, aceleración, eficiencia, y coste)
en función del número de procesos y de la variación de los datos.
En cuanto al tiempo se puede demostrar que con Pandas las operaciones de
uniones es más complicado, se debe ir indicando uno por uno los csv que se
van a analizar. MIentras que con Dask se envía el enlace donde se almacenan
todos los csv para poder manipularlo todo el conjunto de datos.
La velocidad obtenida al ejecutar Pandas DataFrame es 223.3ms
Cuando se usa Dask DataFrame la velocidad de la ejecución es de 135ms
Lo que significa una aceleración de 16,540
Con un coste de 1485 , una eficiencia de 1,5037
Lo que nos demuestra que usar Dask DataFrame es muy provechoso cuando
se usa conjuntos de datos de gran tamaño, ya que la rapidez de ejecución de
del algoritmo, porcentaje de tiempo de uso de los procesadores permite reducir
tiempo, y recursos que al utilizar Pandas DataFrame.
8.3. Gráficas de la comparación de las dos versiones
Resultados obtenidos al hacer análisis de datos de taxis en New York.
En esta gráfica nos muestra que la hora del día donde las personas hacen mayor uso
de taxis es a partir de las 4 am, esto debido a que las personas salen a sus trabajos y
escuelas.
En esta otra imagen podemos observar los resultados obtenidos de todos los
meses, presentando en qué meses el uso de taxi es más frecuente, dando como
resultado que entre julio y agosto es mayor la frecuencia, esto debido a que en
el mes de julio se celebra el dia de la independencia de Estados Unidos y el
porcentaje de turistas y desplazamientos de habitantes locales aumenta
significativamente.
Para obtener estos resultados se trabajó con DataFrame de Pandas y Dask, a
continuación se presenta gráficas comparativas entre Pandas y Dask.
8.4. Análisis del rendimiento
Con los presentes resultados podemos determinar que dask, tiene un mejor
rendimiento en con 3 o mas maquinas, como además de que dependiendo del número
de máquinas, dask puede hacer el trabajo de mejor manera. En adición se puede
cambiar la configuraciones para que dask funcione de mejor manera.
Otro punto es que pusimos todo el dataset en memoria operativa para que todas las
máquinas tengan un mejor rendimiento, y tengan acceso a los datos.
El rendimiento que se pudo determinar esta un poco por encima la media, ya que nos
permitió leer un dataset de 5GB en menos de 2min, con una coneccion wifi inestable,
esto a un lado que cada máquina tenía su particularidad
8. Conclusiones y Recomendaciones
Recomendaciones
- Se recomienda realizar las operaciones con DASK ya que ayuda a
acelerar los procedimientos ahorrando así tiempo y logrando todas las
actividades de forma óptima.
Conclusiones
- Dask permite realizar las operaciones de una forma más eficiente.
- Dask ayuda a dividir las tareas en unas más pequeñas para así lograr
realizar las operaciones en el menor tiempo posible.
10. Bibliografía
Shetty, M. M., Manjaiah, D. H., & Hemdan, E. E.-D. (2019). Policy-Based Access Control
Scheme for Securing Hadoop Ecosystem. Advances in Intelligent Systems and
Computing, 839, 167–176. [Link]
Khoshlessan, M., Paraskevakos, I., Jha, S., & Beckstein, O. (2017). Parallel analysis in
MDAnalysis using the Dask parallel computing library. In Proceedings of the 16th
DASK. (s.f.). [Link]. Obtenido de [Link]
Key, R. A. (28 de 11 de 2017). github. Obtenido de
[Link]
[Link]
Crist, J. (2016). Dask amp;amp; Numba: Simple libraries for optimizing scientific python
code. In 2016 IEEE International Conference on Big Data (Big Data) (pp. 2342–2343).
[Link]
Hand, N., & Feng, Y. (2017). Nbodykit: A Python Toolkit for Cosmology Simulations and
Data Analysis on Parallel HPC Systems. In Proceedings of the 7th Workshop on
Python for High-Performance and Scientific Computing (p. 7:1--7:10). New York, NY,
USA: ACM. [Link]
Leu, F.-C., Chiou, C.-C., Tsai, Y.-T., & Tang, C. Y. (2001). An optimal external selection
algorithm and its application in the Internet. In ICC 2001. IEEE International
Conference on Communications. Conference Record (Cat. No.01CH37240) (Vol. 7,
pp. 2150–2154 vol.7). [Link]
Python in Science Conference, K. Huff, D. Lippa, D. Niederhut, and M. Pacer, Eds., Austin,
TX (pp. 64–72).
Rocklin, M. (2015). Dask: Parallel Computation with Blocked algorithms and Task Scheduling In
[Link]
Camargo-Vega, J. J., Camargo-Ortega, J. F., & Joyanes-Aguilar, L. (2015). Conociendo big data. Facultad de
Ingenier{\’\i}a, 24(38), 63–77.
Antonio, J. L. (25 de 10 de 2016). Obtenido de [Link]
67615006