¿Cómo empiezo a aprender informática distribuida?

Mi sugerencia es aprender paradigmas de programación para el procesamiento paralelo y obtener una cuenta en una máquina paralela para que pueda practicar. Comience por convertir algunos de sus programas más utilizados para funcionar en un entorno distribuido.

Dos paradigmas de programación comunes para la computación paralela son la interfaz de paso de mensajes (MPI), que a veces se denomina “lenguaje ensamblador de programación paralela” porque lo único que realmente hace es permitirle pasar mensajes entre diferentes procesos. Estos mensajes pueden ser bloqueantes o no bloqueantes. La forma en que interactúan los procesos depende completamente del programador.

El otro paradigma común es OpenMP, que son un montón de directivas de compilación que especifican cuándo y cómo vectorizar un bucle, qué subprocesos deben ejecutarse en paralelo, qué variables se comparten y cuáles son locales de subprocesos, si el programa debe “cuello de botella” en cierto punto, etc. Lo bueno de OpenMP es que estas directivas, que se especifican en la misma sintaxis que el preprocesador de C, simplemente son ignoradas por los compiladores no paralelos. Tanto MPI como OpenMP están disponibles para C y Fortran y probablemente para otros lenguajes.

Desde su perspectiva, probablemente sea mejor comenzar con este libro: “Escalando el aprendizaje automático: enfoques paralelos y distribuidos” editado por Ron Bekkerman, Mikhail Bilenko y John Langford.

Para Hadoop, un buen libro práctico es este: “Agile Data Science: Building Data Analytics Applications with Hadoop”, de Russell Jurney. Ver también “Hadoop en la práctica” de Alex Holmes.

Para EC2: “Programación de Elastic MapReduce: uso de los servicios de AWS para crear una aplicación de extremo a extremo” por Kevin Schmidt y Christopher Phillips.

Por supuesto, la parte más importante es elegir un buen proyecto que sea interesante para usted y ensuciarse las manos. Los libros anteriores le darán algunas ideas, si no tiene ninguna.

Todos los miembros que respondieron han sugerido buenos puntos.

Me parece que tienes estadísticas como fondo. Creo que otro enfoque para comprender el sistema distribuido es estudiar / comprender arquitecturas de algunos de los sistemas distribuidos ya implementados / existentes.

Una forma sería comenzar a explorar HDFS, un sistema de almacenamiento distribuido y Map Reduce un marco de procesamiento de datos distribuido.

La documentación oficial es la guía de arquitectura HDFS

Espero que esto ayude

Sistemas distribuidos