paint-brush
Iceberg, Tabular 및 MinIO를 사용하여 효과적인 최신 데이터 아키텍처 구축~에 의해@minio
7,928 판독값
7,928 판독값

Iceberg, Tabular 및 MinIO를 사용하여 효과적인 최신 데이터 아키텍처 구축

~에 의해 MinIO7m2024/04/17
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

최신 데이터레이크는 모든 데이터 요구 사항에 맞는 중앙 허브를 제공합니다. 그러나 효과적인 데이터 레이크를 구축하고 관리하는 것은 복잡할 수 있습니다.
featured image - Iceberg, Tabular 및 MinIO를 사용하여 효과적인 최신 데이터 아키텍처 구축
MinIO HackerNoon profile picture
0-item
1-item


현대의 데이터 환경에는 정형 데이터와 비정형 데이터를 원활하게 통합하고 손쉽게 확장하며 효율적인 AI/ML 워크로드를 지원하는 새로운 종류의 인프라가 필요합니다. 이곳은 최신 데이터레이크 모든 데이터 요구 사항에 맞는 중앙 허브를 제공합니다. 그러나 효과적인 데이터 레이크를 구축하고 관리하는 것은 복잡할 수 있습니다.


이 블로그 게시물에서는 현재 접근 방식을 최적화할 수 있는 세 가지 강력한 도구에 대해 자세히 설명합니다. 아파치 빙산 , 표의, 그리고 미니IO. 아래 단계에서는 이러한 서비스가 원활하게 결합되어 AI/ML 워크로드에 특별히 최적화된 강력한 클라우드 기반 데이터 레이크 아키텍처를 생성하는 방법을 안내합니다.

테이블 형식이란 무엇입니까?

Tabular는 Apache Iceberg의 최초 제작자가 만든 데이터 플랫폼입니다. 이는 모든 컴퓨팅 계층에 연결되어 데이터 공급업체 종속을 제거하는 독립적인 범용 스토리지 플랫폼을 제공하도록 설계되었습니다. 이 기능은 최신 데이터 스택에 매우 중요합니다. 이를 통해 사용자는 특정 공급업체의 오래되거나 일치하지 않는 도구 세트를 강요받지 않고 동급 최고의 컴퓨팅 및 스토리지 도구를 선택할 수 있습니다.


건축학 MinIO 및 Iceberg의 기능을 갖추고 있으며 Tabular를 통해 향상될 수 있습니다. Tabular를 사용하면 MinIO에 저장된 Iceberg 데이터를 관리하고 쿼리할 수 있으므로 확장 가능한 고성능 클라우드 기반 방식으로 구조화된 데이터를 저장하고 관리할 수 있습니다. 이러한 Kubernetes 기본 구성 요소는 마찰이 거의 없이 원활하게 함께 작동하며 규모에 맞게 수행할 수 있는 서로의 기능을 기반으로 구축됩니다.

Hadoop의 file-io 대신 S3FileIO를 사용하는 이유는 무엇입니까?

이 구현은 Iceberg의 S3FileIO를 활용합니다. S3FileIO는 여러 가지 이유로 Hadoop의 file-io보다 더 나은 것으로 간주됩니다. 그 중 일부는 이미 논의한 바 있습니다. 다른 곳에서 :


  1. 클라우드 스토리지에 최적화됨 : Iceberg의 S3FileIO는 클라우드 네이티브 스토리지와 작동하도록 설계되었습니다.


  2. 향상된 처리량 및 최소화된 조절: Iceberg는 ObjectStoreLocationProvider MinIO 버킷의 여러 접두사에 파일을 배포하여 조절을 최소화하고 S3 관련 IO 작업의 처리량을 최대화하는 데 도움이 됩니다.


  3. 엄격한 일관성: Iceberg는 업데이트됨 성능에 영향을 미칠 수 있는 중복 일관성 검사를 제거하여 엄격한 일관성을 최대한 활용합니다.


  4. 점진적 멀티파트 업로드: Iceberg의 S3FileIO는 점진적 멀티파트 업로드 각 부분이 준비되는 즉시 데이터 파일 부분을 병렬로 업로드하여 로컬 디스크 사용량을 줄이고 업로드 속도를 높이는 알고리즘입니다.


  5. 체크섬 확인: Iceberg는 다음을 허용합니다. 체크섬 검증 S3 API 쓰기의 경우 업로드된 객체의 무결성을 보장하며 이는 적절한 카탈로그 속성을 설정하여 활성화할 수 있습니다.


  6. 맞춤 태그: Iceberg는 추가를 지원합니다. 맞춤 태그 S3 API를 사용하여 쓰기 및 삭제 작업 중에 객체에 저장합니다. 이는 비용 추적 및 관리에 유용할 수 있습니다.


  7. 네거티브 캐싱 방지: Iceberg의 FileIO 인터페이스는 Hadoop 호환 FileSystem만큼 엄격한 보장을 요구하지 않습니다. 네거티브 캐싱 방지 그렇지 않으면 성능이 저하될 수 있습니다.


이와 대조적으로 S3FileIO 이전에 사용되었던 Hadoop의 S3A FileSystem은 클라우드 스토리지에 대해 동일한 수준의 최적화를 제공하지 않습니다. 이 모든 말은 다음과 같습니다. 과거의 덫으로 미래를 향한 데이터 레이크 인프라를 방해하지 마십시오.

전제조건

시작하기 전에 시스템이 다음 요구 사항을 충족하는지 확인하십시오.

처음부터 시작하는 경우 다음을 사용하여 둘 다 설치할 수 있습니다. 도커 데스크탑 특정 플랫폼용 설치 프로그램입니다. Docker와 Docker Compose를 별도로 다운로드하는 것보다 더 쉬운 경우가 많습니다. 다음 명령을 실행하여 Docker가 설치되어 있는지 확인합니다.


 docker-compose --version


시작하기

시작하려면 Tabular의 YAML 파일을 복제하거나 복사하세요. Git 저장소 . 이 튜토리얼에는 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 , 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 이니셔티브를 가속화하고 기계 학습 모델의 진정한 잠재력을 활용하여 획기적인 발견을 향한 경로를 가속화하세요. 다음 주소로 문의하세요. [email protected] 아니면 우리의 느슨하게 빌드하면서 궁금한 점이 있으면 채널을 이용해 주세요.