2011-08-04 11 views
5

2 preguntas básicas que me afligen:¿Cómo garantiza colmena/hadoop que cada asignador trabaja con datos que son locales para él?

  • ¿Cómo puedo estar seguro de que cada uno de la colmena 32 archivos utiliza para almacenar mis tablas se sienta en su máquina única?
  • Si eso sucede, ¿cómo puedo estar seguro de que si colmena crea 32 mapeadores, cada uno de ellos funcionará en sus datos locales? ¿Hardoop/HDF garantiza esta magia, o colmena como una aplicación inteligente se asegura de que va a suceder?

Antecedentes: Tengo un racimo hervidero de 32 máquinas, y:

  • Todos mis tablas se crean con "CLUSTERED BY(MY_KEY) INTO 32 BUCKETS"
  • utilizo hive.enforce.bucketing = true;
  • verifiqué y de hecho cada tabla se almacena como 32 archivos en el usuario/colmena/almacén
  • Estoy usando el factor de replicación HDFS de 2

Gracias!

Respuesta

5
  1. La colocación de los datos está determinada por HDFS. Intentará equilibrar los bytes sobre las máquinas. Debido a la replicación, cada archivo estará en dos máquinas, lo que significa que tiene dos máquinas candidatas para leer los datos localmente.
  2. HDFS sabe dónde está almacenado cada archivo, y Hadoop usa esta información para ubicar los mapeadores en los mismos hosts que los datos almacenados. Puede ver los contadores de su trabajo para ver los recuentos de tareas de mapa "local de datos" y "local de rack". Esta es una característica de Hadoop de la que no debe preocuparse.
+0

De forma predeterminada, HDFS replica los bloques tres veces (el mismo nodo y otros dos nodos, preferiblemente en otro bastidor). – cftarnas

+1

bien, gracias, a la luz de su respuesta, reformulé y formulé una nueva pregunta que describe mejor mi problema: http://stackoverflow.com/questions/6953383/is-a-collocated-join-a-la-netezza-theoretically -possible-in-hive – ihadanny

+0

@SpikeGronim ¿podría darnos una idea de esta pregunta de Hadoop? [¿Es posible restringir que un trabajo de MapReduce tenga acceso a datos remotos?] (Http://stackoverflow.com/q/31789176/320399) – blong

1

Sin uniones, se utiliza Hadoop Map Reduce el mecanismo para la localidad de datos (se describe en la respuesta de Spike).
Específicamente para la colmena, mencionaría Map joins. Es posible decirle a la colmena cuál es el tamaño máximo de la tabla para la unión de solo mapas. Cuando una de las tablas es lo suficientemente pequeña, Hive replicará esta tabla en todos los nodos utilizando el mecanismo de caché distribuida y se asegurará de que todo el proceso de unión se realice localmente en los datos. Hay una buena explicación del proceso: http://www.facebook.com/note.php?note_id=470667928919

Cuestiones relacionadas