[HADOOP] Hadoop HDFS에 이미지 / 비디오 저장
HADOOPHadoop HDFS에 이미지 / 비디오 저장
일부 비디오 / 이미지를 Hadoop HDFS에 저장하고 싶지만 HDFS가 텍스트와 같은 파일 만 허용한다고 들었습니다.
HDFS에 비디오 / 이미지를 저장할 수 있습니까? 그렇다면 수행 할 방법이나 단계는 무엇입니까?
해결법
-
==============================
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.HDFS에 이미지와 비디오를 저장하는 것은 전적으로 가능합니다. 그러나 적절하게 분리하기 위해 사용자 정의 InputFormat, OutputFormat 및 RecordReader를 사용 / 작성해야 할 수 있습니다.
HDFS에 이미지와 비디오를 저장하는 것은 전적으로 가능합니다. 그러나 적절하게 분리하기 위해 사용자 정의 InputFormat, OutputFormat 및 RecordReader를 사용 / 작성해야 할 수 있습니다.
그러나 다른 사람들이 유사한 프로젝트를 착수했다고 상상해보십시오. 그래서 당신이 그물을 샅샅이 뒤지면 누군가가 이미 여러분이 필요로하는 것을하기 위해 커스텀 클래스를 작성했음을 알게 될 것입니다.
from https://stackoverflow.com/questions/16546040/store-images-videos-into-hadoop-hdfs by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop 데이터 노드가 NameNode를 찾을 수 없습니다. (0) | 2019.06.01 |
---|---|
[HADOOP] java.lang.RuntimeException : org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient를 인스턴스화 할 수 없습니다. (0) | 2019.06.01 |
[HADOOP] Hbase 신속하게 행 개수를 계산 (0) | 2019.06.01 |
[HADOOP] Apache Spark 및 Java를 사용하여 CSV를 DataFrame / DataSet으로 구문 분석 (0) | 2019.06.01 |
[HADOOP] 하이브에 구조체의 배열 분해 (0) | 2019.06.01 |