[DP-203] Data Storage : Partitioning in Azure Data Lake

Becoming a Data Engineer ·2023년 12월 31일
0

Azure

목록 보기
9/27

Partitioning in Azure Data Lake


How Partitioning Works

  • Blob 및 ADLS 의 Partition Keythe full blob name (account + container + blob) 이다.

    https://[account].dfs.core.windows.net/[container]/[blob]

    예를 들어, 데이터 레이크 계정 이름이 acdatalake 이고 랜딩 존을 위한 컨테이너는 이름은 landing, 실제 파일인 blob이 file.parquet 이라면 아래와 파티션 키는 아래와 같다.

    https://acdatalake.dfs.core.windows.net/landing/file.parquet

    파티셔닝에서 "파티션 키"

    데이터를 파티션으로 나누기 위한 기준이 되는 열(또는 여러 열) 을 나타낸다. 이 키를 기반으로 데이터가 여러 부분으로 나뉘어 저장된다. 파티션 키는 데이터를 어떻게 분할할지 결정하며, 이는 데이터의 효율적인 관리와 쿼리 성능을 향상시키는 데 중요한 역할을 한다.

  • Range-Based Partitioning 을 사용한다.
    데이터는 범위(range)로 분할되며 이는 storage system 전체에 로드 밸런싱된다.
    부하가 일정 수준까지 증가하면 데이터는 더 작은 범위로 분할된다.

Performance(성능) 고려사항


The naming convention will greatly affect how data is partitoned.
그리고 최상의 성능과 관리상의 고민을 줄이기 위해서, keep partiotion size smaller and prune.

  • 이름을 신중하게 지어야 한다. (~ Partition Key)

    • Naming conventionaccount, container 그리고 blob 자체를 모두 포함한다.
      따라서, Naming convention 은 파티션을 어떻게 나누는지에 큰 영향을 미친다.
    • 숫자나 타임스탬프 식별자를 사용하는 경우에는 주의해야 한다.
      조심하지 않으면 모든 것을 한 버킷에 넣을 수 있다. 예를 들어, 오늘 날짜를 사용하거나 특정 ID를 사용한다면 그 버킷에 많은 양의 record를 dump 할 수 있다.
  • Parallel Operations, 병렬 작업이 가능하도록 설계한다.
    동시에 발생할 수 있는 read 와 write 가 많을 수록 더 좋다. 작업이 병렬로 진행될 수 있도록 파티셔닝을 설계해야 한다.

  • 불필요한 데이터를 Pruning
    Pruning data는 어플리케이션이 작은 양의 데이터를 처리할 때,
    불필요한 데이터를 더 적은 양의 공간을 차지하도록 제거하거나 줄이는 것을 의미한다.

    대부분 날짜에 기반하여 결정되지만, 언제 시스템에서 데이터를 정리할 수 있는지 고려해야 한다.

  • 파티션 크기를 작게 유지하면 쿼리 응답 시간이 줄어든다.

Scalability(확장성) 고려사항


  • 각 파티션의 크기와 작업량을 균형있게 관리한다.
  • 단일 파티션 저장소에 대한 Azure Infra의 제한을 초과하지 않도록 한다.
  • 분배가 적절하게 이루어지고 있는지 F/U

Availability(가용성) 고려사항


  • 파티션 별로 우선순위를 정한다.
    파티션의 중요도에 따라 가용성(availability) 및 백업 계획을 적용한다.
  • 유지보수 시간
    유지보수를 위해 파티션을 오프라인으로 전환하는 적절한 시기를 알고, 유지보수가 계획된 시간 내에 완료될 수 있도록 파티션 크기를 작게 유지한다.

    파티션을 오프라인으로 전환한다는 것은,

    특정 파티션(데이터의 물리적 또는 논리적 분할)을 일시적으로 액세스 불가능하게 만드는 것을 의미한다. 이는 유지보스, 데이터 마이그레이션, 스키마 변경 등 다양한 이유로 필요할 수 있다. 예를 들어, 특정 데이터 세트의 스키마를 변경하거나, 데이터를 정리하거나, 특정 데이터를 다른 포맷으로 변환하는 작업 등이 이에 해당할 수 있다.

Review


  • The naming convention you use will greatly affect how data is partitioned.
    계정, 컨테이너 그리고 blob 의 이름이 파티션 키가 되고, 범위 기반 시스템에서 파티션을 어떻게 나누는지에 영향을 미치기 때문이다.
  • Keep partiton size smaller and prune.
  • Know your data well in order to plan partitions well, and monitor after to verity success.
profile
I want to improve more 👩🏻‍💻

0개의 댓글

관련 채용 정보