what technology source how descargas descargar hadoop mapreduce hive

technology - version de hadoop



Hive no puede establecer manualmente el nĂºmero de reductores (4)

Tengo la siguiente consulta de colmena:

select count(distinct id) as total from mytable;

que genera automáticamente:
1408 Mapeadores
1 Reductor

Necesito configurar manualmente el número de reductores y he intentado lo siguiente:

set mapred.reduce.tasks=50 set hive.exec.reducers.max=50

pero ninguno de estos ajustes parece ser respetado. La consulta tarda una eternidad en ejecutarse. ¿Hay alguna manera de configurar manualmente los reductores o quizás reescribir la consulta para que pueda generar más reductores? ¡Gracias!


El número de reductores depende también del tamaño del archivo de entrada

Por defecto es 1GB (1000000000 bytes). Puede cambiar eso estableciendo la propiedad hive.exec.reducers.bytes.per.reducer:

  1. ya sea cambiando hive-site.xml

    <property> <name>hive.exec.reducers.bytes.per.reducer</name> <value>1000000</value> </property>

  2. o usando el conjunto

    $ hive -e "set hive.exec.reducers.bytes.per.reducer=1000000"



escribiendo una consulta en una colmena como esta:

SELECT COUNT(DISTINCT id) ....

siempre resultará en el uso de un solo reductor. Debieras:

  1. use este comando para establecer el número deseado de reductores:

    establecer mapred.reduce.tasks = 50

  2. reescribir la consulta de la siguiente manera:

SELECCIONAR COUNT (*) FROM (SELECCIONAR ID DISTINCT FROM ...) t;

Esto dará como resultado 2 trabajos de mapa + reducción en lugar de uno, pero la ganancia de rendimiento será sustancial.


Mapper depende totalmente del número de archivos, es decir, del tamaño del archivo, podemos llamarlo como divisiones de entrada. Dividir está notando, pero la división lógica de datos. Ejemplo: mi tamaño de archivo es de 150 MB y mi bloque predeterminado de HDFS es de 128 MB. Creará dos divisiones significa dos bloques. Dos Mapper serán asignados para este trabajo.

Imp Nota: Supongamos que he especificado que el tamaño de división es de 50 MB, entonces comenzará 3 Mapper, porque depende totalmente del número de división.

Imp Nota: si espera 10TB de datos de entrada y tiene un tamaño de bloques de 128MB , terminará con 82,000 mapas , a menos que Configuration.set (MRJobConfig.NUM_MAPS, int) (que solo proporciona una pista al marco) se use para establecerlo aún más alto.

Nota: si no hemos especificado el tamaño de división, tomará el tamaño de bloque hdfs predeterminado como tamaño dividido.

Reducer tiene 3 fases principales: mezclar, clasificar y reducir .

Comando:

1] Establecer tarea de mapa: -D mapred.map.tasks = 4
2] Establecer tarea de reducción: -D mapred.reduce.tasks = 2