El administrador de recursos entrega la solicitud al programador de YARN cuando recibe una llamada a su método submitApplication() . El administrador de recursos inicia el proceso del maestro de aplicaciones allí cuando el programador asigna un contenedor bajo la administración del administrador de Nodes. MRAppMaster es la clase principal de la aplicación Java para la aplicación Java que domina los trabajos de MapReduce. Al crear una serie de objetos de contabilidad, inicializa el trabajo para realizar un seguimiento del progreso del trabajo. Esto se debe a que recibirá informes de finalización y recibirá el progreso de las tareas.
El siguiente paso es recuperar las divisiones de entrada. Estos se calculan en el cliente desde el sistema de archivos compartido. Luego, se crea un objeto de tarea de mapa para cada división. También crea una cantidad de objetos de tareas de reducción determinados por la propiedad mapreduce.job.reduces . Esta propiedad la establece el método setNumReduceTasks() en Job. En este punto, las tareas reciben ID y el maestro de la aplicación decide cómo ejecutar las tareas que componen el trabajo de MapReduce.
El maestro de aplicaciones puede optar por ejecutar las tareas en la misma JVM que él mismo si el trabajo es pequeño. Si las tareas en ejecución y la sobrecarga de ejecución y asignación de aplicaciones superan la ganancia de ejecutarse en paralelo, el maestro de aplicaciones seguirá funcionando. Se dice que tal tarea está uberizada .
Un trabajo que tiene menos de 10 mapeadores, solo un reductor se puede definir como un trabajo pequeño . Para un trabajo pequeño, el tamaño de la entrada es menor que un bloque HDFS. Al establecer mapreduce.job.ubertask.maxmaps , mapreduce.job.ubertask.maxreduces y mapreduce.job.ubertask.maxbytes , estos valores se pueden cambiar para un trabajo.
Al establecer mapreduce.job.ubertask.enable en verdadero, las tareas de Uber deben habilitarse explícitamente (para un trabajo individual o en todo el clúster). El maestro de la aplicación llama al método setupJob() en el OutputCommitter, finalmente, antes de que se pueda ejecutar cualquier tarea, el maestro de la aplicación llama al método setupJob() en el OutputCommitter. FileOutputCommitter
crea el directorio de salida final para el trabajo y el espacio de trabajo temporal para la salida de la tarea (es el valor predeterminado). Se crea el directorio de salida final para el trabajo y para la salida de la tarea, se crea el espacio de trabajo temporal.
Publicación traducida automáticamente
Artículo escrito por mayank5326 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA