복붙노트

[HADOOP] 기록중인 파일에 액세스 중

HADOOP

기록중인 파일에 액세스 중

You use the hadoop fs –put command to write a 300 MB file using and HDFS block size of 64 MB. Just after this command has finished writing 200 MB of this file, what would another user see when trying to access this file?

a.) They would see Hadoop throw an ConcurrentFileAccessException when they try to access this file.
b.) They would see the current state of the file, up to the last bit written by the command.
c.) They would see the current of the file through the last completed block.
d.) They would see no content until the whole file written and closed.

내가 hadoop fs -put 명령에 대해 이해 한 것에서 답은 D이지만 일부는 C라고합니다.

아무도 옵션 중 하나에 대한 건설적인 설명을 제공 할 수 있습니까?

고마워요 xx

해결법

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

    1.파일에 액세스하기 위해 요청이 먼저 NameNode로 보내지기 때문에 다른 파일과 관련된 메타 데이터를 얻기 때문에 전체 파일을 쓰고 닫을 때까지 파일에 액세스 할 수없는 이유는 (옵션 D) 파일을 작성하십시오. 이 메타 데이터는 파일의 모든 블록이 성공적으로 기록되었다는 확인을받은 후에 만 ​​NameNode에 의해 기록됩니다.

    파일에 액세스하기 위해 요청이 먼저 NameNode로 보내지기 때문에 다른 파일과 관련된 메타 데이터를 얻기 때문에 전체 파일을 쓰고 닫을 때까지 파일에 액세스 할 수없는 이유는 (옵션 D) 파일을 작성하십시오. 이 메타 데이터는 파일의 모든 블록이 성공적으로 기록되었다는 확인을받은 후에 만 ​​NameNode에 의해 기록됩니다.

    따라서 블록을 사용할 수있는 경우에도 사용자는 메타 데이터가 업데이트 될 때까지 파일을 볼 수 없으며 모든 블록이 작성된 후에 수행됩니다.

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

    2.파일이 생성되는 즉시 파일 시스템 네임 스페이스에 표시됩니다. 파일에 기록 된 모든 내용은 표시되지 않을 수 있습니다.

    파일이 생성되는 즉시 파일 시스템 네임 스페이스에 표시됩니다. 파일에 기록 된 모든 내용은 표시되지 않을 수 있습니다.

    그래서, 나는 옵션 C와 함께 갈 것이다.

    또한이 관련 질문을 살펴보십시오.

  3. ==============================

    3.카오스 (Chaos)와 애쉬리스 (Ashrith)가 각각 상세히 설명한 바와 같이 D와 C가 모두 true로 보입니다. 나는 그들의 결과를 https://martin.atlassian.net/wiki/spaces/lestermartin/blog/2019/03/21/1172373509/are+partially-written+hdfs+files+accessible+not+exactly+but+much에 문서화했다. 7.5GB 파일로 재생할 때 + 예 + + + + + 이전 + 생각.

    카오스 (Chaos)와 애쉬리스 (Ashrith)가 각각 상세히 설명한 바와 같이 D와 C가 모두 true로 보입니다. 나는 그들의 결과를 https://martin.atlassian.net/wiki/spaces/lestermartin/blog/2019/03/21/1172373509/are+partially-written+hdfs+files+accessible+not+exactly+but+much에 문서화했다. 7.5GB 파일로 재생할 때 + 예 + + + + + 이전 + 생각.

    간단히 말해, 예, 정확한 파일 이름은 완성 될 때까지 존재하지 않습니다 ... 그리고 ... 예, 파일을 마지막으로 작성한 블록까지 실제로 읽을 수 있습니다. 파일 이름에 ._COPYING_이 (가) 임시로 붙습니다.

  4. from https://stackoverflow.com/questions/26634057/accessing-a-file-that-is-being-written by cc-by-sa and MIT license