2013-05-03 2 views
6

S3에 ~ 5000 개의 작은 파일이있는 디렉토리가 있으면 전체 디렉토리를 쉽게 압축하여 결과 zip 파일을 S3에 남겨 둘 수 있습니까? 각 파일을 수동으로 직접 액세스 할 필요없이이 작업을 수행해야합니다.S3의 전체 디렉토리를 압축

감사합니다.

+0

http://www.w2lessons.com/2012/01/fast-zipping-in-amazon-s3.html –

+0

나는 그것을 보았지만 여전히 다운로드가 필요합니다 현재 우리의 병목 현상 인 ec2에 개별적으로 파일 – Jin

답변

4

아니요, 마법의 탄환이 없습니다.

(S3에서는 "디렉토리"와 같은 것이 없다는 것을 깨달아야합니다.) 경로가있는 객체 만 있습니다. 디렉토리와 같은 목록을 얻을 수 있지만 '/'문자는 ' 마술 - 당신이 원하는 문자로 접두사를 얻을 수 있습니다.)

누군가가 지적했듯이, "미리 압축"하면 다운로드 속도와 추가 속도를 모두 향상시킬 수 있습니다. (중복 저장을 희생 시키십시오.)

다운로드가 병목 현상 인 경우, 연속적으로 다운로드하는 것처럼 들립니다. S3는 땀을 흘리지 않고 동일한 객체에 대한 1000 개의 동시 연결을 지원할 수 있습니다. 하나의 상자에서 너무 많은 연결이 S3에 의해 제한 될 수 있으므로 벤치 마크를 실행하여 가장 적합한 연결 수를 확인해야합니다. 초당 1000 회의 연결을 수행 할 때는 TCP tuning을 수행해야 할 수도 있습니다.

"솔루션"은 데이터 액세스 패턴에 크게 의존합니다. 문제를 재정렬하십시오. 단일 파일 다운로드가 드물다면 한 번에 100 개를 S3로 그룹화 한 다음 요청시 분리 할 수 ​​있습니다. 파일 크기가 작은 경우 파일 시스템에 캐시하는 것이 좋습니다.

또는 전체 5000 개의 파일을 S3에 하나의 큰 zip 파일로 저장하고 개별 파일을 제공하기 위해 특정 범위의 zip 파일을 다운로드 할 수있는 "스마트 클라이언트"를 사용하는 것이 좋습니다. (S3는 바이트 범위를 지원합니다.)

+0

나는 볼 수 있습니다. 그건 내가 생각한 것입니다. 우리의 병목 현상은 실제로이 파일들에 대해 S3에 계속해서 액세스하는 EMR입니다. 우리는's3distcp'를 사용하여 모든 것을 복사하려고 시도했지만 여전히 미친 듯이 느립니다. 플랫폼을 재고하고 모든 파일을 함께 연결 한 다음 S3로 보냅니다 (아마 EMR 성능도 개선 될 것입니다). 통찰력을 주셔서 감사합니다! – Jin

+0

그렇게하는 것이 일반적인 일입니다. 아무도 공개적으로 해결책을 발표하지 않은 것은 수치스럽고 모든 사람들이 바퀴를 다시 발명해야합니다. –

관련 문제