현대의 데이터 환경에는 정형 데이터와 비정형 데이터를 원활하게 통합하고 손쉽게 확장하며 효율적인 AI/ML 워크로드를 지원하는 새로운 종류의 인프라가 필요합니다. 이곳은
이 블로그 게시물에서는 현재 접근 방식을 최적화할 수 있는 세 가지 강력한 도구에 대해 자세히 설명합니다.
Tabular는 Apache Iceberg의 최초 제작자가 만든 데이터 플랫폼입니다. 이는 모든 컴퓨팅 계층에 연결되어 데이터 공급업체 종속을 제거하는 독립적인 범용 스토리지 플랫폼을 제공하도록 설계되었습니다. 이 기능은 최신 데이터 스택에 매우 중요합니다. 이를 통해 사용자는 특정 공급업체의 오래되거나 일치하지 않는 도구 세트를 강요받지 않고 동급 최고의 컴퓨팅 및 스토리지 도구를 선택할 수 있습니다.
에
이 구현은 Iceberg의 S3FileIO를 활용합니다. S3FileIO는 여러 가지 이유로 Hadoop의 file-io보다 더 나은 것으로 간주됩니다. 그 중 일부는 이미 논의한 바 있습니다.
클라우드 스토리지에 최적화됨 : Iceberg의 S3FileIO는 클라우드 네이티브 스토리지와 작동하도록 설계되었습니다.
향상된 처리량 및 최소화된 조절: Iceberg는
엄격한 일관성: Iceberg는
점진적 멀티파트 업로드: Iceberg의 S3FileIO는
체크섬 확인: Iceberg는 다음을 허용합니다.
맞춤 태그: Iceberg는 추가를 지원합니다.
네거티브 캐싱 방지: Iceberg의 FileIO 인터페이스는 Hadoop 호환 FileSystem만큼 엄격한 보장을 요구하지 않습니다.
이와 대조적으로 S3FileIO 이전에 사용되었던 Hadoop의 S3A FileSystem은 클라우드 스토리지에 대해 동일한 수준의 최적화를 제공하지 않습니다. 이 모든 말은 다음과 같습니다. 과거의 덫으로 미래를 향한 데이터 레이크 인프라를 방해하지 마십시오.
시작하기 전에 시스템이 다음 요구 사항을 충족하는지 확인하십시오.
처음부터 시작하는 경우 다음을 사용하여 둘 다 설치할 수 있습니다.
docker-compose --version
시작하려면 Tabular의 YAML 파일을 복제하거나 복사하세요.
제공된 YAML 파일은 Docker Compose 구성 파일입니다. 이는 다중 컨테이너 Docker 애플리케이션에 대한 서비스 세트와 해당 구성을 정의합니다. 이 경우에는 Spark-Iceberg와 MinIO라는 두 가지 서비스가 있습니다. 각 섹션을 분석해 보겠습니다.
1. Spark-Iceberg 서비스:
spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000
image: Spark-iceberg 서비스에 사용할 Docker 이미지를 지정합니다. 이 경우 tabulario/spark-iceberg:latest 이미지를 사용합니다.
종속_on: Spark-iceberg 서비스가 나머지 및 minio 서비스에 종속되도록 지정합니다.
Container_name: 컨테이너에 특정 이름(spark-iceberg)을 할당합니다.
환경: Spark 및 AWS 자격 증명을 포함하여 컨테이너에 대한 환경 변수를 설정합니다.
볼륨: 로컬 디렉터리(./warehouse 및 ./notebooks)를 컨테이너 내부의 볼륨으로 마운트합니다.
ports: Spark UI 및 기타 서비스에 액세스하기 위해 컨테이너 포트를 호스트 포트에 매핑합니다.
2. 미니오 서비스:
minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]
image: MinIO 서비스에 대한 Docker 이미지를 지정합니다.
Container_name: 컨테이너에 특정 이름(MinIO)을 할당합니다.
환경: 루트 사용자 자격 증명을 포함하여 MinIO 구성을 위한 환경 변수를 설정합니다.
ports: MinIO UI에 액세스하기 위해 컨테이너 포트를 호스트 포트에 매핑합니다.
command: 특정 매개변수를 사용하여 MinIO 서버를 시작하는 명령을 지정합니다.
MinIO 서비스의 또 다른 측면은
mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
dependency_on: mc 서비스가 MinIO 서비스에 종속되도록 지정합니다.
image: mc 서비스에 대한 Docker 이미지를 지정합니다.
Container_name: 컨테이너에 특정 이름(mc)을 할당합니다.
환경: MinIO 클라이언트 구성을 위한 환경 변수를 설정합니다.
진입점: MinIO 클라이언트에 대한 설정 단계를 포함하여 컨테이너에 대한 진입점 명령을 정의합니다.
/usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
이 명령 시퀀스는 기본적으로 다음 작업을 수행합니다.
MinIO 서버에서 기존 웨어하우스 디렉터리와 해당 콘텐츠를 제거합니다.
Warehouse라는 새 버킷을 생성합니다.
창고 버킷의 액세스 정책을 공개로 설정합니다.
이 Docker Compose 파일은 Spark, PostgreSQL, MinIO용 서비스를 사용하여 다중 컨테이너 환경을 오케스트레이션합니다. 서비스를 함께 실행하는 데 필요한 종속성, 환경 변수 및 명령을 설정합니다. 이 서비스는 개체 스토리지 백엔드로 MinIO와 함께 Spark 및 Iceberg를 사용하여 데이터 처리를 위한 개발 환경을 만들기 위해 함께 작동합니다.
터미널 창에서 리포지토리의 tabular-spark-setup 디렉터리로 cd하고 다음 명령을 실행합니다.
docker-compose up
자격 증명 admin:password
사용하여 http://127.0.0.1:9001
에서 MinIO에 로그인하여 웨어하우스 버킷이 생성되었는지 확인하세요.
모든 컨테이너가 실행되면 http://localhost:8888
로 이동하여 Jupyter Notebook 서버에 액세스할 수 있습니다.
샘플 노트북 중 하나를 실행하고 http://127.0.0.1:9001
의 MinIO로 돌아가 데이터가 채워진 웨어하우스를 확인하세요.
Iceberg, Tabular 및 MinIO를 사용하여 최신 데이터레이크를 구축하는 방법에 대한 이 튜토리얼은 시작에 불과합니다. 이 강력한 트리오는 가능성의 세계로 향하는 문을 열어줍니다. 이러한 도구를 사용하면 구조화된 데이터와 구조화되지 않은 모든 데이터를 원활하게 통합하고 분석하여 숨겨진 패턴을 찾아내고 혁신을 촉진하는 데이터 기반 의사결정을 내릴 수 있습니다. 프로덕션에서 이 아키텍처의 효율성과 유연성을 활용하여 AI/ML 이니셔티브를 가속화하고 기계 학습 모델의 진정한 잠재력을 활용하여 획기적인 발견을 향한 경로를 가속화하세요. 다음 주소로 문의하세요.