Apache Hadoop
- MapReduce programming model을 사용해 bigdata dataset의 분산 저장 및 처리하는 오픈소스 소프트웨어 프레임워크
- 용량이 커지는 속도에 비해 io 속도가 따라가지 못함 → 하둡으로 해결
- 범용 하드웨어로 구축된 컴퓨터 클러스터로 구성됨
- 하드웨어 장애는 흔히 발생 → 프레임워크에서 자동으로 처리
- 분석 시간이 단축됨
- Problem: 하드웨어 고장의 확률, 여러 드라이브에서의 출력물을 하나로 결합 시의 오류
- Solution: HDFS, MapReduce, ...
- HDFS: 여러 개의 파일 시스템으로 이루어져있고 네트워크로 연결되어 있음
- 적당히 쿼리를 날려 MapReduce
MapReduce
- 클러스터에서 병렬 분산 알고리즘을 사용해 대용량 dataset을 처리하고 생성하는 프로그래밍 모델
- Map과 Reduce로 구성됨
- Map: 일반적으로 필터링 및 정렬 수행
- Reduce: 일반적으로 요약 작업을 수행
- split input file에서 읽어서 각 각 mapper로 읽어와서 reducer에서 취합해서 outputfile로 저장.
- Programming model
- Execution environmnet
- Software package
MapReduce & distributed storage
- What is hidden to achieve this(프로그래머가 알 필요 없는 것들):
- 데이터 파티셔닝, 배치 및 복제
- Computation 배치 (및 복제)
- 노드 수 (mappers / reducers)
- Beyond Batch
- Batch : 데이터를 모아서 한꺼번에 전송
- MapReduce는 batch processing(일괄 처리) 시스템으로 trade-off를 제공
- Interactive(대화형) SQL
- 대화형 SQL은 MapReduce 대신 장기 실행 전용 데몬(임팔라)이나 컨테이너를 재사용하는(하이브) 분산 쿼리 엔진 사용
- 대용량 데이터셋에 대한 확장성이 있으면서 Hadoop 기반의 SQL 쿼리 실행 시 빠른 응답 속도를 가짐
- Iterative Processing(반복 처리) ex) machine learning
- 머신러닝과 같은 다수의 알고리즘은 근본적으로 반복 연산을 함
- 각 반복 단계마다 디스크에서 데이터를 불러오는 것 보다 메모리에 임시 작업 데이터셋을 보존하는 것이 더 효율적
- MapReduce 아키텍처는 허용하지 않지만 Spark에서는 데이터셋 탐색 방식의 작업 허용
- Streaming Processing(실시간 처리) ex) real time
- Stom, Spark Streaming, Samza
- 실시간으로 실행되고 경계가 없는 스트림 데이터를 분산 계산하여 그 결과를 하둡 저장소나 외부 시스템에 보낼 수 있음
- Search
- 하둡 클러스터에서 Solr 검색 플랫폼 실행 가능
- 문서를 인덱싱하여 HDFS에 저장, HDFS에 저장된 인덱스를 기반으로 검색 쿼리 제공
2022-2 KHU 빅데이터프로그래밍 수업을 기반으로 작성하였습니다.