대용량 데이터 처리 기술(GFS, HDFS, MapReduce, Spark)
in Data on Engineering
- 대용량 데이터 처리 기술에 대해 작성한 글입니다
- 실제 대용량 데이터 처리하는 방법이 궁금하신 분은 BigQuery와 Datalab을 사용해 데이터 분석하기를 참고하시면 좋을 것 같습니다
- 빅데이터 : 기존 데이터베이스 관리도구의 능력을 넘어서는 대량 의 정형 또는 심지어 데이터베이스 형태가 아닌 비정형의 데이터 집합조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술(by 위키피디아)
- 기존에 데이터가 커졌을 때 사용하던 방식
- 큐잉
- 샤딩 : 데이터의 키를 Hash해서 여러 DB로 분산
- but 시스템의 복잡도가 증가되며 유지보수 힘듬
- 이를 극복하기 위해 스스로 데이터를 분산시키고 오류가 발생하면 데이터를 복구하는 기능을 가진 시스템이 생김
GFS (Google File System)
- Google File System Paper
- 하둡의 원조
- Failuer Tolerance, 물리적으로 서버 중 하나가 고장나도 정지하지 않고 잘 돌아가는 시스템
- 박준영님 블로그
- 위키피디아
MapReduce
- Google MapReduce Paper
- Map과 Reduce 함수를 조합해 분산 환경에서 다양한 계산
- Shuffle (SQL의 GroupBy와 유사한 연산)
- Worker에서 Map 작업 수행한 후, Reduce를 수행한 워커가 결과물을 저장
Hadoop
- GFS와 MapReduce 논문을 보고 구현해서 오픈소스로 공개(2006년)
- name node가 데이터의 위치를 알려주고(Master 역할), data note가 실제 데이터를 조회(Slave)
Hadoop HDFS
- HDFS paper
- GFS 논문의 오픈소스화
- Block 단위로(64MB) 여러 노드에(3 Replica) 파일 보관
- 늘릴수록 디스크 용량을 많이 차지하고, 안정성을 가질 수 있음
- 여러 옵션 보유
- 중복 저장과 장애복구 기능을 가지고 있음
- 그러나 현실에선 많은 장애..
Hadoop Hive
- SQL로 분석 쿼리를 실행하면 MapReduce 코드로 자동으로 변환
- SQL이 불가능한 Task 존재
분산 데이터베이스 (NoSQL)
- Not Only SQL
- 스케일 가능한 고성능 데이터베이스
- HBase, Cassandra, MongoDB, Couchbase, Redis
- Apache HBase
- 구글의 BigTable 구현
- 빠른 속도 / 편리한 사용성 / 높은 내구성
- 컬럼 기반 데이터베이스 (Column Oriented)
- SQL은 Row 기반! 컬럼을 정해두고 Row를 추가하는 방식(=자유롭지 않음)인 반면 컬럼 기반은 스키마가 자유롭고 Sparse한 거대한 테이블에 적합
- Master와 Slave가 존재
Apache Spark
- 메모리에서 처리해서 효율이 좋음
- 반복 계산이 많은 경우 특히 성능이 좋음
스트리밍 기술들
- Apache Storm
- Spark Streaming
- 작은 Time window로 배치 프로세스를 계속 실행해 실시간처럼 보임
리소스 관리 플랫폼
- 이미 존재하는 컴퓨팅 자원을 share해서 필요에 맞게 리소스를 관리해주는 플랫폼
- Yarn(자주 쓰임), Mesos
데이터 수집기
- 여러 로그를 취합해서 로그를 남김
- 크롤링할 경우, 소셜 데이터를 모을 경우에도 유사한 구조
- Flume, Kafka, Logstash, 아마존 Kinesis 등
- Flume
- 단순한 구조, 몇가지 설정만으로 구동 가능
- push 방식
- collector를 제공
- Kafka
- 고성능 메세징 큐
- 다양한 입력과 출력을 복잡하게 라우팅
- pub/sub 방식
- 메세지를 디스크에 저장해 유실없이 처리 가능
- Flume으로 collect하고 Kafka에서 불러오는 구조도 있음
기타
- Presto(추후 Check)
- Facebook이 리드
- HIVE와 유사하지만 압도적 성능
- 다른 DB의 데이터를 가지고와서 Join해서 사용 가능
- Elastic Search
- 스케일 가능한 검색, 인덱스 엔진
- ELK Stack으로 유명
Architecture
데이터 수집 - 데이터 저장 - 데이터 가공 - 시각화 - 머신러닝
Kafka - HDFS - Spark/Spark SQL - Zeppelin - Spark MLLib
Reference
카일스쿨 유튜브 채널을 만들었습니다. 데이터 분석, 커리어에 대한 내용을 공유드릴 예정입니다.
PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다
이 글이 도움이 되셨거나 의견이 있으시면 댓글 남겨주셔요.