hadoop hive

hadoop - ¿Cómo elige Hive el número de reductores para un trabajo?



(1)

El valor predeterminado de 1 tal vez para una instalación de Hadoop de vainilla. La colmena lo anula.

En colmena de código abierto (y probablemente EMR)

# reducers = (# bytes of input to mappers) / (hive.exec.reducers.bytes.per.reducer)

Esta publicación dice que hive.exec.reducers.bytes.per.reducer predeterminado es 1G.

Puede limitar el número de reductores producidos por esta heurística utilizando hive.exec.reducers.max .

Si conoce exactamente la cantidad de reductores que desea, puede configurar mapred.reduce.tasks , y esto anulará todas las heurísticas. (De forma predeterminada, se establece en -1, lo que indica que Hive debe usar sus heurísticas).

En algunos casos, diga ''seleccionar conteo (1) desde T'' - Hive establecerá el número de reductores en 1, independientemente del tamaño de los datos de entrada. Estos se denominan ''agregados completos'', y si lo único que hace la consulta son los agregados completos, entonces el compilador sabe que los datos de los asignadores se reducirán a una cantidad trivial y no tiene sentido ejecutar varios reductores.

Varios lugares dicen que el número predeterminado de reductores en un trabajo de Hadoop es 1. Puede usar el símbolo mapred.reduce.tasks para establecer manualmente el número de reductores.

Cuando ejecuto un trabajo de Hive (en Amazon EMR, AMI 2.3.3), tiene un número de reductores mayor que uno. En cuanto a la configuración del trabajo, algo ha configurado mapred.reduce.tasks, supongo que Hive. ¿Cómo elige ese número?

Nota: aquí hay algunos mensajes mientras ejecutas un trabajo de Hive que debería ser una pista:

... Number of reduce tasks not specified. Estimated from input data size: 500 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer=<number> In order to limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set mapred.reduce.tasks=<number> ...