¿Es posible obtener lecturas distribuidas del clúster HDSF utilizando un cliente HDFS en una máquina?Lecturas distribuidas de HDFS sin Map/Reducir
He llevado a cabo un experimento con un clúster que consta de 3 nodos de datos (DN1, DN2, DN3). Luego, ejecuté 10 lecturas simultáneas de 10 archivos independientes de un programa cliente ubicado en DN1, y parecía estar solo leyendo datos de DN1. Otros nodos de datos (DN2, DN3) mostraron actividad cero (a juzgar por los registros de depuración).
He comprobado que todos los bloques de archivos están replicados en los 3 nodos de datos, por lo que si apago DN1, los datos se leerán desde DN2 (solo DN2).
Aumentar la cantidad de datos leídos no ayudó (intenté desde 2 GB a 30 GB).
Dado que tengo la necesidad de leer varios archivos grandes y extraer solo una pequeña cantidad de datos (unos pocos Kb), me gustaría evitar el uso de map/reduce ya que requiere configurar más servicios y también requiere escribir el salida de cada tarea dividida a HDFS. Más bien, sería bueno tener el resultado transmitido directamente a mi programa cliente desde los nodos de datos.
estoy usando SequenceFile
para los datos de lectura/escritura, de esta manera (JDK7):
//Run in thread pool on multiple files simultaneously
List<String> result = new ArrayList<>();
LongWritable key = new LongWritable();
Text value = new Text();
try(SequenceFile.Reader reader = new SequenceFile.Reader(conf,
SequenceFile.Reader.file(filePath)){
reader.next(key);
if(key.get() == ID_I_AM_LOOKING_FOR){
reader.getCurrentValue(value);
result.add(value.toString());
}
}
return result; //results from multiple workers are merged later
Cualquier ayuda apreciada. ¡Gracias!
Gracias. ¡Eso lo explica! Gracias por el consejo proxy. – rodion
¿Cómo sabe Hadoop qué nodo está en qué rack? Http://hadoop.apache.org/common/docs/current/cluster_setup.html#Hadoop+Rack+Awareness –
¿Qué es "angg"? –