es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo asignar tareas a varias máquinas en mi red Ethernet?

Tengo una gran tarea que se puede dividir en varias tareas pequeñas.

Por ejemplo,

Las tareas cargan datos desde un archivo de entrada, basado en esos datos, calculan algunos resultados y luego los vuelcan en un archivo de salida.

Cada tarea maneja un archivo diferente, no tendrá ningún conflicto.

Supongamos que tengo 100 tareas pequeñas, cada tarea costará 1 segundo, si las ejecuto en una sola máquina con un solo hilo, me costará 100 segundos.

Intenté el multiprocesamiento, tengo 20 núcleos, incluso usé un grupo de hilos, solo puedo reducir el tiempo a 50 segundos (y de 3 núcleos a 20 núcleos no hace ninguna diferencia), pasé mucho tiempo en el multiprocesamiento, pero no puedo mejorar. Creo que puede ser causado por falso uso compartido u otros problemas complejos que aún no puedo entender.

Entonces, estoy pensando si hay alguna forma fácil que pueda usar para asignar estos problemas a diferentes máquinas en mi red Ethernet.

En mi imaginación, las buenas formas son:

cada máquina tiene instalado el mismo software y en mi máquina de control simplemente ejecuto un comando para asignar tareas a esas máquinas. Ellas calculan y cuando terminan, la máquina de control recopila los resultados, así se acelera y se obtiene el mismo resultado que con una sola máquina.

Si tengo 10 máquinas, espero que el tiempo se pueda reducir a 10 segundos (10% de 100 segundos).

¿Hay alguna forma fácil que pueda ser utilizada por un principiante?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay varios enfoques que puedes tomar para distribuir tus tareas en múltiples máquinas. Una opción es utilizar un marco de computación en clúster como Apache Hadoop o Spark, que proporcionan herramientas para la computación distribuida y el procesamiento paralelo. Estos marcos te permiten dividir tus tareas en fragmentos más pequeños y distribuirlos en un clúster de máquinas, manejando automáticamente tareas como el equilibrio de carga y la tolerancia a fallos.

    Otra opción es utilizar un sistema de encolamiento de mensajes como RabbitMQ o Apache Kafka, que pueden ayudar a distribuir tareas entre múltiples trabajadores de una manera más flexible. Con este enfoque, configurarías una cola compartida de tareas y distribuirías mensajes a trabajadores en diferentes máquinas, los cuales procesarían los mensajes y enviarían los resultados de vuelta a una ubicación central.

    Ambos enfoques requieren cierta experiencia técnica para configurar y ajustar, pero existen muchos recursos disponibles en línea para ayudarte a empezar. También puede ser una buena idea consultar con un consultor o especialista en TI profesional para asegurarte de que tu implementación sea eficiente y segura.

Comments are closed.