Ajuste de mapeadores - Amazon DynamoDB

Ajuste de mapeadores

Cuando Hive lanza un trabajo de Hadoop, el trabajo se procesa por una o varias tareas de mapeador. Suponiendo que su tabla de DynamoDB tenga suficiente capacidad de rendimiento, puede modificar el número de mapeadores del clúster, lo que podría mejorar el rendimiento.

nota

El número de tareas de mapeador que se usan en un trabajo de Hadoop se ve influenciado por las divisiones de entrada que Hadoop utiliza para subdividir los datos en bloques lógicos. Si Hadoop no realiza suficientes divisiones de entrada, entonces las operaciones de escritura podrían no consumir todo el rendimiento de escritura disponible en la tabla de DynamoDB.

Aumento del número de mapeadores

Cada mapeador de un Amazon EMR tiene una tasa de lectura máxima de 1 MiB por segundo. El número de mapeadores del clúster depende del tamaño de los nodos que este contiene. (Para obtener información sobre los tamaños de los nodos y el número de mapeadores por nodo, consulte Configuración de la tarea en la Guía de desarrolladores de Amazon EMR).

Si la tabla de DynamoDB posee gran capacidad de rendimiento para las lecturas, puede probar a aumentar el número de mapeadores de una de las siguientes formas:

  • Aumente el tamaño de los nodos del clúster. Por ejemplo, si el clúster utiliza m1.large nodos (tres mapeadores por nodo), puede probar a actualizarlos a nodos m1.xlarge (ocho mapeadores por nodo).

  • Aumente el número de nodos del clúster. Por ejemplo, si tiene un clúster de tres nodos de tipo m1.xlarge, dispone de un total de 24 mapeadores. Si duplicara el tamaño del clúster, con el mismo tipo de nodo, tendría 48 mapeadores.

Puede utilizar la AWS Management Console para administrar el tamaño o el número de nodos del clúster. Puede que tenga que reiniciar el clúster para que surtan efecto estos cambios.

Otra forma de aumentar el número de mapeadores consiste en modificar el parámetro de configuración mapred.tasktracker.map.tasks.maximum de Hadoop. (Se trata de un parámetro de Hadoop, no de Hive. No puede modificarlo de forma interactiva desde el símbolo del sistema). Si aumenta el valor de mapred.tasktracker.map.tasks.maximum, puede incrementar el número de mapeadores sin aumentar el número ni el tamaño de los nodos. Sin embargo, es posible que los nodos del clúster se queden sin memoria si establece un valor demasiado elevado.

Configura el valor de mapred.tasktracker.map.tasks.maximum como acción de arranque la primera vez que lanza el clúster de Amazon EMR. Para obtener más información, consulte (Opcional) Crear acción de arranque para instalar software adicional en la Guía de administración de Amazon EMR.

Reducción del número de mapeadores

Si utiliza la instrucción SELECT para seleccionar datos de una tabla de Hive externa mapeada a DynamoDB, el trabajo de Hadoop puede utilizar tantas tareas como sea necesario, hasta el número máximo de mapeadores del clúster. En esta situación, es posible que una consulta de Hive que tarde bastante en ejecutarse consuma toda la capacidad de lectura aprovisionada de la tabla de DynamoDB, lo que afectaría negativamente a otros usuarios.

Puede usar el parámetro dynamodb.max.map.tasks para establecer un límite superior para las tareas de mapeo:

SET dynamodb.max.map.tasks=1

Este valor debe ser igual o superior a 1. Cuando Hive procese la consulta, el trabajo de Hadoop resultante no usará más dynamodb.max.map.tasks que las indicadas cuando realice lecturas en la tabla de DynamoDB.