✅ RECAP
전 포스팅에서 공부한 내용을 복습해 보자.
- 스케줄링의 중요성
: 스케줄링은 데이터 파이프라인에서 작업을 실행할 순서를 지정하고, 의존성을 해결하며, 효율적인 작업 수행을 가능하게 한다.
주요 스케줄링 방식은 아래와 같다.
1. 수동 스케줄링(Manual Scheduling)
: 사람이 직접 작업을 실행하는 방식
: (단점) 비효율적이고 자동화되지 않는다.
: (예시) 직원이 사무실 위치를 변경할 때 데이터베이스를 즉시 업데이트
2. 시간 기반 스케줄링(Time-Based Sceduling)
: 특정 시간에 작업을 실행
: (예시) 매일 아침 6시에 직원 데이터베이스 업데이트
3. 센서 기반 스케줄링(Sensor-Based Sceduling)
: 특정 조건이 충족되었을 때 작업을 실행
: (예시) 직원 테이블에 새 직원이 추가되었을 때 부서 테이블 업데이트
: (주의점) 항상 조건을 감시해야 하므로 리소스 소모가 크다.
1. 배치 처리 vs 스트림 처리
: 스케줄링은 데이터를 처리하는 방식과 밀접하게 관련되어 있다. 데이터 처리는 크게 배치처리(batch processing)와 스트림 처리(stream processing)으로 나뉜다.
특성 | 배치 처리 | 스트림 처리 |
처리 시점 | 데이터가 일정 간격으로 그룹화되어 처리 | 데이터가 생성되자마자 실시간 처리 |
비용 | 상대적으로 저렴, 리소스 효율적 | 더 높은 비용과 리소스 요구 가능 |
활용 사례 | 매일 아침 6시 직원 테이블 업데이트 | 사용자가 가입 즉시 데이터베이스 업데이트 |
spotflix 예시 | 오프라인 노래 다운로드 | 온라인 스트리밍 |
2. 스케줄링 도구
: 스케줄링 작업을 지원하는 대표적인 도구
- Apache Airflow : 복잡한 데이터 파이프라인 워크플로우 관리 및 자동화를 지원
- Luigi : 경량 워크플로우 관리 도구로 간단한 작업에 적합
(예시) Apache Airflow를 사용하여 매일 아침 6시에 직원 테이블을 업데이트 하는 작업을 설정할 수 있다.
schedule_interval="0 6 * * *"
위 코드는 작업을 매일 6시에 실행하도록 스케줄링한다.
병렬 컴퓨팅(Parallel Computing) 은 현대 데이터 처리 도구의 핵심원리 중 하나로, 메모리 문제 해결과 처리 속도 향상을 위해 사용된다. 이번 포스팅에서는 병렬 컴퓨팅의 개념, 이점과 한계, 그리고 Spotflix에서의 활용사례를 살펴보자.
1. 병렬 컴퓨팅(Parallel Computing)
병렬 컴퓨팅은 큰 데이터 처리 작업을 더 작은 subtask(서브 태스크)로 나누어 여러 컴퓨터에 분산 처리하는 방식이다. 이 과정에서 각 컴퓨터가 작업의 일부를 처리하고, 최종적으로 결과를 통합한다.
2. 병렬 컴퓨팅 이해하기 : 티셔츠 접기 비유
병렬 컴퓨팅의 원리를 이해하기 위해서는 티셔츠 접기를 예로 들어보자.
1. 단일 작업자
- 1명의 고급 직원이 티셔츠 1000장을 접는 데 2시간 30분 소요
2. 병렬 작업자
- 4명의 초급 직원이 각자 250장을 접는 데 1시간 15분 소요
- 그러나 티셔츠를 나누고 결과를 합치는 데 추가 시간이 필요
(작업 분배 : 10분, 결과 통합 : 5분)
- 최종 소요시간 : 1시간 30분 (10분(작업분배) + 1시간 15분(작업) + 결과통합(5분))
이처럼, 병렬 처리는 시간이 절약될 수 있지만, 작업 분배와 통합 과정에서 추가 비용이 발생한다. 따라서, subtask 로 나누는 이점이 미미하다면, 굳이 subtask로 나누는 위험을 감수하지 않아도 된다.
(*memory footprint : the amount of main memory that a program uses or references while running
- In computing, the momory footprint of a software application indicates its runtime memory requirements, while the program executes. - 응용프로그램으로 덮혀진 메모리의 면적)
3. 병렬 컴퓨팅의 이점과 한계
이점(+)
1. 추가 처리 성능 확보
- 여러 컴퓨터가 동시에 작업을 수행하므로 전체 처리 속도가 빨라진다.
2. 메모리 최적화
- 데이터를 컴퓨터 여러 대로 분산 저장하여, 개별 컴퓨터의 메모리 부담을 줄인다.
- 한 컴퓨터에 데이터를 전부 로드하지 않아도 되는 장점이 있다.
한계(-)
1. 데이터 이동 비용
- 데이터를 여러 컴퓨터로 나누는 과정에서 네트워크 비용이 발생할 수 있다.
2. 작업 분배와 통합 시간
- 서브태스크를 생성하고 결과를 합치는 데 추가적인 시간이 소요된다.
- 이 과정이 전체 작업 시간을 크게 단축시키지 못한다면 오히려 병렬 처리가 비효율적일 수 있다.
4. Spotflix에서의 병렬 컴퓨팅
- Spotflix에서는 병렬 컴퓨팅을 사용해 곡을 고품질 포맷(WAV/FLAC)에서 .ogg 형식으로 변환한다.
- 병렬 처리를 통해 한 컴퓨터에 모든 데이터를 로드할 필요없이, 여러 컴퓨터에서 변환 스크립트를 실행해 처리속도를 향상시킨다.
5. 결론
- 병렬 컴퓨팅의 개념 : 작업을 나누어 여러 컴퓨터에서 동시에 처리
- 이점 : 추가 처리 능력 확보, 메모리 최적화
- 한계 : 작업 분배 및 통합 비용, 데이터 이동 비용
- Spotflix 사례 : 병렬 컴퓨팅을 활용한 파일 변환으로 처리속도 및 효율성 향상
아래 문제를 풀어보자.
1. Whenever, whenever
While you're having lunch with the rest of the data science team, Sasha, the new data engineer intern, is telling you this: "Parallel computing is a jack of all trades and can be used whenever we want, for any task we want. It just optimizes running any data processing tasks. We should start implementing it across the whole pipeline. I'm ready to help do it!"
Is her statement actually true or false?
1. Ture
2. False
Answer
2. False
Yup! This statement is wrong. It's OK,interns are here to learn, and we appreciate her passion and proactiveness!
병렬 컴퓨팅은 모든 작업에 적합한 만능 도구가 아니며, 작업의 특성에 따라 신중히 적용해야 한다. Sasha의 제안처럼 전체 파이프라인에 병렬 컴퓨팅을 일괄적으로 적용하는 것은 적절하지 않을 수 있다. 병렬 처리가 진정한 성능 향상을 가져오는 경우에만 사용해야 한다.
2. Parallel universe
You just told Sasha, the data engineer intern, that although incredibly efficient and powerful, parallel computing is not suited to every situation. It has its limitations, and sometimes it's just unnecessary. You would like to help Sasha improve her understanding. You ask her to share her assumptions about parallel computing: you will tell her if she's right or wrong, and try to explain why. Are you up to the challenge?
1. Parallel computing will always make things faster.
2. Parallel computing relies on processing units.
3. It's a good idea to use parallel computing to encode songs uploaded by artists to the .ogg format that Spotflix prefers.
4. Parallel computing can't be used to opitmize for memory usage.
5. Parallel computing is used to provide extra processing power.
6. It's a good idea to use parallel computing to update the employees table every morning.
Right →
Wrong →
Answer
Right → 2,3,5
Wrong → 1,4,6
1. Parallel computing will always make things faster.
→ 병렬 컴퓨팅이 항상 속도를 향상시키는 것은 아니다. 작업 분배 및 통합 과정에서 오버헤드 비용이 발생할 수 있다. 만약, 태스크를 병렬화하는 비용이 실제 처리 시간을 초과하거나, 작업 자체가 병렬화하기 어렵다면, 병렬 컴퓨팅은 비효율적이다.
4. Parallel computing can't be used to opitmize for memory usage.
→ 병렬 컴퓨팅은 메모리 최적화에 유용하게 사용될 수 있다. 데이터를 여러 컴퓨터로 분산 저장함으로써, 각 컴퓨터의 메모리 부담을 줄이고, 메모리 풋프린트를 최소화할 수 있다.
6. It's a good idea to use parallel computing to update the employees table every morning.
→ 직원 테이블 업데이트는 작은 데이터세트를 처리하는 상대적으로 간단한 작업일 가능성이 높다. 병렬 컴퓨팅은 큰 데이터셋이나 고비용 작업에 적합하다. 이런 단순한 작업에 병렬 컴퓨팅을 적용하면, 오히려 분배/통합 오버헤드 때문에 효율이 떨어질 수 있다. 대신, 시간 기반 스케줄링으로 배치 처리를 하면 충분히 효율적이다.
병렬 컴퓨팅은 데이터 처리에서 필수적인 기술로, 대규모 데이터를 효과적으로 처리할 수 있는 방법이다. 다음 포스팅에서는 병렬 컴퓨팅과 관련된 도구 및 실무 적용사례를 다뤄볼 예정이다.
'컴퓨터 공부 > 🌠 Journey to Data field' 카테고리의 다른 글
Understanding Data Engineering 10-Cloud Computing (3) | 2024.12.15 |
---|---|
Understanding Data Engineering 8-Scheduling data (1) | 2024.12.09 |
Understanding Data Engineering 7 - Processing data (1) | 2024.12.08 |
Understanding Data Engineering 6-Data warehouses and data lakes (2) | 2024.12.08 |
Understanding Data Engineering 5-SQL (1) | 2024.12.07 |