tipos sirve significado que pasa para mis memoria informatica fotos caracteristicas caché cache bueno borro borrar borran hadoop distributed-cache

hadoop - sirve - Los archivos no se colocan correctamente en la memoria caché distribuida



si borro la memoria cache se borran mis fotos (1)

Error común en la configuración de su trabajo:

Configuration conf2 = new Configuration(); job = new Job(conf2); job.setJobName("Join with Cache"); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);

Después de crear su objeto Trabajo, necesita retirar el objeto Configuración a medida que Job realiza una copia, y la configuración de valores en conf2 después de crear el trabajo no tendrá ningún efecto en el trabajo mismo. Prueba esto:

job = new Job(new Configuration()); Configuration conf2 = job.getConfiguration(); job.setJobName("Join with Cache"); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);

También debe verificar la cantidad de archivos en el caché distribuido, probablemente haya más de uno y esté abriendo un archivo aleatorio que le proporcione el valor que está viendo.

Sugiero que utilices un enlace simbólico que hará que los archivos estén disponibles en el directorio de trabajo local, y con un nombre conocido:

DistributedCache.createSymlink(conf2); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000#myfile"), conf2); // then in your mapper setup: BufferedReader joinReader = new BufferedReader(new FileInputStream("myfile"));

Estoy agregando un archivo a la memoria caché distribuida usando el siguiente código:

Configuration conf2 = new Configuration(); job = new Job(conf2); job.setJobName("Join with Cache"); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);

Luego leo el archivo en los mapeadores:

protected void setup(Context context)throws IOException,InterruptedException{ Configuration conf = context.getConfiguration(); URI[] cacheFile = DistributedCache.getCacheFiles(conf); FSDataInputStream in = FileSystem.get(conf).open(new Path(cacheFile[0].getPath())); BufferedReader joinReader = new BufferedReader(new InputStreamReader(in)); String line; try { while ((line = joinReader.readLine()) != null) { s = line.toString().split("/t"); do stuff to s } finally { joinReader.close(); }

El problema es que solo leo en una línea, y no es el archivo que estaba colocando en la memoria caché. Más bien es: cm9vdA ==, o raíz en base64.

¿Alguien más ha tenido este problema o ve cómo estoy usando el caché distribuido incorrectamente? Estoy usando Hadoop 0.20.2 completamente distribuido.