우리 중 많은 사람들이 나중에 발전하는 요구 사항에 따라 데이터를 변경했습니다. 우리가 그것을 깨닫는 순간에는 롤백이 불가능해집니다. 변화는 단지 상수가 아닙니다. 이는 정교한 접근 방식이 필요한 데이터 관리의 필수적인 부분입니다. Dremio의 데이터 카탈로그 Nessie의 Git과 유사한 기능을 입력하세요.
Git이 소프트웨어 개발의 기본이 된 것처럼 데이터 엔지니어에게는 병렬 작업, 데이터 버전 비교, 프로덕션 변경 사항 촉진, 필요할 때 데이터 롤백을 위한 유사한 도구가 필요합니다. Nessie는 데이터 버전, 분기, 병합 및 커밋을 관리하기 위한 Git과 유사한 버전 제어 시스템을 데이터 엔지니어에게 제공합니다. 이는 여러 데이터 엔지니어가 동시에 데이터를 작업하고 변환할 때 매우 유용할 수 있습니다. Nessie는 각 엔지니어가 메인 브랜치 형태로 단일 정보 소스를 유지하면서 별도의 브랜치에서 작업할 수 있도록 해줍니다. 이 기능을 통해 데이터 엔지니어링 팀은 끊임없는 변화에 직면하여 공동으로 데이터 품질을 유지할 수 있습니다.
이 문서에서는 Nessie, Dremio 및 MinIO가 어떻게 협력하여 데이터 엔지니어링 워크플로에서 데이터 품질과 협업을 향상하는지 보여주는 단계별 가이드를 제공합니다. 데이터 엔지니어, ML 엔지니어 또는 최신 데이터 레이크 매니아인지 여부에 관계없이 이 블로그는 데이터 버전 관리 방식을 효과적으로 향상하는 데 필요한 지식과 도구를 제공합니다.
Nessie는 테스트, 개발 및 프로덕션 환경으로 푸시할 수 있는 Git과 유사한 워크로드를 허용합니다. 몇 가지 주요 개념을 분석해 보겠습니다.
분기: Git과 마찬가지로 Nessie의 분기를 사용하면 다양한 데이터 엔지니어링 작업을 동시에 수행할 수 있습니다. 예를 들어 기능 개발, 데이터 정리 및 데이터 변환을 위한 분기가 있을 수 있습니다. 각 분기에는 고유한 데이터 변경 세트가 있을 수 있습니다.
커밋: Nessie에서 커밋은 특정 시점의 데이터 스냅샷을 나타냅니다. 데이터를 변경할 때 해당 변경 사항을 기록하는 새 커밋을 생성합니다. 커밋은 특정 분기에 연결됩니다. 데이터를 안정적이거나 알려진 양호한 상태로 되돌려야 할 때 Nessie를 사용하면 쉽게 특정 커밋을 선택하고 해당 데이터 버전으로 롤백할 수 있습니다. 이는 데이터 품질과 일관성을 보장합니다.
병합 : Nessie를 사용하면 한 분기의 변경 사항을 다른 분기로 병합할 수 있습니다. 이는 Git의 코드 변경 사항을 병합하는 것과 유사합니다. 분기를 병합하면 해당 분기에서 변경된 데이터가 대상 분기의 일부가 됩니다.
Dremio 는 오픈 소스 플랫폼으로 작동하는 분산 분석 엔진으로, 데이터 탐색, 변환 및 협업을 위한 직관적인 셀프 서비스 인터페이스를 제공합니다. 그 디자인은 다음 사항에 기반을 두고 있습니다.
우리는 이미 Kubernetes와 함께 Dremio를 배포하는 방법과
MinIO 는 고성능 객체 스토리지입니다. 뛰어난 것으로 유명함
당신은
튜토리얼의 이 부분은 Dremio의
시작하려면 터미널을 열고 리포지토리를 복제/다운로드한 폴더로 이동한 후 아래 명령을 실행하여 Dremio를 시작하세요.
docker-compose up dremio
잠시 기다린 후 http://localhost:9047
로 이동하여 Dremio에 액세스하세요. 요청된 필드를 업데이트하고 다음을 클릭합니다.
그런 다음 다음 명령을 실행하여 MinIO를 시작합니다.
docker-compose up minio
아래의 최종 docker-compose up
명령은 Nessie를 시작합니다.
docker-compose up nessie
http://localhost:9001
로 이동하여 minioadmin:minioadmin
의 사용자 이름과 비밀번호로 MinIO에 로그인하세요. 버킷을 생성하라는 메시지가 표시됩니다.
iceberg-datalake
라는 이름을 만드세요.
그런 다음 Dremio http://localhost:9047
로 돌아가 소스 추가를 클릭하고 Nessie를 선택하세요.
nessie
로 설정하세요.http://nessie:19120/api/v2
로 설정합니다.none
으로 설정
아직 저장을 클릭하지 마세요. 대신 왼쪽 탐색 패널에서 스토리지를 클릭하세요. MinIO는 S3-API 호환 객체 스토리지이며 AWS S3와 동일한 연결 경로를 사용할 수 있습니다.
minioadmin
설정하세요.minioadmin
설정하세요./iceberg-datalake
로 설정
다음 지침을 보려면 아래로 스크롤하세요.
Connection Properties
아래 Add Property
버튼을 클릭하여 다음 속성을 생성하고 구성합니다.fs.s3a.path.style.access
true
로 설정minio:9000
에 대한 fs.s3a.endpoint
dremio.s3.compat
true
로 설정Encrypt connection
선택 취소하세요.
그런 다음 저장을 클릭합니다. 이제 데이터 소스에 Nessie 카탈로그가 표시됩니다.
Dremio에서 왼쪽의 SQL Runner로 이동합니다. 텍스트 편집기의 오른쪽 상단 영역에 있는 Context
Nessie 소스로 설정되어 있는지 확인하세요. 그렇지 않으면 이 쿼리를 실행하려면 SalesData
대신 nessie.SalesData
와 같은 컨텍스트를 참조해야 합니다. 아래 SQL을 복사해서 붙여넣고 실행해 보세요.
CREATE TABLE SalesData ( id INT, product_name VARCHAR, sales_amount DECIMAL, transaction_date DATE ) PARTITION BY (transaction_date);
방금 만든 테이블에 데이터를 삽입하려면 아래 쿼리를 실행하세요.
INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES (1, 'ProductA', 1500.00, '2023-10-15'), (2, 'ProductB', 2000.00, '2023-10-15'), (3, 'ProductA', 1200.00, '2023-10-16'), (4, 'ProductC', 1800.00, '2023-10-16'), (5, 'ProductB', 2200.00, '2023-10-17');
MinIO로 다시 이동하여 데이터 레이크가 Iceberg 테이블로 채워졌는지 확인하세요.
http://localhost:9047
에서 Dremio로 돌아갑니다. AT BRANCH
구문을 사용하여 기본 분기의 테이블을 쿼리하는 것으로 시작합니다.
SELECT * FROM nessie.SalesData AT BRANCH main;
프로덕션에 영향을 주지 않고 데이터를 가지고 놀고 변환할 수 있도록 ETL(Extract Transform and Load) 브랜치를 생성합니다.
CREATE BRANCH etl_06092023 in nessie
ETL 분기 내에서 테이블에 새 데이터를 삽입합니다.
USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');
ETL 분기 내에서 새 데이터의 즉각적인 가용성을 확인합니다.
SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;
기본 분기의 사용자로부터 변경 사항이 격리된다는 점에 유의하세요.
SELECT * FROM nessie.SalesData AT BRANCH main;
ETL 분기의 변경 사항을 기본 분기에 다시 병합합니다.
MERGE BRANCH etl_06092023 INTO main in nessie;
변경 사항이 실제로 병합되었는지 확인하려면 기본 분기를 다시 선택하세요.
SELECT * FROM nessie.SalesData AT BRANCH main
이 분기 전략을 통해 데이터 엔지니어는 여러 테이블에 걸쳐 수많은 트랜잭션을 독립적으로 처리할 수 있습니다. 준비가 되면 데이터 엔지니어는 이러한 트랜잭션을 기본 분기 내의 포괄적인 단일 다중 테이블 트랜잭션으로 병합할 수 있습니다.
이 블로그 게시물은 데이터 엔지니어링에서 Git과 같은 버전 제어의 힘을 자세히 살펴보며
귀하의 데이터 레이크하우스가 어떤 모습인지 알려주세요.
여기에도 나타납니다.