Ir al contenido principal

MapReduce


Sabemos que en la industria del cómputo existe una carrera por ver quién puede encontrar un mejor algoritmo, o “una mejor manera”, lo cual como ya hemos destacado anteriormente, no es una tarea nada sencilla, pues no solo implica imaginación, sino ingenio e inventiva, todo respondiendo a las necesidades que van surgiendo a lo largo del un exhaustivo ejercicio de prueba y error que ejercemos a lo largo de (probablemente) toda nuestra vida.

El caso de corporaciones gigantes que invierten grandes cantidades de presupuesto y recurso humano en la mejora sus servicios o productos, es prácticamente el ejemplo más contundente (y único) que hay. Google es una empresa que tuvo la necesidad de crecer a lo largo de décadas de inmenso trabajo e inventiva, buscando cumplir una cantidad tremenda de solicitudes a través de internet, todo haciendo el ejercicio que mencionamos anteriormente. Durante parte de este proceso desarrollaron el algoritmo de MapReduce, que permite dividir una iteración sobre una lista, lo cual no suena como mucho en este ejemplo aislado, así que me tomaré la libertad de brindar mayor contexto. Internet, la nube y muchos recursos en linea, se pueden definir de la manera más burda como “la computadora de alguien más pero interconectada” en este conjunto de computadoras interconectadas podemos encontrar información muy bien definida en texto. Sabemos que google es una compañía que ganó su reputación gracias a su motor de búsqueda, así que la aplicación en contexto de este algoritmo es prácticamente la optimización de las búsquedas en cantidades gigantescas de documentos a través de la red.

Evidentemente, dado el giro y enfoque de este blog, nos encontramos con algunas de las problemáticas que pueden haber surgido respecto a la paralelización de este algoritmo de manera que la comunicación entre cada hilo esté informada del proceso de búsqueda en otros threads de manera segura, una de las formas en las que se logró resolver este tipo de problemáticas fue que los “trabajadores” contengan una copia de los datos e iteren sobre su parte, así mismo un Máster que se encargue de dividir y asignar las tareas a los trabajadores.

Sin duda ingenio en su máximo esplendor.

Comentarios

Entradas más populares de este blog

The Free Lunch Is Over

En las últimas décadas, miles de desarrolladores e investigadores han dedicado sus vidas a mejorar la forma en la que vivimos, así como la manera en la que realizamos ; sin embargo, seguir el mismo camino hasta su última consecuencia implica un límite, pues normalmente los materiales que usamos, los teoremas que aplicamos, funcionan bajo un conjunto de circunstancias limitadas. No es una tarea sencilla buscar otra manera, en gran medida desarrollar algo "mejor", suele ir de la mano con un cambio de paradigma (nada sencillo). En la entrada pasada habábamos de FairChild, una compañía que encontró una mejor manera de desarrollar electrónica, y concluímos en cómo la hoy llamada Intel, ha encontrado algunos inconvenientes en reducir su proceso de fabricación pues a pesar de que durante las últimas décadas ha controlado el mercado del silicio, se han dado cuenta que éstamos llegando a los límites que habían previsto, aún cuando su competencia ha logrado llegar al proceso de...

The State of Parallel Programming

Anteriormente hemos hablado del gran reto de cambiar el paradigma del desarrollo del software, pues este ha logrado mantenerse al grado de que la misma comunidad que lo mantiene fue poco a poco integrando algunos elementos del paralelismo, y a pesar de esto el “mindset” que se requiere para paralelizar procesos durante el desarrollo no se encuentra normalizado. Tal como el caso de los lenguajes de programación más populares, buscando la forma de ofrecer las funciones más actuales. No obstante, al paralelizar con estas herramientas no soluciona el principal problema, de lo que el cambio de paradigma refiere. Según UBM TechWeb, necesitamos más y mejores herramientas para paralelizar tareas en especial cuando nos involucramos con código lo suficientemente complejo como para necesitar debuggeo intensivo, pues muchas veces podemos recaer en paralelización incorrecta, incluso aunque las estadísticas nos digan que un buen número de programadores están familiarizados con...

¿Sueñan los androides con ovejas eléctricas?

Siempre he pensado que el concepto de humanidad, para los seres humanos puede llegar a ser un misterio de manera muy cotidiana. A lo largo de la historia, el protagonista Rick Deckard cuestiona, la caracterización del “humano”, pues aún cuando es un género que recurre en gran medida a la fantasía, el “Cyberpunk” nos ayuda a que estas cuestiones tengan un verdadero sentido, especialmente en el mundo actual, donde lo cibernético puede quedar más a la vista como algo cotidiano. En el mundo donde la novela toma lugar, los robots son parte de la vida cotidiana, androides y animales cibernéticos conviven y ayudan a los seres humanos a realizar sus labores diarias. Dichos robots son descritos con un aspecto muy apegado a la naturaleza de lo que pretenden ser, razón por la que muchas veces suelen ser confundidos con sus contrapartes naturales; sin embargo, a pesar de que los a los androides tienen un aspecto y comportamiento humano no logran desarrollar lo que se define c...