2012-08-09 7 views
0

f.e. 파일 20 바이트를 만듭니다.
1 과정은 내 맵리 듀스를 사용하여 큰 파일을 작성 평행이 필요 9
hadoop/HDFS : 여러 프로세스에서 같은 파일에 쓸 수 있습니까?

0에서 5에서 2 4
에 기록합니다.

감사합니다.

P. 어쩌면 아직 구현되지 않았을 수도 있지만, 일반적으로 가능합니다.

+0

** 왜 ** 동일한 ** 파일에 병렬로 쓰고 싶습니까? 그리고 그것은 mapreduce와 어떻게 관련이 있습니까? –

+0

이 과정의 속도를 높이고 싶습니다. 나는 병렬 데이터 계산을 할 수있다. 이제 준비된 데이터를 파일로 작성하는 방법을 찾아야합니다. 큐잉 대신 병렬 처리가 더 좋습니다. – denys

+0

적어도 하나의 파일에 쓰는 것만으로는 속도를 향상시킬 수 없습니다. –

답변

3

이 파일을 만든 후에 수행 할 계획에 대해 설명 할 수 있습니다.

HDFS에서 꺼내어 사용하려면 Hadoop M/R에서 별도의 파일을 만든 다음 hadoop fs -cat /path/to/output/part* > localfile과 같은 명령을 사용하여 단일 파일에 파트를 결합하고 로컬 파일에 저장하십시오 체계.

그렇지 않으면 동일한 파일에 대해 여러 개의 작성자를 열 수있는 방법이 없습니다. HDFS에 대한 읽기 및 쓰기는 스트림 기반이며 여러 독자가 열릴 수는 있지만 (여러 블록 읽기 가능) 여러 개의 쓰기가 불가능합니다 .

웹 다운로더는 복수 스레드로 Range HTTP header을 사용하여 파일의 일부를 요청한 다음 나중에 (Thomas Jungblut이 제안한대로) 부품을 병합하기 전에 tmp 파일을 사용하거나 Random IO, 버퍼링을 사용할 수 있습니다 다운로드 된 부분을 올바른 위치의 출력 파일에 기록하기 전에 메모리에 저장하십시오. 불행히도 Hadoop HDFS로 임의 출력을 수행 할 능력이 없습니다.

0

짧은 대답은 '아니오'라고 생각합니다. 이 작업을 수행하는 방법은 여러 '예비'파일을 hadoop에 작성한 다음 M/R을 단일 통합 파일로 작성하는 것입니다. 기본적으로, hadoop을 사용하고 바퀴를 재발 명하지 마십시오.

관련 문제