9 research outputs found

    Elastic, Interoperable and Container-based Cloud Infrastructures for High Performance Computing

    Full text link
    Tesis por compendio[ES] Las aplicaciones cient铆ficas implican generalmente una carga computacional variable y no predecible a la que las instituciones deben hacer frente variando din谩micamente la asignaci贸n de recursos en funci贸n de las distintas necesidades computacionales. Las aplicaciones cient铆ficas pueden necesitar grandes requisitos. Por ejemplo, una gran cantidad de recursos computacionales para el procesado de numerosos trabajos independientes (High Throughput Computing o HTC) o recursos de alto rendimiento para la resoluci贸n de un problema individual (High Performance Computing o HPC). Los recursos computacionales necesarios en este tipo de aplicaciones suelen acarrear un coste muy alto que puede exceder la disponibilidad de los recursos de la instituci贸n o estos pueden no adaptarse correctamente a las necesidades de las aplicaciones cient铆ficas, especialmente en el caso de infraestructuras preparadas para la ejecuci贸n de aplicaciones de HPC. De hecho, es posible que las diferentes partes de una aplicaci贸n necesiten distintos tipos de recursos computacionales. Actualmente las plataformas de servicios en la nube se han convertido en una soluci贸n eficiente para satisfacer la demanda de las aplicaciones HTC, ya que proporcionan un abanico de recursos computacionales accesibles bajo demanda. Por esta raz贸n, se ha producido un incremento en la cantidad de clouds h铆bridos, los cuales son una combinaci贸n de infraestructuras alojadas en servicios en la nube y en las propias instituciones (on-premise). Dado que las aplicaciones pueden ser procesadas en distintas infraestructuras, actualmente la portabilidad de las aplicaciones se ha convertido en un aspecto clave. Probablemente, las tecnolog铆as de contenedores son la tecnolog铆a m谩s popular para la entrega de aplicaciones gracias a que permiten reproducibilidad, trazabilidad, versionado, aislamiento y portabilidad. El objetivo de la tesis es proporcionar una arquitectura y una serie de servicios para proveer infraestructuras el谩sticas h铆bridas de procesamiento que puedan dar respuesta a las diferentes cargas de trabajo. Para ello, se ha considerado la utilizaci贸n de elasticidad vertical y horizontal desarrollando una prueba de concepto para proporcionar elasticidad vertical y se ha dise帽ado una arquitectura cloud el谩stica de procesamiento de An谩lisis de Datos. Despu茅s, se ha trabajo en una arquitectura cloud de recursos heterog茅neos de procesamiento de im谩genes m茅dicas que proporciona distintas colas de procesamiento para trabajos con diferentes requisitos. Esta arquitectura ha estado enmarcada en una colaboraci贸n con la empresa QUIBIM. En la 煤ltima parte de la tesis, se ha evolucionado esta arquitectura para dise帽ar e implementar un cloud el谩stico, multi-site y multi-tenant para el procesamiento de im谩genes m茅dicas en el marco del proyecto europeo PRIMAGE. Esta arquitectura utiliza un almacenamiento distribuido integrando servicios externos para la autenticaci贸n y la autorizaci贸n basados en OpenID Connect (OIDC). Para ello, se ha desarrollado la herramienta kube-authorizer que, de manera automatizada y a partir de la informaci贸n obtenida en el proceso de autenticaci贸n, proporciona el control de acceso a los recursos de la infraestructura de procesamiento mediante la creaci贸n de las pol铆ticas y roles. Finalmente, se ha desarrollado otra herramienta, hpc-connector, que permite la integraci贸n de infraestructuras de procesamiento HPC en infraestructuras cloud sin necesitar realizar cambios en la infraestructura HPC ni en la arquitectura cloud. Cabe destacar que, durante la realizaci贸n de esta tesis, se han utilizado distintas tecnolog铆as de gesti贸n de trabajos y de contenedores de c贸digo abierto, se han desarrollado herramientas y componentes de c贸digo abierto y se han implementado recetas para la configuraci贸n automatizada de las distintas arquitecturas dise帽adas desde la perspectiva DevOps.[CA] Les aplicacions cient铆fiques impliquen generalment una c脿rrega computacional variable i no predictible a qu猫 les institucions han de fer front variant din脿micament l'assignaci贸 de recursos en funci贸 de les diferents necessitats computacionals. Les aplicacions cient铆fiques poden necessitar grans requisits. Per exemple, una gran quantitat de recursos computacionals per al processament de nombrosos treballs independents (High Throughput Computing o HTC) o recursos d'alt rendiment per a la resoluci贸 d'un problema individual (High Performance Computing o HPC). Els recursos computacionals necessaris en aquest tipus d'aplicacions solen comportar un cost molt elevat que pot excedir la disponibilitat dels recursos de la instituci贸 o aquests poden no adaptar-se correctament a les necessitats de les aplicacions cient铆fiques, especialment en el cas d'infraestructures preparades per a l'avaluaci贸 d'aplicacions d'HPC. De fet, 茅s possible que les diferents parts d'una aplicaci贸 necessiten diferents tipus de recursos computacionals. Actualment les plataformes de servicis al n煤vol han esdevingut una soluci贸 eficient per satisfer la demanda de les aplicacions HTC, ja que proporcionen un ventall de recursos computacionals accessibles a demanda. Per aquest motiu, s'ha produ茂t un increment de la quantitat de clouds h铆brids, els quals s贸n una combinaci贸 d'infraestructures allotjades a servicis en el n煤vol i a les mateixes institucions (on-premise). Donat que les aplicacions poden ser processades en diferents infraestructures, actualment la portabilitat de les aplicacions s'ha convertit en un aspecte clau. Probablement, les tecnologies de contenidors s贸n la tecnologia m茅s popular per a l'entrega d'aplicacions gr脿cies al fet que permeten reproductibilitat, tra莽abilitat, versionat, a茂llament i portabilitat. L'objectiu de la tesi 茅s proporcionar una arquitectura i una s猫rie de servicis per proveir infraestructures el脿stiques h铆brides de processament que puguen donar resposta a les diferents c脿rregues de treball. Per a aix貌, s'ha considerat la utilitzaci贸 d'elasticitat vertical i horitzontal desenvolupant una prova de concepte per proporcionar elasticitat vertical i s'ha dissenyat una arquitectura cloud el脿stica de processament d'An脿lisi de Dades. Despr茅s, s'ha treballat en una arquitectura cloud de recursos heterogenis de processament d'imatges m猫diques que proporciona distintes cues de processament per a treballs amb diferents requisits. Aquesta arquitectura ha estat emmarcada en una col路laboraci贸 amb l'empresa QUIBIM. En l'煤ltima part de la tesi, s'ha evolucionat aquesta arquitectura per dissenyar i implementar un cloud el脿stic, multi-site i multi-tenant per al processament d'imatges m猫diques en el marc del projecte europeu PRIMAGE. Aquesta arquitectura utilitza un emmagatzemament integrant servicis externs per a l'autenticaci贸 i autoritzaci贸 basats en OpenID Connect (OIDC). Per a aix貌, s'ha desenvolupat la ferramenta kube-authorizer que, de manera automatitzada i a partir de la informaci贸 obtinguda en el proc茅s d'autenticaci贸, proporciona el control d'acc茅s als recursos de la infraestructura de processament mitjan莽ant la creaci贸 de les pol铆tiques i rols. Finalment, s'ha desenvolupat una altra ferramenta, hpc-connector, que permet la integraci贸 d'infraestructures de processament HPC en infraestructures cloud sense necessitat de realitzar canvis en la infraestructura HPC ni en l'arquitectura cloud. Es pot destacar que, durant la realitzaci贸 d'aquesta tesi, s'han utilitzat diferents tecnologies de gesti贸 de treballs i de contenidors de codi obert, s'han desenvolupat ferramentes i components de codi obert, i s'han implementat receptes per a la configuraci贸 automatitzada de les distintes arquitectures dissenyades des de la perspectiva DevOps.[EN] Scientific applications generally imply a variable and an unpredictable computational workload that institutions must address by dynamically adjusting the allocation of resources to their different computational needs. Scientific applications could require a high capacity, e.g. the concurrent usage of computational resources for processing several independent jobs (High Throughput Computing or HTC) or a high capability by means of using high-performance resources for solving complex problems (High Performance Computing or HPC). The computational resources required in this type of applications usually have a very high cost that may exceed the availability of the institution's resources or they are may not be successfully adapted to the scientific applications, especially in the case of infrastructures prepared for the execution of HPC applications. Indeed, it is possible that the different parts that compose an application require different type of computational resources. Nowadays, cloud service platforms have become an efficient solution to meet the need of HTC applications as they provide a wide range of computing resources accessible on demand. For this reason, the number of hybrid computational infrastructures has increased during the last years. The hybrid computation infrastructures are the combination of infrastructures hosted in cloud platforms and the computation resources hosted in the institutions, which are named on-premise infrastructures. As scientific applications can be processed on different infrastructures, the application delivery has become a key issue. Nowadays, containers are probably the most popular technology for application delivery as they ease reproducibility, traceability, versioning, isolation, and portability. The main objective of this thesis is to provide an architecture and a set of services to build up hybrid processing infrastructures that fit the need of different workloads. Hence, the thesis considered aspects such as elasticity and federation. The use of vertical and horizontal elasticity by developing a proof of concept to provide vertical elasticity on top of an elastic cloud architecture for data analytics. Afterwards, an elastic cloud architecture comprising heterogeneous computational resources has been implemented for medical imaging processing using multiple processing queues for jobs with different requirements. The development of this architecture has been framed in a collaboration with a company called QUIBIM. In the last part of the thesis, the previous work has been evolved to design and implement an elastic, multi-site and multi-tenant cloud architecture for medical image processing has been designed in the framework of a European project PRIMAGE. This architecture uses a storage integrating external services for the authentication and authorization based on OpenID Connect (OIDC). The tool kube-authorizer has been developed to provide access control to the resources of the processing infrastructure in an automatic way from the information obtained in the authentication process, by creating policies and roles. Finally, another tool, hpc-connector, has been developed to enable the integration of HPC processing infrastructures into cloud infrastructures without requiring modifications in both infrastructures, cloud and HPC. It should be noted that, during the realization of this thesis, different contributions to open source container and job management technologies have been performed by developing open source tools and components and configuration recipes for the automated configuration of the different architectures designed from the DevOps perspective. The results obtained support the feasibility of the vertical elasticity combined with the horizontal elasticity to implement QoS policies based on a deadline, as well as the feasibility of the federated authentication model to combine public and on-premise clouds.L贸pez Huguet, S. (2021). Elastic, Interoperable and Container-based Cloud Infrastructures for High Performance Computing [Tesis doctoral]. Universitat Polit猫cnica de Val猫ncia. https://doi.org/10.4995/Thesis/10251/172327TESISCompendi

    A Self-managed Mesos Cluster for Data Analytics with QoS Guarantees

    Full text link
    [EN] This article describes the development of an automated configuration of a software platform for Data Analytics that supports horizontal and vertical elasticity to guarantee meeting a specific deadline. It specifies all the components, software dependencies and configurations required to build up the cluster, and analyses the deployment times of different instances, as well as the horizontal and vertical elasticity. The approach followed builds up self-managed hybrid clusters that can deal with different workloads and network requirements. The article describes the structure of the recipes, points out to public repositories where the code is available and discusses the limitations of the approach as well as the results of several experiments.The work presented in this article has been partially funded by a research grant from the regional government of the Comunitat Valenciana (Spain), co-funded by the European Union ERDF funds (European Regional Development Fund) of the Comunitat Valenciana 2014-2020, with reference IDIFEDER/2018/032 (High-Performance Algorithms for the Modelling, Simulation and early Detection of diseases in Personalized Medicine). The authors would also like to thank the Spanish "Ministerio de Economia, Industria y Competitividad" for the project "BigCLOE" with reference number TIN2016-79951-R.L贸pez-Huguet, S.; P茅rez-Gonz谩lez, AM.; Calatrava Arroyo, A.; Alfonso Laguna, CD.; Caballer Fern谩ndez, M.; Molt贸, G.; Blanquer Espert, I. (2019). A Self-managed Mesos Cluster for Data Analytics with QoS Guarantees. Future Generation Computer Systems. 96:449-461. https://doi.org/10.1016/j.future.2019.02.047S4494619

    Vertical Elasticity on Marathon and Chronos Mesos frameworks

    Full text link
    [EN] Marathon and Chronos are two popular Mesos frameworks that are widely used for deploying fault-tolerant services and periodic batch jobs. Marathon and Chronos provide by design mechanisms for horizontal elasticity, scaling up and down the number of job and service instances. Horizontal elasticity is appropriate when the problems that are solved are inherently parallel. However, when the problem cannot benefit from an increase of the amount of resources, vertical elasticity must be considered. This work implements on top of Marathon and Chronos Mesos frameworks, a mechanism to vary the resources associated to an executor dynamically, according to its progress and considering specific Quality of Service (QoS). The mechanism developed provides a wrapper executable and a service that takes the decision of increasing or decreasing the resources allocated to different Chronos iterations or a long-living Marathon application. The mechanism makes use of checkpointing techniques to preserve the execution of Marathon applications and leverages OpenStack Monasca for the monitoring. \footnote{The work in this article has been funded by projects BIGCLOE and EUBra-BIGSEA, BIGLOE is funded by the Spanish ``Ministerio de Econom\'ia, Industria y Competitividad" with reference number TIN2016-79951-R and EUBra-BIGSEA is funded jointly by the European Commission under the Cooperation Programme, Horizon 2020 grant agreement No 690116 and the Brazilian Minist茅rio de Ci锚ncia, Tecnologia e Inova莽茫o (MCTI).The work in this article has been funded by projects BIGCLOE and EUBra BIGSEA, BIGLOE is funded by the Spanish "Ministerio de Economia, Industria y Competitividad" with reference number TIN2016-79951-R and EUBra-BIGSEA is funded jointly by the European Commission under the Cooperation Programme, Horizon 2020 grant agreement No 690116 and the Brazilian Ministerio de Ciencia, Tecnologia e Inovacao (MCTI).L贸pez-Huguet, S.; Natanael, I.; Brito, A.; Blanquer Espert, I. (2019). Vertical Elasticity on Marathon and Chronos Mesos frameworks. Journal of Parallel and Distributed Computing. 133:179-192. https://doi.org/10.1016/j.jpdc.2019.01.002S17919213

    Container-based Virtual Elastic Clusters

    Full text link
    [EN] eScience demands large-scale computing clusters to support the efficient execution of resource-intensive scientific applications. Virtual Machines (VMs) have introduced the ability to provide customizable execution environments, at the expense of performance loss for applications. However, in recent years, containers have emerged as a light-weight virtualization technology compared to VMs. Indeed, the usage of containers for virtual clusters allows better performance for the applications and fast deployment of additional working nodes, for enhanced elasticity. This paper focuses on the deployment, configuration and management of Virtual Elastic computer Clusters (VEC) dedicated to process scientific workloads. The nodes of the scientific cluster are hosted in containers running on bare-metal machines. The opensource tool Elastic Cluster for Docker (EC4Docker) is introduced, integrated with Docker Swarm to create auto-scaled virtual computer clusters of containers across distributed deployments. We also discuss the benefits and limitations of this solution and analyse the performance of the developed tools under a real scenario by means of a scientific use case that demonstrates the feasibility of the proposed approach.This work has been developed under the support of the program "Ayudas para la contratacion de personal investigador en formacion de catheter predoctoral, programa VALi+d", grant number ACIF/2013/003, from the Conselleria d'Educacio of the Generalitat Valenciana. The authors wish to thank the financial support received form The Spanish Ministry of Economy and Competitiveness to develop the project "CLUVIEM", with reference TIN2013-44390-R.Alfonso Laguna, CD.; Calatrava Arroyo, A.; Molt贸, G. (2017). Container-based Virtual Elastic Clusters. Journal of Systems and Software. 127:1-11. https://doi.org/10.1016/j.jss.2017.01.007S11112

    Programming models to support data science workflows

    Get PDF
    Data Science workflows have become a must to progress in many scientific areas such as life, health, and earth sciences. In contrast to traditional HPC workflows, they are more heterogeneous; combining binary executions, MPI simulations, multi-threaded applications, custom analysis (possibly written in Java, Python, C/C++ or R), and real-time processing. Furthermore, in the past, field experts were capable of programming and running small simulations. However, nowadays, simulations requiring hundreds or thousands of cores are widely used and, to this point, efficiently programming them becomes a challenge even for computer sciences. Thus, programming languages and models make a considerable effort to ease the programmability while maintaining acceptable performance. This thesis contributes to the adaptation of High-Performance frameworks to support the needs and challenges of Data Science workflows by extending COMPSs, a mature, general-purpose, task-based, distributed programming model. First, we enhance our prototype to orchestrate different frameworks inside a single programming model so that non-expert users can build complex workflows where some steps require highly optimised state of the art frameworks. This extension includes the @binary, @OmpSs, @MPI, @COMPSs, and @MultiNode annotations for both Java and Python workflows. Second, we integrate container technologies to enable developers to easily port, distribute, and scale their applications to distributed computing platforms. This combination provides a straightforward methodology to parallelise applications from sequential codes along with efficient image management and application deployment that ease the packaging and distribution of applications. We distinguish between static, HPC, and dynamic container management and provide representative use cases for each scenario using Docker, Singularity, and Mesos. Third, we design, implement and integrate AutoParallel, a Python module to automatically find an appropriate task-based parallelisation of affine loop nests and execute them in parallel in a distributed computing infrastructure. It is based on sequential programming and requires one single annotation (the @parallel Python decorator) so that anyone with intermediate-level programming skills can scale up an application to hundreds of cores. Finally, we propose a way to extend task-based management systems to support continuous input and output data to enable the combination of task-based workflows and dataflows (Hybrid Workflows) using one single programming model. Hence, developers can build complex Data Science workflows with different approaches depending on the requirements without the effort of combining several frameworks at the same time. Also, to illustrate the capabilities of Hybrid Workflows, we have built a Distributed Stream Library that can be easily integrated with existing task-based frameworks to provide support for dataflows. The library provides a homogeneous, generic, and simple representation of object and file streams in both Java and Python; enabling complex workflows to handle any data type without dealing directly with the streaming back-end.Els fluxos de treball de Data Science s鈥檋an convertit en una necessitat per progressar en moltes 脿rees cient铆fiques com les ci猫ncies de la vida, la salut i la terra. A difer猫ncia dels fluxos de treball tradicionals per a la CAP, els fluxos de Data Science s贸n m茅s heterogenis; combinant l鈥檈xecuci贸 de binaris, simulacions MPI, aplicacions multiproc茅s, an脿lisi personalitzats (possiblement escrits en Java, Python, C / C ++ o R) i computacions en temps real. Mentre que en el passat els experts de cada camp eren capa莽os de programar i executar petites simulacions, avui dia, aquestes simulacions representen un repte fins i tot per als experts ja que requereixen centenars o milers de nuclis. Per aquesta ra贸, els llenguatges i models de programaci贸 actuals s鈥檈sforcen considerablement en incrementar la programabilitat mantenint un rendiment acceptable. Aquesta tesi contribueix a l鈥檃daptaci贸 de models de programaci贸 per a la CAP per afrontar les necessitats i reptes dels fluxos de Data Science estenent COMPSs, un model de programaci贸 distribu茂da madur, de prop貌sit general, i basat en tasques. En primer lloc, millorem el nostre prototip per orquestrar diferent programari per a que els usuaris no experts puguin crear fluxos complexos usant un 煤nic model on alguns passos requereixin tecnologies altament optimitzades. Aquesta extensi贸 inclou les anotacions de @binary, @OmpSs, @MPI, @COMPSs, i @MultiNode per a fluxos en Java i Python. En segon lloc, integrem tecnologies de contenidors per permetre als desenvolupadors portar, distribuir i escalar f脿cilment les seves aplicacions en plataformes distribu茂des. A m茅s d鈥檜na metodologia senzilla per a paral路lelitzar aplicacions a partir de codis seq眉encials, aquesta combinaci贸 proporciona una gesti贸 d鈥檌matges i una implementaci贸 d鈥檃plicacions eficients que faciliten l鈥檈mpaquetat i la distribuci贸 d鈥檃plicacions. Distingim entre la gesti贸 de contenidors est脿tica, CAP i din脿mica i proporcionem casos d鈥櫭簊 representatius per a cada escenari amb Docker, Singularity i Mesos. En tercer lloc, dissenyem, implementem i integrem AutoParallel, un m貌dul de Python per determinar autom脿ticament la paral路lelitzaci贸 basada en tasques de nius de bucles afins i executar-los en paral路lel en una infraestructura distribu茂da. AutoParallel est脿 basat en programaci贸 seq眉encial, requereix una sola anotaci贸 (el decorador @parallel) i permet a un usuari intermig escalar una aplicaci贸 a centenars de nuclis. Finalment, proposem una forma d鈥檈stendre els sistemes basats en tasques per admetre dades d鈥檈ntrada i sortida continus; permetent aix铆 la combinaci贸 de fluxos de treball i dades (Fluxos H铆brids) en un 煤nic model. Conseq眉entment, els desenvolupadors poden crear fluxos complexos seguint diferents patrons sense l鈥檈sfor莽 de combinar diversos models al mateix temps. A m茅s, per a il路lustrar les capacitats dels Fluxos H铆brids, hem creat una biblioteca (DistroStreamLib) que s鈥檌ntegra f脿cilment amb els models basats en tasques per suportar fluxos de dades. La biblioteca proporciona una representaci贸 homog猫nia, gen猫rica i simple de seq眉猫ncies cont铆nues d鈥檕bjectes i arxius en Java i Python; permetent gestionar qualsevol tipus de dades sense tractar directament amb el back-end de streaming.Los flujos de trabajo de Data Science se han convertido en una necesidad para progresar en muchas 谩reas cient铆ficas como las ciencias de la vida, la salud y la tierra. A diferencia de los flujos de trabajo tradicionales para la CAP, los flujos de Data Science son m谩s heterog茅neos; combinando la ejecuci贸n de binarios, simulaciones MPI, aplicaciones multiproceso, an谩lisis personalizados (posiblemente escritos en Java, Python, C/C++ o R) y computaciones en tiempo real. Mientras que en el pasado los expertos de cada campo eran capaces de programar y ejecutar peque帽as simulaciones, hoy en d铆a, estas simulaciones representan un desaf铆o incluso para los expertos ya que requieren cientos o miles de n煤cleos. Por esta raz贸n, los lenguajes y modelos de programaci贸n actuales se esfuerzan considerablemente en incrementar la programabilidad manteniendo un rendimiento aceptable. Esta tesis contribuye a la adaptaci贸n de modelos de programaci贸n para la CAP para afrontar las necesidades y desaf铆os de los flujos de Data Science extendiendo COMPSs, un modelo de programaci贸n distribuida maduro, de prop贸sito general, y basado en tareas. En primer lugar, mejoramos nuestro prototipo para orquestar diferentes software para que los usuarios no expertos puedan crear flujos complejos usando un 煤nico modelo donde algunos pasos requieran tecnolog铆as altamente optimizadas. Esta extensi贸n incluye las anotaciones de @binary, @OmpSs, @MPI, @COMPSs, y @MultiNode para flujos en Java y Python. En segundo lugar, integramos tecnolog铆as de contenedores para permitir a los desarrolladores portar, distribuir y escalar f谩cilmente sus aplicaciones en plataformas distribuidas. Adem谩s de una metodolog铆a sencilla para paralelizar aplicaciones a partir de c贸digos secuenciales, esta combinaci贸n proporciona una gesti贸n de im谩genes y una implementaci贸n de aplicaciones eficientes que facilitan el empaquetado y la distribuci贸n de aplicaciones. Distinguimos entre gesti贸n de contenedores est谩tica, CAP y din谩mica y proporcionamos casos de uso representativos para cada escenario con Docker, Singularity y Mesos. En tercer lugar, dise帽amos, implementamos e integramos AutoParallel, un m贸dulo de Python para determinar autom谩ticamente la paralelizaci贸n basada en tareas de nidos de bucles afines y ejecutarlos en paralelo en una infraestructura distribuida. AutoParallel est谩 basado en programaci贸n secuencial, requiere una sola anotaci贸n (el decorador @parallel) y permite a un usuario intermedio escalar una aplicaci贸n a cientos de n煤cleos. Finalmente, proponemos una forma de extender los sistemas basados en tareas para admitir datos de entrada y salida continuos; permitiendo as铆 la combinaci贸n de flujos de trabajo y datos (Flujos H铆bridos) en un 煤nico modelo. Consecuentemente, los desarrolladores pueden crear flujos complejos siguiendo diferentes patrones sin el esfuerzo de combinar varios modelos al mismo tiempo. Adem谩s, para ilustrar las capacidades de los Flujos H铆bridos, hemos creado una biblioteca (DistroStreamLib) que se integra f谩cilmente a los modelos basados en tareas para soportar flujos de datos. La biblioteca proporciona una representaci贸n homog茅nea, gen茅rica y simple de secuencias continuas de objetos y archivos en Java y Python; permitiendo manejar cualquier tipo de datos sin tratar directamente con el back-end de streaming.Postprint (published version

    Programming models to support data science workflows

    Get PDF
    Data Science workflows have become a must to progress in many scientific areas such as life, health, and earth sciences. In contrast to traditional HPC workflows, they are more heterogeneous; combining binary executions, MPI simulations, multi-threaded applications, custom analysis (possibly written in Java, Python, C/C++ or R), and real-time processing. Furthermore, in the past, field experts were capable of programming and running small simulations. However, nowadays, simulations requiring hundreds or thousands of cores are widely used and, to this point, efficiently programming them becomes a challenge even for computer sciences. Thus, programming languages and models make a considerable effort to ease the programmability while maintaining acceptable performance. This thesis contributes to the adaptation of High-Performance frameworks to support the needs and challenges of Data Science workflows by extending COMPSs, a mature, general-purpose, task-based, distributed programming model. First, we enhance our prototype to orchestrate different frameworks inside a single programming model so that non-expert users can build complex workflows where some steps require highly optimised state of the art frameworks. This extension includes the @binary, @OmpSs, @MPI, @COMPSs, and @MultiNode annotations for both Java and Python workflows. Second, we integrate container technologies to enable developers to easily port, distribute, and scale their applications to distributed computing platforms. This combination provides a straightforward methodology to parallelise applications from sequential codes along with efficient image management and application deployment that ease the packaging and distribution of applications. We distinguish between static, HPC, and dynamic container management and provide representative use cases for each scenario using Docker, Singularity, and Mesos. Third, we design, implement and integrate AutoParallel, a Python module to automatically find an appropriate task-based parallelisation of affine loop nests and execute them in parallel in a distributed computing infrastructure. It is based on sequential programming and requires one single annotation (the @parallel Python decorator) so that anyone with intermediate-level programming skills can scale up an application to hundreds of cores. Finally, we propose a way to extend task-based management systems to support continuous input and output data to enable the combination of task-based workflows and dataflows (Hybrid Workflows) using one single programming model. Hence, developers can build complex Data Science workflows with different approaches depending on the requirements without the effort of combining several frameworks at the same time. Also, to illustrate the capabilities of Hybrid Workflows, we have built a Distributed Stream Library that can be easily integrated with existing task-based frameworks to provide support for dataflows. The library provides a homogeneous, generic, and simple representation of object and file streams in both Java and Python; enabling complex workflows to handle any data type without dealing directly with the streaming back-end.Els fluxos de treball de Data Science s鈥檋an convertit en una necessitat per progressar en moltes 脿rees cient铆fiques com les ci猫ncies de la vida, la salut i la terra. A difer猫ncia dels fluxos de treball tradicionals per a la CAP, els fluxos de Data Science s贸n m茅s heterogenis; combinant l鈥檈xecuci贸 de binaris, simulacions MPI, aplicacions multiproc茅s, an脿lisi personalitzats (possiblement escrits en Java, Python, C / C ++ o R) i computacions en temps real. Mentre que en el passat els experts de cada camp eren capa莽os de programar i executar petites simulacions, avui dia, aquestes simulacions representen un repte fins i tot per als experts ja que requereixen centenars o milers de nuclis. Per aquesta ra贸, els llenguatges i models de programaci贸 actuals s鈥檈sforcen considerablement en incrementar la programabilitat mantenint un rendiment acceptable. Aquesta tesi contribueix a l鈥檃daptaci贸 de models de programaci贸 per a la CAP per afrontar les necessitats i reptes dels fluxos de Data Science estenent COMPSs, un model de programaci贸 distribu茂da madur, de prop貌sit general, i basat en tasques. En primer lloc, millorem el nostre prototip per orquestrar diferent programari per a que els usuaris no experts puguin crear fluxos complexos usant un 煤nic model on alguns passos requereixin tecnologies altament optimitzades. Aquesta extensi贸 inclou les anotacions de @binary, @OmpSs, @MPI, @COMPSs, i @MultiNode per a fluxos en Java i Python. En segon lloc, integrem tecnologies de contenidors per permetre als desenvolupadors portar, distribuir i escalar f脿cilment les seves aplicacions en plataformes distribu茂des. A m茅s d鈥檜na metodologia senzilla per a paral路lelitzar aplicacions a partir de codis seq眉encials, aquesta combinaci贸 proporciona una gesti贸 d鈥檌matges i una implementaci贸 d鈥檃plicacions eficients que faciliten l鈥檈mpaquetat i la distribuci贸 d鈥檃plicacions. Distingim entre la gesti贸 de contenidors est脿tica, CAP i din脿mica i proporcionem casos d鈥櫭簊 representatius per a cada escenari amb Docker, Singularity i Mesos. En tercer lloc, dissenyem, implementem i integrem AutoParallel, un m貌dul de Python per determinar autom脿ticament la paral路lelitzaci贸 basada en tasques de nius de bucles afins i executar-los en paral路lel en una infraestructura distribu茂da. AutoParallel est脿 basat en programaci贸 seq眉encial, requereix una sola anotaci贸 (el decorador @parallel) i permet a un usuari intermig escalar una aplicaci贸 a centenars de nuclis. Finalment, proposem una forma d鈥檈stendre els sistemes basats en tasques per admetre dades d鈥檈ntrada i sortida continus; permetent aix铆 la combinaci贸 de fluxos de treball i dades (Fluxos H铆brids) en un 煤nic model. Conseq眉entment, els desenvolupadors poden crear fluxos complexos seguint diferents patrons sense l鈥檈sfor莽 de combinar diversos models al mateix temps. A m茅s, per a il路lustrar les capacitats dels Fluxos H铆brids, hem creat una biblioteca (DistroStreamLib) que s鈥檌ntegra f脿cilment amb els models basats en tasques per suportar fluxos de dades. La biblioteca proporciona una representaci贸 homog猫nia, gen猫rica i simple de seq眉猫ncies cont铆nues d鈥檕bjectes i arxius en Java i Python; permetent gestionar qualsevol tipus de dades sense tractar directament amb el back-end de streaming.Los flujos de trabajo de Data Science se han convertido en una necesidad para progresar en muchas 谩reas cient铆ficas como las ciencias de la vida, la salud y la tierra. A diferencia de los flujos de trabajo tradicionales para la CAP, los flujos de Data Science son m谩s heterog茅neos; combinando la ejecuci贸n de binarios, simulaciones MPI, aplicaciones multiproceso, an谩lisis personalizados (posiblemente escritos en Java, Python, C/C++ o R) y computaciones en tiempo real. Mientras que en el pasado los expertos de cada campo eran capaces de programar y ejecutar peque帽as simulaciones, hoy en d铆a, estas simulaciones representan un desaf铆o incluso para los expertos ya que requieren cientos o miles de n煤cleos. Por esta raz贸n, los lenguajes y modelos de programaci贸n actuales se esfuerzan considerablemente en incrementar la programabilidad manteniendo un rendimiento aceptable. Esta tesis contribuye a la adaptaci贸n de modelos de programaci贸n para la CAP para afrontar las necesidades y desaf铆os de los flujos de Data Science extendiendo COMPSs, un modelo de programaci贸n distribuida maduro, de prop贸sito general, y basado en tareas. En primer lugar, mejoramos nuestro prototipo para orquestar diferentes software para que los usuarios no expertos puedan crear flujos complejos usando un 煤nico modelo donde algunos pasos requieran tecnolog铆as altamente optimizadas. Esta extensi贸n incluye las anotaciones de @binary, @OmpSs, @MPI, @COMPSs, y @MultiNode para flujos en Java y Python. En segundo lugar, integramos tecnolog铆as de contenedores para permitir a los desarrolladores portar, distribuir y escalar f谩cilmente sus aplicaciones en plataformas distribuidas. Adem谩s de una metodolog铆a sencilla para paralelizar aplicaciones a partir de c贸digos secuenciales, esta combinaci贸n proporciona una gesti贸n de im谩genes y una implementaci贸n de aplicaciones eficientes que facilitan el empaquetado y la distribuci贸n de aplicaciones. Distinguimos entre gesti贸n de contenedores est谩tica, CAP y din谩mica y proporcionamos casos de uso representativos para cada escenario con Docker, Singularity y Mesos. En tercer lugar, dise帽amos, implementamos e integramos AutoParallel, un m贸dulo de Python para determinar autom谩ticamente la paralelizaci贸n basada en tareas de nidos de bucles afines y ejecutarlos en paralelo en una infraestructura distribuida. AutoParallel est谩 basado en programaci贸n secuencial, requiere una sola anotaci贸n (el decorador @parallel) y permite a un usuario intermedio escalar una aplicaci贸n a cientos de n煤cleos. Finalmente, proponemos una forma de extender los sistemas basados en tareas para admitir datos de entrada y salida continuos; permitiendo as铆 la combinaci贸n de flujos de trabajo y datos (Flujos H铆bridos) en un 煤nico modelo. Consecuentemente, los desarrolladores pueden crear flujos complejos siguiendo diferentes patrones sin el esfuerzo de combinar varios modelos al mismo tiempo. Adem谩s, para ilustrar las capacidades de los Flujos H铆bridos, hemos creado una biblioteca (DistroStreamLib) que se integra f谩cilmente a los modelos basados en tareas para soportar flujos de datos. La biblioteca proporciona una representaci贸n homog茅nea, gen茅rica y simple de secuencias continuas de objetos y archivos en Java y Python; permitiendo manejar cualquier tipo de datos sin tratar directamente con el back-end de streaming

    Model-driven development of data intensive applications over cloud resources

    Get PDF
    The proliferation of sensors over the last years has generated large amounts of raw data, forming data streams that need to be processed. In many cases, cloud resources are used for such processing, exploiting their flexibility, but these sensor streaming applications often need to support operational and control actions that have real-time and low-latency requirements that go beyond the cost effective and flexible solutions supported by existing cloud frameworks, such as Apache Kafka, Apache Spark Streaming, or Map-Reduce Streams. In this paper, we describe a model-driven and stepwise refinement methodological approach for streaming applications executed over clouds. The central role is assigned to a set of Petri Net models for specifying functional and non-functional requirements. They support model reuse, and a way to combine formal analysis, simulation, and approximate computation of minimal and maximal boundaries of non-functional requirements when the problem is either mathematically or computationally intractable. We show how our proposal can assist developers in their design and implementation decisions from a performance perspective. Our methodology allows to conduct performance analysis: The methodology is intended for all the engineering process stages, and we can (i) analyse how it can be mapped onto cloud resources, and (ii) obtain key performance indicators, including throughput or economic cost, so that developers are assisted in their development tasks and in their decision taking. In order to illustrate our approach, we make use of the pipelined wavefront array

    Proyecto Docente e Investigador, Trabajo Original de Investigaci贸n y Presentaci贸n de la Defensa, preparado por Germ谩n Molt贸 para concursar a la plaza de Catedr谩tico de Universidad, concurso 082/22, plaza 6708, 谩rea de Ciencia de la Computaci贸n e Inteligencia Artificial

    Full text link
    Este documento contiene el proyecto docente e investigador del candidato Germ谩n Molt贸 Mart铆nez presentado como requisito para el concurso de acceso a plazas de Cuerpos Docentes Universitarios. Concretamente, el documento se centra en el concurso para la plaza 6708 de Catedr谩tico de Universidad en el 谩rea de Ciencia de la Computaci贸n en el Departamento de Sistemas Inform谩ticos y Computaci贸n de la Universitat Polit茅cnica de Val猫ncia. La plaza est谩 adscrita a la Escola T茅cnica Superior d'Enginyeria Inform脿tica y tiene como perfil las asignaturas "Infraestructuras de Cloud P煤blico" y "Estructuras de Datos y Algoritmos".Tambi茅n se incluye el Historial Acad茅mico, Docente e Investigador, as铆 como la presentaci贸n usada durante la defensa.Germ谩n Molt贸 Mart铆nez (2022). Proyecto Docente e Investigador, Trabajo Original de Investigaci贸n y Presentaci贸n de la Defensa, preparado por Germ谩n Molt贸 para concursar a la plaza de Catedr谩tico de Universidad, concurso 082/22, plaza 6708, 谩rea de Ciencia de la Computaci贸n e Inteligencia Artificial. http://hdl.handle.net/10251/18903
    corecore