입력 파일을 블록으로 분할하고 Hadoop 분산 파일 시스템에 저장하는 방법을 수정하고 싶습니다 (예 : 블록 크기에 따라 파일을 분할하지만 내 응용 프로그램은 파일을 파일 내용). 그래서 HADOOP의 block size 속성을 기반으로 파일을 블록으로 분리하는 클래스를 정확히 알고 싶습니다.하둡 배포 파일 시스템
1
A
답변
1
블록은 HDFS의 추상화이며 InputSplits는 MapReduce의 추상화입니다. 기본적으로 하나의 HDFS 블록은 수정할 수있는 하나의 InputSplit에 해당합니다.
기본적으로 HDFS는 블록을 정확한 64MB 블록으로 나누고 레코드 경계를 넘어 갈 수도 있습니다. 파일 입력 형식의 경우 데이터 블록에서 InputSplits를 작성하는 것은 InputFormat의 기능입니다. 각 InputSplit은 별도의 매퍼에 의해 처리됩니다.
예제는 블록 크기를 기준으로 파일을 분할하지만 내 응용 프로그램은
이 InputSplits의 관점에서 생각하고 응용 프로그램 요구 사항에 따라 새로운 InputFormat를 만들 파일 내용을 기반으로 파일을 분할해야합니다. 다음은 새로운 InputFormat을 만드는 데 필요한 자습서 (1, 2 및 3)입니다.
Praveen에 감사드립니다. 나는 hadoop 소스 코드를 수정하려고한다. 그래서 hdfs에서 한 클래스에서 다른 클래스로 컨트롤이 어떻게 흐르고 있는지 알고 싶습니다.
다음을 알고 싶습니다. -
1. 명령 프롬프트에서 CopyFromLocal 명령을 사용하여 파일을 hdfs로 복사 할 때 호출되는 클래스입니다.
2. Mapper 인터페이스를 구현하는 클래스에 대한 개체를 만드는 클래스입니다.
3. 블록을 ReplicationTargetChooser 클래스의 chooseTarget() 함수에서 반환 한 데이터 노드 목록 (DatanodeDescriptor 배열)에 할당하는 클래스입니다. – user1938899