복붙노트

[HADOOP] Hadoop HDFS에 이미지 / 비디오 저장

HADOOP

Hadoop HDFS에 이미지 / 비디오 저장

일부 비디오 / 이미지를 Hadoop HDFS에 저장하고 싶지만 HDFS가 텍스트와 같은 파일 만 허용한다고 들었습니다.

HDFS에 비디오 / 이미지를 저장할 수 있습니까? 그렇다면 수행 할 방법이나 단계는 무엇입니까?

해결법

  1. ==============================

    1.여분의 것을하지 않으면 절대적으로 가능합니다. Hadoop은 바이너리 파일을 읽고 쓸 수있는 기능을 제공합니다. 따라서 실제로 바이트로 변환 할 수있는 모든 것을 HDFS (이미지, 비디오 등)에 저장할 수 있습니다. 그렇게하기 위해 Hadoop은 SequenceFiles라고하는 것을 제공합니다. SequenceFile은 2 진 키 / 값 쌍으로 구성된 플 '파일입니다. SequenceFile은 각각 쓰기, 읽기 및 정렬을위한 Writer, Reader 및 Sorter 클래스를 제공합니다. 따라서 이미지 / 비디오 파일을 SeuenceFile로 변환하여 HDFS에 저장할 수 있습니다. 다음은 이미지 파일을 가져 와서 SequenceFile로 변환하는 작은 코드입니다. 여기서 파일 이름은 키이고 이미지 내용은 값입니다.

    여분의 것을하지 않으면 절대적으로 가능합니다. Hadoop은 바이너리 파일을 읽고 쓸 수있는 기능을 제공합니다. 따라서 실제로 바이트로 변환 할 수있는 모든 것을 HDFS (이미지, 비디오 등)에 저장할 수 있습니다. 그렇게하기 위해 Hadoop은 SequenceFiles라고하는 것을 제공합니다. SequenceFile은 2 진 키 / 값 쌍으로 구성된 플 '파일입니다. SequenceFile은 각각 쓰기, 읽기 및 정렬을위한 Writer, Reader 및 Sorter 클래스를 제공합니다. 따라서 이미지 / 비디오 파일을 SeuenceFile로 변환하여 HDFS에 저장할 수 있습니다. 다음은 이미지 파일을 가져 와서 SequenceFile로 변환하는 작은 코드입니다. 여기서 파일 이름은 키이고 이미지 내용은 값입니다.

    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....!!!!!!!!!!");
            }
        }
    }
    

    그리고 파일을 그대로 덤프하려는 경우 다음과 같이하면됩니다.

    bin/hadoop fs -put /src_image_file /dst_image_file
    

    그리고 파일을 저장하는 것 이상의 것이라면 HIPI가 유용 할 것입니다. HIPI는 분산 컴퓨팅 환경에서 이미지 처리 작업을 수행하기위한 API를 제공하는 Hadoop의 MapReduce 프레임 워크 용 라이브러리입니다.

    HTH

  2. ==============================

    2.HDFS에 이미지와 비디오를 저장하는 것은 전적으로 가능합니다. 그러나 적절하게 분리하기 위해 사용자 정의 InputFormat, OutputFormat 및 RecordReader를 사용 / 작성해야 할 수 있습니다.

    HDFS에 이미지와 비디오를 저장하는 것은 전적으로 가능합니다. 그러나 적절하게 분리하기 위해 사용자 정의 InputFormat, OutputFormat 및 RecordReader를 사용 / 작성해야 할 수 있습니다.

    그러나 다른 사람들이 유사한 프로젝트를 착수했다고 상상해보십시오. 그래서 당신이 그물을 샅샅이 뒤지면 누군가가 이미 여러분이 필요로하는 것을하기 위해 커스텀 클래스를 작성했음을 알게 될 것입니다.

  3. from https://stackoverflow.com/questions/16546040/store-images-videos-into-hadoop-hdfs by cc-by-sa and MIT license