일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MySQL
- 데이터 엔지니어링
- 데이터 엔지니어
- 에어플로우
- delta lake
- spark streaming
- 대용량 처리
- 카프카
- s3
- Zookeeper
- kafka rest api
- 카프카 구축
- kafka
- 레드시프트
- spark
- airflow
- 스파크 스트리밍
- Parquet
- Redshift
- 스파크
- 데이터
- Schema Registry
- Data Engineer
- 컬럼 기반
- AWS
- 델타레이크
- Data Warehouse
- Data engineering
- 데이터 웨어하우스
- docker
- Today
- Total
목록데이터 엔지니어링 (30)
데이터 엔지니어 기술 블로그
운영 시스템은 트랜잭션을 신속히 처리하는데 최적화되어있습니다. 데이터 웨어하우스는 신규 고객을 집계하고 월별 GMV를 비교하는 등의 요구사항을 처리할 수 있어야 합니다. 그러기 위해서는 운영 시스템과는 다른 구조가 필요하며 이를 다차원 모델링으로 해결합니다. 데이터 웨어하우스를 활용하는 사람들은 현업에 있는 다양한 직업을 가진 사람들입니다. 그래서 구축을 할 때는 기술보다 비즈니스 이슈를 중심으로 생각해야 합니다. 데이터 웨어하우스 구축을 위한 요구사항은 다음과 같습니다. 정보에 쉽게 접근 가능하도록 만들어야 한다. 의사결정을 위해 신뢰할 수 있는 토대가 되어야 하며 일관된 정보를 제공해야 한다. (데이터 신뢰성) 시스템 변화에 유연해야 한다. 정보를 적시에 제공해야 한다. (데이터 최신성) 현업에서 사..
(Data lakehouse in action의 1, 2장을 요약한 글입니다.) Data Lakehouse in Action - 저자 Pradeep Menon 출판 Packt Publishing 출판일 2022.03.17 1. 데이터 분석 패턴의 진화 엔터프라이즈 데이터 웨어하우스(EDW) 시대 EDW 시대가 시작된 배경은 다음과 같았습니다. 분석은 리포팅과 같은 말이었습니다. 데이터베이스 구조를 리포팅하는데 최적화하는 것이 최우선 목표였습니다. Ralph Kimball, Bill Inmon에 의해 1990, 2000년대에 활성화되었습니다. EDW의 패턴은 다음과 같았습니다. Flat Files, Databases -> ETL -> EDW -> Data Marts -> BI EDW는 오랜 시간동안 자리를..
Delta Lake는 데이터 레이크 위에 Lakehouse 아키텍처를 구축할 수 있는 오픈소스 프로젝트이다. 데이터 레이크의 문제점과 데이터 웨어하우스의 문제점을 보완해줄 수 있다. 데이터 레이크는 아주 큰 데이터를 저장할 수 있지만 체계가 정확하게 잡히지 않으면 데이터 늪이 되기가 쉽다. S3와 같은 클라우드 스토리지는 가장 비용 효율적인 스토리지 시스템이다. 그러나 key-value로 구현이 되어있어서 ACID 트랜잭션과 같은 고성능을 구현하기는 어렵다. listing object와 같은 메타데이터 동작은 비싸며 일관성 보장은 제한적이다. 델타레이크는 이런 문제점을 보완할 수 있다. ACID 성질을 가질 수 있게 하여 트랜잭션을 구현하며, 테이블에서의 시간 여행을 가능하게 한다. upsert를 구현할..
About 트리노는 빅데이터를 쿼리하기 위한 분산 SQL 쿼리 엔진이다. 기존에는 HDFS를 쿼리하도록 설계되었지만 지금은 그것에만 국한되지 않는다. Trino라는 이름은 Presto라는 이름을 리브랜딩 한 것으로 같은 쿼리 엔진이다. 트리노는 범용 데이터베이스가 아니기 때문에 MySQL과 같이 OLTP(Online Transaction Processing)가 아닌 OLAP(Online Analytics Processing)로 설계되었다. Concepts Server types 트리노는 두 가지의 서버 타입이 있다. 하나는 Coordinator로 다른 하나는 Worker이다. 이름과 같이 Coordinator는 구문 분석, 쿼리 계획, 작업자 노드 관리와 같은 일을 하고 Worker는 실제 작업을 실행하..
개발 동기 우리는 어떤 하둡 에코시스템에도 사용할 수 있고 압축과 컬럼 기반 데이터 표현의 이점을 만들기 위해 Parquet를 개발했습니다. Parquet는 처음부터 중첩된(nested) 데이터 구조를 위해 개발되었으며, Dremel의 논문에 작성된 record shredding and assembly algorithm을 사용합니다. 우리는 이 접근 방식이 중첩된 name space를 단순하게 붙이는 것보다 좋다고 믿고 있습니다. https://github.com/julienledem/redelm/wiki/The-striping-and-assembly-algorithms-from-the-Dremel-paper Parquet는 효율적인 압축과 인코딩 체계를 지원하도록 개발되었습니다. 여러 프로젝트에서 데이..
개요 아파치 쓰리프트는 페이스북에서 서로 다른 언어간의 통신을 위하여 개발되었다. 원격 프로시저 호출(Remote Procedure Call)로 언어에 상관 없이 서로 통신할 수 있도록 도와준다. 예를 들면 PHP에서 작성한 기능을 파이썬과 Go언어에서 자유롭게 호출해서 사용할 수 있다. 단순히 하나의 함수 호출이 아니라, REST API 서버처럼 자유롭게 개발을 할 수 있다. thrift와 호환되는 언어들은 모두 비슷하지만 각자 다른 인터페이스 정의 규칙을 가지고 있다. 아파치 쓰리프트에서는 .thrift 파일에 변수의 타입과 이름 그리고 함수의 매개변수, 반환값과 예외 등의 정의를 하고, thrift를 사용하여 옵션으로 변환하려는 언어를 적어주면 .thrift 파일에 입력된 정의로 각 언어에 맞게 코..
에러 메세지 java.lang.AssertionError: assertion failed: Concurrent update to the log. Multiple streaming jobs detected for 53 at scala.Predef$.assert(Predef.scala:223) 원인 로그에 대한 동시 업데이트, 여러 스트리밍 작업이 발견되었습니다. 스파크 스트리밍에서 동일한 체크포인트를 사용하는 두 개의 싱크 작업(writeStream)이 동시에 실행되면 발생하는 문제이다. checkpointLocation을 다른 위치로 사용하면 해결할 수 있다. Zeppelin에서 코드를 실행하고 같은 스트리밍 스크립트를 사용할 때 오류가 발생할 수 있다. 기존 같은 location을 사용한다. 동시에 같..
About 세 가지 위치에서 스파크 설정을 할 수 있다. Spark properties: SparkConf 객체 사용, Java system properties 사용 val conf = new SparkConf() .setMaster("local[2]") .setAppName("CountingSheep") val sc = new SparkContext(conf) Environment variables: conf/spark-env.sh 환경 변수를 통하여 시스템별 설정 가능 # Options read when launching programs locally with # ./bin/run-example or ./bin/spark-submit # - HADOOP_CONF_DIR, to point Spark t..
카카오의 카프카 적용 사례 RUBICS 출처: https://kakao.github.io/2016/04/27/rubics/ 루빅스는 카카오의 추천 시스템이다. 2015년에 뉴스 기사를 추천하는 서비스에서 사용이되었으며 현재는 카카오 채널 등 다양한 콘텐츠에서 루빅스의 추천시스템을 사용하고 있다. 뉴스 서비스는 다른 콘텐츠에 비해서 생명주기가 짧기 때문에 사용자의 반응을 최대한 빠르게 수집 및 처리하여 추천 랭킹에 반영해야 한다. 실시간 데이터 처리 메시지큐: 카카오에서는 카프카가 데이터 손실을 방지해 줄 수 있으며 안정적이기 때문에 메시지큐로 사용했다. 데이터 스트림 처리기: 추천 랭킹을 위한 기계 학습에서 사용되며 Apache Spark Streaming을 사용하고 있다. 개발팀 내에 스칼라 언어에 익..
개요 데이터를 수집하고 가공하고 제공을 하기 위해서 보통 아주 많은 양의 데이터들을 다루게 된다. 파일을 저장할 때 압축을 하지 않는다면 파일의 크기가 커지는 동시에 비용도 증가하게 된다. 이것을 줄이기 위해서 보통은 압축을 해서 저장을 하게 된다. 저장하는 방식에는 여러가지가 있는데 이번에는 각 압축 방식마다 어떤 특징이 있는지 알아보려고 한다. 압축 방식들 gzip GNU zip의 줄임말이며 초기 유닉스 시스템에 쓰이던 압축 프로그램을 대체하기 위해 만들어졌다. 1992년 10월 31일에 처음 공개되었다. 무손실 압축 데이터 알고리즘(DEFLATE)을 사용한다. 파일 형식 중에 하나인 타르(tar)와 함께 .tar.gz 형식으로 자주 사용된다. 이 경우 다른 파일끼리 중복되는 부분을 압축시킬 수 있다..