Cloud Storage는Google Cloud에서 빅데이터를 저장하고 작업하는 데 중요한 역할을 합니다. 예를 들어 Cloud Storage를 사용하여 BigQuery에 데이터를 로드하고, Dataflow 파이프라인의 스테이징 파일 및 임시 데이터를 보관하고, Dataproc에 통합할 수 있으므로 Cloud Storage의 데이터에서 직접 Apache Hadoop 또는 Apache Spark 작업을 실행할 수 있습니다.
이 페이지에서는 gcloud 명령줄 도구를 사용하여 대용량 파일을 복사하거나 여러 파일을 병렬로 복사하는 등의 빅데이터 작업을 수행하는 방법을 설명합니다. gcloud 대한 소개는 gcloud 빠른 시작을 참조하세요.
시작하기 전에
이 페이지에 표시된 예시를 최대한 활용하려면 다음을 완료해야 합니다(아직 완료하지 않은 경우).
버킷에 많은 파일 복사하기
cp 명령어는 필요에 따라 병렬(다중 스레드/다중 처리) 복사를 자동으로 수행하여 대량의 파일을 효율적으로 업로드합니다. 하위 디렉터리를 재귀적으로 복사하려면 명령어의 --recursive 플래그를 사용합니다.
예를 들어 하위 디렉터리를 포함한 파일을 top-level-dir이라는 로컬 디렉터리에서 버킷으로 복사하려면 다음을 사용하세요.
gcloud storage cp top-level-dir gs://example-bucket --recursive
와일드 카드를 사용하여 작업에 대한 특정 이름 세트를 일치시킬 수 있습니다. 예를 들어 image로 시작하는 파일만 복사하려면 다음을 사용하세요.
gcloud storage cp top-level-dir/subdir/image* gs://example-bucket --recursive
동일한 와일드 카드를 사용하여 파일을 삭제할 수 있습니다.
gcloud storage rm gs://example-bucket/top-level-dir/subdir/image*
로컬과 클라우드 간 파일 복사 외에도 클라우드 안에서 파일을 복사할 수 있습니다. 예를 들면 다음과 같습니다.
gcloud storage cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2
여러 파일을 이동 중임을 gcloud storage가 자동으로 감지하여 subdir2라는 새 디렉터리에 파일을 만듭니다.
로컬 디렉터리 동기화하기
로컬 디렉터리와 버킷을 동기화하려면 gcloud storage rsync 명령어를 사용하면 됩니다. 예를 들어 gs://example-bucket을 로컬 디렉터리 local-dir의 콘텐츠와 일치시키려면 다음을 사용하세요.
gcloud storage rsync local-dir gs://example-bucket --recursive
--delete-unmatched-destination-objects 플래그를 사용하면 소스(local-dir)에 없는 대상(위 명령의 gs://example-bucket)에서 파일을 삭제하라는 명령어에 신호를 보냅니다. 두 버킷 간에 동기화할 수도 있습니다.
버킷에 큰 파일 복사하기
일반적으로 빅데이터 작업 시 클라우드의 데이터는 클라우드에 유지되어야 합니다. Google Cloud에 데이터가 있으면 Compute Engine과 같이 동일한 위치의 다른 서비스로 빠르게 데이터를 전송할 수 있습니다.
큰 로컬 파일을 버킷에 복사하려면 다음을 사용하세요.
gcloud storage cp local-file gs://example-bucket
기존 버킷에서 대량 파일을 복사하려면 다음을 사용하세요.
gcloud storage cp gs://example-source-bucket/file gs://example-destination-bucket
gcloud storage는 Cloud Storage의 재개 가능한 업로드 및 다운로드 기능을 활용합니다. 큰 파일의 경우 이는 전송 중인 데이터 크기에 따라 ISP의 네트워크 오류 발생 가능성이 증가하기 때문에 특히 중요합니다. gcloud storage은 서버가 실제로 수신한 바이트 수를 기준으로 업로드를 재개하므로 불필요한 바이트 재전송이 사라지고 최종적인 업로드 완료가 보장됩니다. 다운로드에도 로컬 파일의 크기를 기준으로 동일한 로직이 적용됩니다.
버킷 구성
버킷을 구성해야 하는 일반적인 빅데이터 작업에는 다른 스토리지 클래스로 데이터 이동, 객체 버전 관리 구성, 수명 주기 규칙 설정 등이 있습니다.
buckets describe로 버킷의 구성 세부정보를 나열할 수 있습니다.
gcloud storage buckets describe gs://example-bucket
출력에서 버킷 구성 정보를 확인합니다. 대부분의 정보는 gcloud storage을 통해 구성할 수도 있습니다.
- CORS: 버킷의 Cross-Origin-Resource-Sharing 설정을 제어합니다.
- Website: 버킷의 객체를 웹페이지 또는 웹사이트의 정적 애셋으로 사용할 수 있습니다.
- Versioning: 버킷의 객체를 삭제하면 이전 버전이 생성되게 합니다.
- Storage Class: 버킷 생성 중 스토리지 클래스를 설정할 수 있습니다.
- Lifecycle: 버킷에서 주기적으로 작업을 실행할 수 있습니다. 가장 일반적인 작업은 비활성 객체를 삭제하는 것입니다.
예를 들어, 특정 버킷의 파일을 약 하루만 보관하려는 경우 다음을 사용하여 버킷에 대한 수명 주기 규칙을 설정할 수 있습니다.
echo