Archivia immagini / video in Hadoop HDFS

Vorrei memorizzare alcuni video / immagini in Hadoop HDFS , ma ho sentito che HDFS accetta solo file come testo.

Per sicurezza, possiamo archiviare video / immagini in HDFS? Se sì, qual è il modo o i passi da seguire per farlo?

È assolutamente ansible senza fare nulla di più. Hadoop ci fornisce la possibilità di leggere / scrivere file binari. Quindi, praticamente tutto ciò che può essere convertito in byte può essere memorizzato in HDFS (immagini, video ecc.). Per farlo Hadoop fornisce qualcosa chiamato SequenceFiles . SequenceFile è un file flat costituito da coppie di chiavi / valori binarie. SequenceFile fornisce le classi Writer, Reader e Sorter per scrivere, leggere e ordinare rispettivamente. Quindi, è ansible convertire il file immagine / video in un SeuenceFile e memorizzarlo nell’HDFS. Ecco una piccola porzione di codice che prenderà un file immagine e lo convertirà in un SequenceFile, dove il nome del file è la chiave e il contenuto dell’immagine è il valore:

public class ImageToSeq { public static void main(String args[]) throws Exception { Configuration confHadoop = new Configuration(); confHadoop.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/core-site.xml")); confHadoop.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/hdfs-site.xml")); FileSystem fs = FileSystem.get(confHadoop); Path inPath = new Path("/mapin/1.png"); Path outPath = new Path("/mapin/11.png"); FSDataInputStream in = null; Text key = new Text(); BytesWritable value = new BytesWritable(); SequenceFile.Writer writer = null; try{ in = fs.open(inPath); byte buffer[] = new byte[in.available()]; in.read(buffer); writer = SequenceFile.createWriter(fs, confHadoop, outPath, key.getClass(),value.getClass()); writer.append(new Text(inPath.getName()), new BytesWritable(buffer)); }catch (Exception e) { System.out.println("Exception MESSAGES = "+e.getMessage()); } finally { IOUtils.closeStream(writer); System.out.println("last line of the code....!!!!!!!!!!"); } } } 

E se la tua intenzione è di scaricare semplicemente i file così com’è, puoi semplicemente fare questo:

 bin/hadoop fs -put /src_image_file /dst_image_file 

E se il tuo intento è molto più che archiviare i file, potresti trovare utile HIPI . HIPI è una libreria per il framework MapReduce di Hadoop che fornisce un’API per eseguire attività di elaborazione di immagini in un ambiente di elaborazione distribuito.

HTH

È completamente ansible archiviare immagini e video su HDFS, ma probabilmente dovrai usare / scrivere il tuo InputFormat , OutputFormat e RecordReader per dividerli correttamente.

Immagino che altri abbiano intrapreso progetti simili, quindi, se setacciate la rete, potreste essere in grado di scoprire che qualcuno ha già scritto classi personalizzate per fare esattamente ciò di cui avete bisogno.