La Red de Conocimientos Pedagógicos - Currículum vitae - Traducción de Mongodb

Traducción de Mongodb

Usar la clasificación

En mi artículo anterior, expliqué brevemente los beneficios de usar la clasificación para MR, una característica poco conocida. En este caso, si se procesa una entrada desordenada, significa que el motor MR obtendrá valores ordenados aleatoriamente.

Básicamente no hay posibilidad de reducción de RAM. En su lugar, tendrá que volver a escribir los datos en el disco a través de una colección temporal y luego leer y reducir los datos secuencialmente.

Uso de subprocesos múltiples

MongoDB no utiliza subprocesos múltiples para un solo trabajo de MR, solo usa subprocesos múltiples para múltiples trabajos. Pero con las CPU de múltiples núcleos, es muy ventajoso utilizar el estilo Hadoop para trabajar en paralelo en un único servidor. Lo que debemos hacer es dividir la entrada en varios módulos y acelerar la operación de MR a través de cada módulo. Tal vez haya una manera sencilla de dividir el conjunto de datos, pero otros usan el comando splitVector (poco claro) para permitirle encontrar rápidamente los puntos de división.

Uso de múltiples bases de datos

El problema es que habrá mucha competencia de bloqueo entre múltiples subprocesos. MR no es tan desinteresado cuando se trata de bloqueos (se genera un bloqueo cada 1000 lecturas), y la tarea MR también realiza muchas escrituras para que el hilo termine esperando otro hilo. Debido a que cada base de datos MongoDB tiene un bloqueo privado, intentemos usar una base de datos de salida diferente para cada subproceso.

Usando el modo JavaScript puro

Al dividir los datos de entrada en diferentes subprocesos, sucede algo interesante: cada subproceso ahora tiene alrededor de 250000 valores diferentes para generar, en lugar de 1 millón. Esto significa que podemos usar el "modo JS puro", que se puede activar usando jsMode:true. Cuando está habilitado, MongoDB no convertirá objetos entre JS y BSON durante el procesamiento. En cambio, simplificará todos los objetos utilizando un diccionario JS interno limitado a 500.000 claves.