전체보기
-
Big Data 스파크 배치를 성능개선하다 (리팩토링)개발지식 아카이브/Data - Spark 2026. 1. 7. 19:25
최근에 Big Data 처리 배치 성능개선에 대한 고민을 할 기회가 있었다.전체 소요시간을 3시간 이상 줄여야하는 도전적인 과제였는데, 결국 성공했다...! (뿌듯) 데이터 입수 상황 1) 원본 소스 데이터세트는 10개 가량이다. 2) 1차 마트 데이터를 만드는 dag은 원본 소스 데이터 10개의 완료시점을 계속 감지하고 있다. (sensor 존재)센서가 10개 다 성공하면, 10개 데이터에 여러가지 필터를 적용하여 1차 마트 데이터를 만든다. 3) 2차 마트 데이터는 1차 마트 데이터를 기반으로 만드는데, 이벤트 시간을 주요 검색 key로 사용한다. 리팩토링 방법 A. 센서 병렬화이것은 아주 단순한 아이디어였는데, 크게 효과가 있었다.센서 10개가 다 성공한 후 전체 데이터를 만들지 말고..
-
데이터 엔지니어링에서 최종 파일 용량 줄이는 tip개발지식 아카이브/Data - Hadoop 2025. 9. 8. 14:12
컬럼 정렬 수행1) “정렬”이 왜 도움이 되나? (컬럼 기준 정렬)Parquet는 컬럼 단위 인코딩 + 페이지/딕셔너리 인코딩 + 압축을 사용해.값이 뭉쳐 있을수록(= 같은 값이 길게 반복되거나 가까이 모여 있을수록)RLE(런-렝스), 딕셔너리 인코딩 적중률 ↑ → 압축률이 올라가고 파일 크기 ↓.따라서, 쿼리 필터/파티션 키/중복도가 높은 컬럼을 우선 정렬하면 효과가 좋다.그리고 길이가 긴 string 데이터일 수록 효과가 좋았다. 압축량이 커지기 때문이다.주의: 전체 셔플이 필요하므로 쓰기 비용↑. 하지만 장기적으로는 읽기 성능 + 용량 절감의 이득을 볼 수 있었다.3) 파티셔닝과 파일 개수의미 있는 정렬키로 프루닝 + 정렬 효과를 극대화.데이터 양이 적은 경우 order by, 많은 경우 sort ..
-
가용성과 신뢰성의 개념 정확히 이해하기개발지식 아카이브/ETC 2025. 8. 25. 15:51
가용성과 신뢰성, Reliability와 Availability의 개념이 헷갈릴 때가 많았다.그래서 복습을 하고, 구체적인 예시로 적어두려고 한다. 신뢰성이 낮다는 것은 결함이 많다는 것이다. 그러나 결함 != 장애이다.결함은 사양에서 벗어나서 동작하는 것이고, 장애는 시스템 전체가 멈춘 것이다. 결함이 장애로 이어지지 않도록 설계할 수 있다. 요약하면 신뢰성은 결함과 연결되고, 가용성은 장애와 연결된다.신뢰성이 낮더라도(결함이 많더라도) 가용성이 높게 설계된 시스템은 사용자가 이상을 인지하지 못한다. 다음은 가용성과 신뢰성의 차이에 대한 실제적이고 구체적인 예시들이다. GPT의 도움을 받았다. (고마워... 이해가 쏙쏙..) ✅ 1. Kafka 클러스터Reliability (신뢰성)Kafka 브로..
-
[Hive] insert overwrite 중에 데이터가 없어도 파티션이 생겼으면 할 때개발지식 아카이브/Data - Hadoop 2025. 8. 22. 16:05
[요건 정의]Hive 테이블의 특정 파티션에 대해 insert overwrite로 데이터 재생성중이다. 이 때 row가 없어도 파티션 폴더는 생겼으면 함 [문제 상황]row가 없는 경우에 물리적 파티션 폴더가 생기지 않고, 사라져 버림... [해결 방법]1. 해당 파티션을 ALTER 테이블 DROP PARTITION 쿼리로 메타스토어에서 삭제한다2. 삭제한 후 insert overwrite 수행한다3. 그러면 row가 없어도 파티션 폴더가 생긴다. 데이터 재생성시 발생하는 hive serde 오류인 것 같다.파티션이 없는 상태에서 최초 실행시에는 디렉토리가 생기는데, 파티션이 있는 상태에서 재실행하면 디렉토리가 사라져버린다; 파티션이 없는 상태에서, 최소 실행이어야 row가 없어도 파티션 폴더가 생기..
-
[스파크 스트리밍] Structured Streaming 구조적 스트리밍 개발하기 (기본)개발지식 아카이브/Data - Spark 2025. 2. 26. 07:00
스파크 구조적 스트리밍 Structured Streaming은 스파크 엔진에 구축되어, 대용량 데이터에 대한 스트리밍 애플리케이션과 파이프라인을 구축할 수 있도록 개발되었으며 다음과 같은 특징이 있다. DataFrame과 Dataset API 기반으로 설계되었다. 즉, Input Data를 정해진 스키마에 맞게 구조화하여 처리한다는 뜻이다.이를 통해 SQL 쿼리나 DataFrame 연산을 스트리밍 데이터에도 동일하게 적용할 수 있다. 마이크로배치 + 연속 처리 모드를 지원.마이크로배치는 일정 시간 단위로 데이터를 배치처럼 처리하고 연속 처리 모드를 사용하면 거의 실시간에 가까운 처리를 함 End-to-End Exactly-once 보장데이터 유실, 중복 없이 정확히 한 번만 처리 Structu..
-
[빅데이터 전문가의 하둡관리] 하둡 로깅 이해하기개발지식 아카이브/Data - Hadoop 2025. 2. 24. 07:00
하둡 로깅 이해하기 하둡 로깅 이해하기 하둡에서 중요한 로그 2가지는 다음과 같다!애플리케이션 로그데몬 로그 로그 종류stdoutSystem.out.println()으로 출력되는 모든 메시지가 여기에 속한다!ex) println("my log...")stderrSystem.err.println()으로 출력되는 모든 메시지가 여기에 속한다.syslogLog4j로 생성된 로그들이 여기에 속한다.ex) logger.info("my info...") 그러면 생성된 로그를 확인하는 방법은?리소스매니저 웹 UI yarn 커맨드 로그 저장 위치HDFS잡 실행파일을 저장하는 스테이징 디렉토리/user/. staging/job_1453654767_8797과 같이 스테이징 디렉토리를 생성하고 하둡 JAR, jo..
-
[빅데이터 전문가의 하둡관리] 하둡 클러스터의 리소스 할당개발지식 아카이브/Data - Hadoop 2025. 2. 19. 07:00
하둡 클러스터의 리소스 할당 하둡의 리소스 할당 리소스 배정은 하둡 관리자에게 있어 핵심적인 업무라고 할 수 있다클러스터의 가장 중요한 리소스인 메모리와 CPU는 한정되어 있기 때문하둡 관리자는 조직 그룹 간에 적절하게 리소스를 할당해 각각의 SLA 수준을 만족시키도록 해야 한다! 클러스터의 작업량 관리하기 => 리소스 스케줄러를 이용한다!리소스 스케줄링이란? = 태스크에 우선순위를 부여, 얀 컨테이너에 태스크를 할당하는 것이다 하둡의 리소스 스케줄러는 3개가 있다.FIFO 스케줄러Capacity 스케줄러Fair 스케줄러 하나씩 간단히 알아보자. FIFO 스케줄러 task가 제출된 순서대로 1개씩 실행되며, 동시 실행되지 않는다.운영 환경에서는 사용이 권장되지 않는다. 왜냐하면... ..
-
[디자인패턴] 개방-폐쇄 원칙 OCP, Open-Closed Principle개발지식 아카이브/Algorithms 2025. 2. 17. 07:00
Open-Closed Principle, OCP 저는 오늘 회사에서 OCP 원칙을 위반하는 코드를 찾아서 수정 제안을 드렸습니다. 그래서 오랜만에 SOLID 패턴 복습하면서, 디자인 패턴 포스팅을 작성합니다! 개방-폐쇄 원칙은 SOLID 원칙 중 하나로, "소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 변경(수정)에는 닫혀 있어야 한다"는 개념입니다.즉, 기존 코드를 수정하지 않고 새로운 기능이나 동작을 추가할 수 있도록 설계해야 한다는 뜻입니다. 이 원칙을 잘 지키면 시스템을 확장할 때 기존에 안정적으로 동작하던 부분을 변경할 필요가 없어 유지보수가 쉬워집니다. 개방-폐쇄 원칙의 필요성프로젝트가 커지면서 기능을 추가하거나 수정해야 할 일이 많아지면, 기존 코드에 직접..