인라인 준비

개요

데이터 준비를 위한 전통적인 방법은 일반적으로 로컬 파일 시스템의 폴더인 원본 데이터 소스를 32GiB보다 작은 CAR 파일의 컬렉션으로 변환하는 것을 포함합니다. 이 방법은 데이터 준비자들이 2배의 저장 용량을 갖추어야 한다는 점에서 매우 비용이 많이 들 수 있습니다. 예를 들어, 1PiB 데이터 세트를 준비하려면 CAR 파일의 저장을 위해 추가로 1PiB의 저장 용량이 필요해 전체 용량이 2PiB가 필요합니다.

인라인 준비는 CAR 파일의 블록을 원본 데이터 소스로 매핑하여 내보낸 CAR 파일을 저장할 필요가 없도록해 이 문제를 해결합니다.

CAR 검색 방식

인라인 준비에서는 CAR 파일을 메타데이터 데이터베이스와 원본 데이터 소스를 사용하여 HTTP를 통해 제공할 수 있습니다. 이는 CAR 파일의 바이트 범위를 원본 데이터 소스로 매핑할 수 있는 방법을 알고 있기 때문입니다.

CAR 파일을 HTTP를 통해 제공하기 위해서는 다음과 같이 콘텐츠 제공자를 실행하면 됩니다.

singularity run content-provider

참고: 이 명령은 로컬 HTTP 서버를 실행합니다. 인터넷에서 액세스할 수 있도록 하려면 nginx와 같은 역바이 프록시 뒤에 두는 것이 좋습니다.

이렇게 하면 데이터 소스가 이미 원격 스토리지 시스템(예: S3 또는 FTP)인 경우 Singularity 콘텐츠 제공자를 통해 파일 콘텐츠가 스토리지 제공자로 프록시될 수 있어 잠재적인 병목 현상이 발생할 수 있습니다.

Singularity 메타데이터 API 및 Singularity 다운로드 유틸리티를 사용하여 이 도전을 해결할 수 있는 솔루션이 있습니다.

Singularity 메타데이터 API를 실행하려면

singularity run api

그런 다음, Singularity 다운로드 유틸리티(스토리지 제공자 상에서)

singularity download <piece_cid>

Singularity 메타데이터 API는 원본 데이터 소스에서 CAR 파일을 어떻게 조립할지에 대한 계획을 반환하며, Singularity 다운로드 유틸리티는 이 계획을 해석하여 원본 데이터에서 데이터를 읽어 로컬 CAR 파일로 스트리밍합니다. 이 과정에서 변환 또는 조립이 중간에서 발생하지 않고 모두 스트림으로 처리됩니다.

메타데이터 API는 원본 데이터 소스에서 데이터에 액세스하기 위해 필요한 자격 증명을 반환하지 않습니다. 스토리지 제공자는 데이터 소스에 대한 자체 액세스를 얻고 이러한 자격 증명을 singularity download 명령에 제공해야 합니다.

오버헤드

인라인 준비는 주로 필요한 저장 공간 측면에서 최소한의 오버헤드를 가져옵니다. 또한, 계산 및 대역폭 오버헤드도 최소화됩니다.

각 데이터 블록의 메타데이터는 데이터베이스 행으로 저장되며, 준비된 데이터 1MiB 블록 당 100바이트가 필요합니다. 1PiB 데이터 세트의 경우, 이는 매핑 메타데이터를 저장하기 위해 10TiB의 디스크 공간이 필요합니다. 이는 일반적으로 문제가 되지 않지만, 많은 수의 작은 파일이 있는 데이터 세트의 경우 디스크 오버헤드가 상당히 높아질 수 있습니다.

이후, CAR 파일이 원본 데이터 소스에서 동적으로 재생성될 때 데이터베이스에서 이러한 매핑을 교차 참조하는 것이 필요합니다. 그러나 일반적으로 이는 문제가 되지 않습니다. 대역폭 1GB/초는 1,000개의 데이터베이스 항목 조회를 의미하며, 이는 모든 지원되는 데이터베이스 백엔드의 병목 기능과는 거리가 멉니다. 또한, 향후 최적화로 이러한 오버헤드를 더욱 감소시킬 수 있습니다.

인라인 준비 활성화

인라인 준비는 암호화가 필요하지 않은 데이터 세트에 대해 자동으로 활성화됩니다. 데이터 세트를 생성할 때 출력 디렉토리가 지정되면 CAR 파일이 해당 위치로 내보내집니다. CAR 검색 요청은 우선적으로 이러한 디렉토리들을 사용합니다. 사용자가 CAR 파일을 제거하면 시스템은 원본 데이터 소스에서 가져오도록 되돌립니다.

Last updated