일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Schema Registry
- MySQL
- 스파크 스트리밍
- airflow
- 컬럼 기반
- 대용량 처리
- 데이터
- 데이터 웨어하우스
- Data engineering
- spark streaming
- Zookeeper
- docker
- Data Warehouse
- 레드시프트
- delta lake
- 에어플로우
- 데이터 엔지니어
- kafka rest api
- Parquet
- Redshift
- 스파크
- s3
- 데이터 엔지니어링
- kafka
- Data Engineer
- spark
- 카프카
- AWS
- 카프카 구축
- 델타레이크
- Today
- Total
목록Data engineering (15)
데이터 엔지니어 기술 블로그
(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는 오랜 시간동안 자리를..
Source https://www.youtube.com/watch?v=5N242XcKAsM Kerberos Authentication Explained | A deep dive So you want to connect to an application over an insecure network, but you're a wee bit paranoid. 안전하지 않은 네트워크를 통해 애플리케이션에 연결하고 싶지만 편집증에 시달리고 있습니다. Someone may be listening in. 누군가 엿듣고 있을지도 모르기 때문입니다. How do you solve this problem? One possible solution is a protocol designed to provide secure auth..
1. 개요 1.1 Delta의 트랜잭션 구현 방법 다중 버전 동시성 제어(MVCC) 테이블이 변경될 경우 즉시 교체하지 않고 데이터의 여러 복사본을 유지한다. Reader는 트랜잭션 로그를 사용하여 처리할 데이터의 파일을 선택적으로 가져온다. Writer는 새 데이터 파일이나 기존 파일의 업데이트된 복사본을 작성한다. 그 후 커밋하고 로그에 새 항목을 추가하여 테이블의 새로운 버전을 생성한다. 이 로그에는 테이블에 대한 메타데이터 변경 사항과 함께 논리적으로 추가 및 제거할 데이터 파일이 기록된다. vacuum 명령을 사용하여 추후에 지연 삭제할 수 있다. 2. Delta Table Specification 2.1 테이블 스냅샷 테이블에는 연속적으로 증가하는 정수를 사용한 로그가 있다. 특정 버전에서 테..
1. 테이블 읽기 및 쓰기 1.1 테이블 생성하는 방법 spark.sql CREATE TABLE delta.`s3://bucket_name/foo/bar/table_name` ( id INT, firstName STRING, middleName STRING, lastName STRING, ) USING DELTA write df.write.format("delta").mode("overwrite").save("s3://bucket_name/foo/bar/table_name") 1.2 시간 여행 델타레이크에서는 timestamp와 version으로 시간 여행을 할 수 있다. 사용자의 실수로 테이블의 어떤 데이터를 삭제하나 업데이트 한 경우 시간 여행으로 과거의 테이블로 돌아가 다시 쓸 수 있다. df1 =..
Delta Lake는 데이터 레이크 위에 Lakehouse 아키텍처를 구축할 수 있는 오픈소스 프로젝트이다. 데이터 레이크의 문제점과 데이터 웨어하우스의 문제점을 보완해줄 수 있다. 데이터 레이크는 아주 큰 데이터를 저장할 수 있지만 체계가 정확하게 잡히지 않으면 데이터 늪이 되기가 쉽다. S3와 같은 클라우드 스토리지는 가장 비용 효율적인 스토리지 시스템이다. 그러나 key-value로 구현이 되어있어서 ACID 트랜잭션과 같은 고성능을 구현하기는 어렵다. listing object와 같은 메타데이터 동작은 비싸며 일관성 보장은 제한적이다. 델타레이크는 이런 문제점을 보완할 수 있다. ACID 성질을 가질 수 있게 하여 트랜잭션을 구현하며, 테이블에서의 시간 여행을 가능하게 한다. upsert를 구현할..
개발 동기 우리는 어떤 하둡 에코시스템에도 사용할 수 있고 압축과 컬럼 기반 데이터 표현의 이점을 만들기 위해 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을 사용한다. 동시에 같..
개요 카프카에서는 토픽을 많이 생성해서 사용하는데 Naming Convention 없이 사용하게 된다면 나중에 복잡해질수도 있기 때문에 알아보려고 한다. Convention 카프카에서 토픽을 생성할 때 유효한 문자는 [영문, 숫자, '.', '_', '-']만 사용할 수 있다. 그리고 유의할 점은 마침표(.)와 밑줄(_)은 충돌할 수 있기 때문에 둘 중 하나만 사용하는 것이 좋다. 선택할 수 있는 예시들은 다음과 같다. .. -- ... .. .. ... .. .. 이 게시물을 작성한 사람은 이 데이터 타입으로 성공했다고 한다. 이 방식으로 사용하면 인프라가 어느정도 커져도 커버할 수 있을 것으로 예상된다. message type logging queuing tracking etl/db streaming..
개요 mysql은 도커 컨테이너로 올라가있는 상태이고, 로컬에 볼륨이 공유된 상태로 사용하고 있었다. mysql에서 로그를 확인해보니 아래와 같은 로그를 확인할 수 있었다. 해결 방법 mbind는 리눅스 명령어로 메모리 범위에 대한 메모리 정책 설정을 뜻한다. mbind를 사용하는 명령어에서 권한이 없는 문제로 예상된다. 도커 공식 문서에 보면 아래와 같은 내용이 있다. --cap-add=sys_nice Grants the container the CAP_SYS_NICE capability, which allows the container to raise process nice values, set real-time scheduling policies, set CPU affinity, and other ..