주요 컨텐츠로 이동

텅스텐이란 무엇일까요?

Tungsten 프로젝트는 스마트한 메모리 사용, 캐시 인식 알고리즘 및 코드 생성을 통해 Spark의 실행 엔진을 최적화하여 성능을 하드웨어 수준에 가깝게 끌어올립니다.

10 Personas Artificial Intelligence
데이터 + AI 기초Less than a minute

작성자: Databricks 팀

Summary

  • Tungsten이 Spark 실행 엔진의 메모리 및 CPU 효율성을 개선하여 Spark 애플리케이션의 최신 하드웨어 성능 한계에 더욱 근접하도록 하는 데 어떻게 집중하는지 알아보세요.
  • 명시적 메모리 관리, 캐시 인식 연산, 코드 생성 및 가상 함수 디스패치 감소를 포함한 Tungsten의 주요 이니셔티브에 대해 자세히 알아보세요.
  • CPU 레지스터에 중간 데이터 유지, 루프 언롤링 및 SIMD 지원과 같은 기술이 Spark SQL 및 DataFrame 워크로드에서 어떻게 상당한 속도 향상을 가져오는지 이해해 보세요.

Tungsten Project란 무엇입니까?

Tungsten은 Apache Spark의 실행 엔진에 변경 사항을 적용하여 메모리 및 CPU를 Spark 애플리케이션에 적합하게 효율성을 개선하는 데 중점을 두어 성능을 최신 하드웨어 한도에 더 가깝게 밀어붙이고자 추진한 엄브렐라 프로젝트의 코드명입니다.

5X 리더

Gartner®: Databricks 클라우드 데이터베이스 리더

Tungsten Project의 이니셔티브:

  • 메모리 관리와 이진수 처리: 애플리케이션 의미 체계를 활용하여 메모리를 명시적으로 관리하며 JVM 개체 모델과 가비지 수집의 오버헤드 제거
  • 캐시 인식형 연산: 메모리 계층 구조를 활용하는 알고리즘과 데이터 구조
  • 코드 생성: 코드 생성을 사용해 최신 컴파일러와 CPU 활용
  • 가상 함수 호출 제거: 이렇게 하면 CPU 호출을 여럿 줄일 수 있어 발송 횟수가 수십억 번에 달하는 경우 성능에 현저한 영향을 미치게 됩니다.
  • 메모리 대 CPU 레지스터 내 중간 데이터: Tungsten Phase 2에서는 중간 데이터를 CPU 레지스터에 배치합니다. 이렇게 하면 메모리에서가 아니라 CPU 레지스터에서 데이터를 가져와 주기 수가 엄청나게 줄어듭니다.
  • 루프 언롤링과 SIMD: Apache Spark의 실행 엔진을 최신 컴파일러와 CPU의 기능을 활용하여 복잡한 함수 호출 그래프 대신 간단한 for 루프를 효율적으로 컴파일하고 실행하도록 최적화합니다.

CPU 효율성에 중점을 둔 것은 Spark 워크로드가 IO와 네트워크 통신보다 CPU와 메모리 사용 때문에 병목 현상을 일으키는 경우가 많아졌다는 사실에 기인합니다. 이 추세는 빅데이터 워크로드 성능을 주제로 최근 실시한 리서치를 통해 확인되었습니다.

추가 자료

게시물을 놓치지 마세요

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