Posts
Trino 느린 쿼리 분석과 성능 최적화
Trino 클러스터를 운영하다 보면 예상보다 느린 쿼리들을 마주하게 된다. 단순히 “쿼리가 느리다”는 것만으로는 문제를 해결할 수 없다. 정확한 원인을 파악하고 체계적으로 접근해야 한다.
정렬된 Parquet는 어떻게 Row Group을 스킵하는가
“정렬된 Parquet 파일이 성능이 좋다”는 말을 자주 들었다. Spark에서
orderBy()
후 저장하면 쿼리가 빨라진다는 건 알았지만, 도대체 어떻게 그게 가능한 건지 궁금했다.Trino 메모리 누수: Hadoop FileSystem Cache의 함정
Presto에서 Trino로 전환한 후 얼마 지나지 않아 예상치 못한 문제가 발생했다. 쿼리 요청이 증가하면서 워커 노드들이 메모리 부족(OOM)으로 인해 하나둘씩 셧다운되기 시작했고, 클러스터 전체가 불안정해지는 상황이 벌어진 것이다. 단순한 설정 문제일 것이라고 생각했지만, 문제의 근본 원인은 생각보다 훨씬 깊은 곳에 숨어있었다.
Spark saveAsTable() 동작 원리
Apache Spark에서
saveAsTable()
메소드는 DataFrame을 Hive 테이블로 저장하는 가장 일반적인 방법 중 하나다. 하지만 이 간단해 보이는 API 뒤에는 복잡한 메타데이터 관리와 파일 시스템 연산이 숨어있다. 특히 관리형 테이블(Managed Table)과 외부 테이블(External Table) 간의 변환 과정에서 예상치 못한 문제가 발생할 수 있다.Amazon EMR 6.12와 AWS Java SDK 충돌 문제
운영 중인 Spark 애플리케이션의 성능 향상과 보안 패치를 위해 Amazon EMR 클러스터를 6.2.0에서 6.12.0으로 업그레이드했다. 하지만 업그레이드 직후 예상치 못한 문제가 발생했다. 기존에 정상적으로 동작하던 Spark 애플리케이션이 Amazon Glue 카탈로그에서 메타데이터를 읽어오는 과정에서
NoSuchMethodError
를 발생시키며 실패하기 시작한 것이다.
subscribe via RSS