주요 컨텐츠로 이동

Photon 공개 미리보기 발표: Databricks 레이크하우스 플랫폼의 차세대 쿼리 엔진

photon-blog-og

Published: June 17, 2021

공지사항2 min read

Databricks Photon 이 이제 AWS 및 Azure에서 정식으로 제공됩니다.

오늘, Photon 이 공개 프리뷰로 제공된다는 기쁜 소식을 전해드립니다. Photon은 쿼리 성능을 획기적으로 개선하기 위해 C++로 개발된 네이티브 벡터화 엔진입니다. Photon의 이점을 누리기 위해서는 시스템을 켜기만 하면 됩니다. Phonton은 작업과 리소스를 원활하게 조정하고 SQL 및 Spark 쿼리의 일부를 투명한 방식으로 가속화합니다. 조정이나 사용자 개입이 필요하지 않습니다.


 <a href="https://www.databricks.com/resources/ebook/rise-data-lakehouse?itm_data=photonpublicpreviewengine-blog-riselakehousebook" target="_blank">데이터 웨어하우스의 아버지 빌 인몬과 함께 레이크하우스가 미래의 데이터 아키텍처인 이유를 알아보세요</a>.</p><hr><p>새로운 엔진은 궁극적으로 모든 워크로드를 가속화하도록 설계되었지만, 미리 보기 기간 동안 Photon은 워크로드당 총비용을 절감하면서 SQL 워크로드를 더 빠르게 실행하는 데 중점을 둡니다. Photon을 통해 얻을 수 있는 이점은 두 가지가 있습니다.</p><ul><li>추가 비용 없이 <a href="https://www.databricks.com/product/databricks-sql" rel="noopener" target="_blank">Databricks SQL</a> 에서 기본 쿼리 엔진으로</li><li>Databricks 클러스터의 새로운 고성능 <a href="https://docs.databricks.com/runtime/index.html" rel="noopener" target="_blank">런타임 </a>의 일부로, 비 Photon 런타임을 실행하는 동일한 인스턴스 유형과는 <a href="https://www.databricks.com/product/aws-pricing/instance-types" rel="noopener" target="_blank">다른 속도로 DBU를 소비 </a>합니다.</li></ul><p>이 블로그에서는 Photon을 구축하게 된 동기를 논의하고 Photon의 내부 작동 방식을 설명하며 Databricks SQL과 기존 Databricks Data Science &amp; Data 엔지니어링 클러스터 모두에서 Photon의 쿼리 실행을 모니터링하는 방법도 알아봅니다.</p><h2>Photon으로 더 빠르게</h2><p>왜 새로운 쿼리 엔진을 구축해야 하는지 궁금하실 것입니다. 백문이 불여일견이라는 말처럼, 막대 차트를 통해 데이터가 전하는 이야기를 들어보겠습니다.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-1.png" data-lightbox><img class="size-full wp-image-159095" style="width:1600px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-1.png" alt="TPC-DS 1TB를 사용하여 버전 2.1 대비 Photon이 적용된 Databricks Runtime의 상대적 속도 향상" height="803"></a><figcaption>이미지 1: TPC-DS 1TB를 사용한 버전 2.1 대비 Databricks Runtime의 상대적 속도 향상</figcaption></figure><p>TPC-DS 벤치마크(스케일 팩터 1TB)의 Power Test를 사용한 Databricks Runtime 성능 차트에서 볼 수 있듯이, 성능은 수년에 걸쳐 꾸준히 향상되었습니다. 그러나 Photon이 도입되면서 쿼리 성능이 비약적으로 향상되었습니다. Photon은 Databricks Runtime 8.0보다 최대 2배 더 빠릅니다. 이것이 바로 저희가 Photon의 잠재력에 대해 매우 기대하는 이유이며, 이제 막 시작했을 뿐입니다. Photon 로드맵에는 더 넓은 적용 범위와 더 많은 최적화 계획이 포함되어 있습니다.</p><p>초기 비공개 미리 보기 고객은 다음과 같은 SQL 워크로드에서 Photon을 사용하여 평균 2~4배의 속도 향상을 경험했습니다.</p><ul><li><strong>SQL 기반 작업</strong> - SQL 및 Spark DataFrame에서 대규모 프로덕션 작업을 가속화합니다.</li><li><strong>IoT 사용 사례</strong> - Spark 및 기존 Databricks Runtime에 비해 Photon을 사용한 더 빠른 시계열 분석.</li><li><strong>데이터 개인 정보 보호 및 규정 준수</strong> - Delta Lake, 프로덕션 작업 및 Photon을 사용하여 데이터를 중복시키지 않고 페타바이트 규모의 데이터세트를 쿼리하여 레코드를 식별하고 삭제합니다.</li><li><strong>Delta 및 Parquet으로 데이터 로드</strong> - Photon의 벡터화된 I/O는 Delta 및 Parquet 테이블의 데이터 로드 속도를 높여 데이터 엔지니어링 작업의 전체 런타임과 비용을 절감합니다.</li></ul><h2>Photon 작동 방식</h2><p>Photon은 C++로 작성되었지만 Databricks Runtime 및 Spark에 직접 통합됩니다. 이는 Photon을 사용하는 데 코드 변경이 필요하지 않다는 것을 의미합니다. Photon이 어디에 연결되는지 이해하는 데 도움이 되도록 간단한 "쿼리 수명 주기"를 안내해 드리겠습니다.</p><figure><a href="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-2.png" data-lightbox><img class="size-full wp-image-159097" style="width:1280px;" src="https://www.databricks.com/wp-content/uploads/2021/06/photon-pr-blog-img-2.png" alt="이미지 2 - Photon 쿼리의 수명 주기" height="720"></a><figcaption>이미지 2: Photon 쿼리의 수명 주기</figcaption></figure><p>클라이언트가 Spark driver에 지정된 query 또는 명령을 제출하면 파싱이 이루어지고, <a href="https://www.databricks.com/glossary/catalyst-optimizer" rel="noopener" target="_blank">Catalyst Optimizer</a> 는 Photon이 없는 경우와 마찬가지로 분석, 계획 및 최적화를 수행합니다. 한 가지 차이점은 Photon의 경우 런타임 엔진이 물리적 계획을 검토하여 Photon에서 실행할 수 있는 부분을 결정한다는 것입니다. Photon 계획에 대해 정렬 병합 조인을 해시 조인으로 변경하는 등 일부 수정이 적용될 수 있지만, 조인 순서를 포함한 계획의 전반적인 구조는 동일하게 유지됩니다. Photon은 아직 Spark가 지원하는 모든 기능을 지원하지 않으므로 단일 쿼리가 Photon과 Spark에서 부분적으로 실행될 수 있습니다. 이 하이브리드 실행 모델은 사용자에게 완전히 투명합니다.</p><p>그런 다음 쿼리 계획은 태스크라고 하는 분산 실행의 원자 단위로 분할됩니다. 이 태스크는 작업자 노드의 스레드에서 실행되며 데이터의 특정 파티션에서 작동합니다. Photon 엔진이 작동하는 수준이 바로 이 수준입니다. Spark의 전체 단계 코드 생성을 네이티브 엔진 구현으로 대체하는 것으로 생각할 수 있습니다. Photon 라이브러리는 JVM에 로드되며, Spark와 Photon은 <a href="https://en.wikipedia.org/wiki/Java_Native_Interface" rel="noopener" target="_blank">JNI</a>를 통해 통신하여 오프힙 메모리에 데이터 포인터를 전달합니다. 또한 Photon은 혼합 계획에서 스필링을 조정하기 위해 Spark의 메모리 관리자와 통합됩니다. Spark와 Photon은 모두 오프힙 메모리를 사용하도록 구성되며 메모리 압박 하에서 조정됩니다.</p><p>공개 미리 보기 릴리스의 Photon은 많은 데이터 유형, 연산자 및 표현식을 지원하지만 전부는 아닙니다. 자세한 내용은 설명서의 <a href="https://docs.databricks.com/runtime/photon.html" rel="noopener" target="_blank">Photon 개요</a> 를 참조하세요.</p>

Photon 실행 분석

현재 모든 워크로드와 연산자가 지원되는 것은 아니므로 Photon의 이점을 누릴 수 있는 워크로드를 선택하는 방법과 실행 계획에서 Photon의 존재를 감지하는 방법에 대해 궁금해하실 수 있습니다. 요약하면 Photon 실행은 상향식입니다. 테이블 스캔 연산자에서 시작하여 지원되지 않는 연산을 만날 때까지 DAG(방향성 비순환 그래프)를 따라 위로 계속됩니다. 그 시점에서 실행은 Photon을 벗어나고 나머지 운영은 Photon 없이 실행됩니다.

  1. Databricks SQL에서 Photon을 사용하는 경우 쿼리의 얼마만큼이 Photon을 사용하여 실행되었는지 쉽게 확인할 수 있습니다.

     

  2. 사이드바에서 쿼리 기록 아이콘을 클릭하세요.
  3. 분석하려는 쿼리가 포함된 줄을 클릭하세요.
  4. 쿼리 세부 정보 팝업에서 실행 세부 정보를 클릭하세요.
  5. 하단에 있는 Photon의 작업 시간 메트릭을 보세요.

일반적으로 Photon에서 작업 시간의 비율이 클수록 Photon으로 인한 성능 이점이 커집니다.

Databricks SQL 쿼리 기록 실행 세부정보
이미지 3: Databricks SQL 쿼리 기록 실행 세부 정보

Databricks 클러스터에서 Photon을 사용하는 경우 Spark UI에서 Photon 작업을 볼 수 있습니다. 다음 스크린샷은 쿼리 세부 정보 DAG를 보여줍니다. DAG에는 Photon에 대한 두 가지 표시가 있습니다. 첫째, Photon 연산자는 PhotonGroupingAgg와 같이 Photon으로 시작됩니다. 두 번째로, DAG에서 Photon 연산자와 스테이지는 복숭아색으로 표시되는 반면 Photon이 아닌 것은 파란색입니다.

Spark UI 쿼리 세부 정보 DAG
이미지 4: Spark UI 쿼리 세부 정보 DAG

NYC 택시 데이터 작동 예제로 시작하기

위에서 설명한 것처럼 Photon을 사용하는 방법에는 두 가지가 있습니다.

  1. Photon은 모든 Databricks SQL 엔드포인트에서 기본적으로 켜져 있습니다. SQL 엔드포인트를 프로비저닝하고 쿼리를 실행한 다음, 위에 제시된 방법을 사용하여 Photon이 성능에 얼마나 영향을 미치는지 확인하세요.
  2. Databricks 클러스터에서 Photon을 실행하려면(퍼블릭 프리뷰 기간 동안 AWS만 해당) 새 클러스터를 프로비저닝할 때 Photon 런타임을 선택하세요. 새로운 Photon 인스턴스 유형은 비-Photon 런타임을 실행하는 동일한 인스턴스 유형 과는 다른 속도로 DBU를 사용합니다. Photon 인스턴스 및 DBU 사용량에 대한 자세한 내용은 AWS용 Databricks 가격 책정 페이지를 참조하세요.

Photon을 사용하는 SQL endpoint 또는 클러스터를 생성한 후 Databricks SQL 편집기나 노트북에서 NYC Taxi 데이터세트 에 대해 몇 가지 query를 실행해 볼 수 있습니다. 발췌본을 미리 로드하여 Databricks 데이터세트의 일부로 액세스할 수 있도록 했습니다.

먼저 다음 SQL 스니펫을 사용하여 기존 데이터를 가리키는 새 테이블을 만듭니다.

이 쿼리를 사용해 보고 Photon의 속도를 경험해 보세요!

2개의 i3.2xlarge 실행기와 i3.2xlarge 드라이버를 갖춘 웜업된 AWS 클러스터에서 Photon 및 기존 Databricks Runtime을 사용하여 위 query의 응답 시간을 측정했습니다. 결과는 다음과 같습니다.

 NYC 택시 예제 쿼리에서의 Photon과 Databricks Runtime 비교
이미지 5: NYC 택시 예제 쿼리에서의 Photon과 Databricks Runtime 비교

Photon에 대해 더 자세히 알아보려면 데이터 및 AI 서밋 세션인 Radical speed for SQL Queries Photon Under the Hood를 시청할 수도 있습니다. 읽어 주셔서 감사합니다. 이에 대한 피드백을 기다리겠습니다!

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요

다음은 무엇인가요?

db-151-og

데이터 웨어하우징

April 1, 2024/1분 이내 소요

Johnson & Johnson의 SCM 최적화를 위한 데이터 민주화

Optimizing joins with primary key constraints

데이터 웨어하우징

August 12, 2024/2분 소요

기본 키와 외래 키 제약 조건이 정식 출시(GA)되어 더 빠른 쿼리를 가능하게 합니다