개요 Garbage Collection을 검색해보면 대부분의 글이 특정 GC(CMS, G1, Z 등)의 배경이 되는 이론(ex. Generational Collection Theory)이나, 알고리즘(ex. Mark-Sweep), 튜닝 등에 대한 내용을 다루고 있다. 그리고 해당 이론에 근거하여 Heap 메모리의 구조를 설명하다보니, Heap 영역을...
protobuf 2.5 빌드하기(Apple Silicon)
이 문제는 Apple Silicon(M1, M2, M3 등)에서만 발생합니다. Ubuntu나 Intel Mac에서는 발생하지 않을 수 있음을 유의하시기 바랍니다. Hadoop 3.2.2 버전을 빌드하려다보니, 아래와 같은 메시지가 발생하며 빌드에 실패하였다. [ERROR] Failed to execute goal org.apache.hado...
데이터 엔지니어를 위한 CMU Intro to Database Systems#2
Lecture #10: Sorting & Aggregation Algorithms 참고자료: Youtube - F2023 #10 - Sorting & Aggregation Algorithms (CMU Intro to Database Systems) Query Plan SQL문을 실행하면, DBMS는 쿼리를 Compile하여 Quer...
데이터 엔지니어를 위한 CMU Intro to Database Systems#1
들어가며 2014년 2학기에 데이터베이스 개론을 수강했던 기억이 있다. 당시에는 개념적인 것보다 실제 동작하는 프로그램에 RDBMS를 연동하여 결과를 얻어내는 것에 더 관심이 있었다. 그러나 몇년 간 데이터 엔지니어 업무를 수행하다보니, 최적화를 위해서는 엔진 내부에 대한 이해가 중요하다는 결론이 내려졌다. 내가 다루는 엔진이 대부분 분산 데이터베...
Trino Summit 2023 발표 회고
Trino Summit 2023 2023년 12월 13 ~ 14일(한국 기준 14 ~ 15일)에 Trino Summit 2023이 온라인에서 열렸다. Trino 블로그에도 Trino Summit 2023 nears with an awesome lineup에 “SK Telecom: Unstructured data analysis using polym...
ORC Spec을 보고 Reader/Writer를 구현해보기 - PostScript
개요 대부분의 오픈소스 ETL 프로젝트(Spark, Flink 등)들에서는 ORC, Parquet 등의 컬럼 기반 파일 포맷의 읽기/쓰기를 지원하며, 고수준 API를 통해 간단히 특정 포맷으로의 읽기/쓰기를 수행할 수 있다. -- ORC의 읽기 spark.read.orc("PATH_TO_READ").show(100, false) -- ORC의 쓰...
Java Object의 Memory Layout과 Trino의 Slice
Java Object의 Memory Layout Data structure alignment WORD CPU에서 어떤 작업을 하기 위해서는 메모리 영역의 데이터를 레지스터로 옮겨야 한다. 이 때 CPU가 레지스터로 데이터를 옮겨오는 단위를 WORD라고 한다. WORD의 크기는 CPU마다 다르다. 32bit CPU에서는 WORD의 크기가 3...
Apache Spark 3.0에서 도입된 Adaptive Query Execution 알아보기
이 글은 Adaptive Query Execution: Speeding up Spark SQL at Runtime을 참고하여 작성하였습니다. Adaptive Query Execution 아마 마이크 타이슨에 대해 아는 사람이라면 아래의 명언을 들어본 적이 있을 것이다. Everyone has a plan, until they get pun...
Apache Spark과 S3 Compatible Object Storage 연동 시 Custom Endpoint 이슈
Apache Spark과 S3 Compatible Object Storage 연동 시 Custom Endpoint 이슈 사내에서 개발하는 시스템에서 Apache Spark과 S3 Compatible Object Storage인 Ceph를 연동해야 할 일이 생겼다. Ceph는 S3 Compatible한 Gateway를 제공하기 때문에 Apache S...
Spark Structured Streaming의 MicroBatch 동작 원리 알아보기
이 글의 내용은 MicroBatchExecution - Stream Execution Engine of Micro-Batch Stream Processing을 참고하여 작성하였습니다. Spark Structured Streaming의 MicroBatch 동작 원리 알아보기 MicroBatch 기반의 Spark Structured Stream...