빅데이터 개념을 마스터하기 위해 시리즈를 작성해보기로 했다.
이번 빅데이터 시리즈 포스팅의 궁극적인 목적은 Hadoop -> Hive -> Spark -> Pyspark까지 마스터 하는 것.
하지만 내 머릿속엔 아무것도 없기 때문에 하나하나 공부해보려고 한다! 그럼 스타뜨!
하둡이란?
하둡이란, 빅데이터를 수집 / 저장 / 처리 / 분석할 수 있는 오픈 소스 프레임 워크이다.
하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신, 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고, 큰크기의 데이터를 클러스터에서 병렬로 동시에 처리하여 처리 속도를 높이는 것이 목적임
하둡 = 분산 처리 가능 시스템 + 저장된 데이터 병렬 처리 (맵 리듀스)
*프레임 워크
: 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 구조화된 틀
ex. 빵집 창업 시 "뚜레쥬르"라는 프랜차이즈 프레임 워크가 있음, 애초에 만들어진 수단을 메뉴얼대로 이용하기만 하면 되는 것
하둡의 작동 원리는 아래와 같다.
과정 | 개념 | 예시 |
데이터 분할 | 데이터를 블록 단위로 나눔 | 우리가 처리해야 할 물의 양은 너무 많아, 하나의 파이프로 감당이 힘들어 여러 개의 작은 파이프로 나눔 |
분산 저장 | 나뉘어진 여러 블록들을 여러 대의 컴퓨터에 분산 저장 -> HDFS(Hadoop Distributed File System) | 작은 파이프 마다 다른 작업자들이 맡을 수 있게, 각각을 다른 구역으로 배치함. |
분산 처리 | 각 컴퓨터에서 맵 단계 실행 (입력 데이터를 읽어와 원하는 형태로 가공), 각 블록은 병렬 처리됨 | 각 구역에서 물 처리 작업을 시작함 |
결과 계산 | 리듀스 작업을 통해, 중간 결과들을 기반으로 최종 결과로 계산함 | 각 구역에서 처리했던 물들을 하나로 모아 최종 처리된 물을 얻을 수 있음 |
하둡은 프레임 워크라고 했다. 그럼 각각의 과정을 담당할 핵심 컴포넌트가 있을 것이다.
데이터 분할 및 저장 - HDFS (Hadoop Distributed File System)
- 하둡 어플리케이션에서 사용하는 기본 스토리지 시스템.
- 기본적으로 마스터(일 시킬 컴퓨터) / 슬레이브 구조(일해라 친구들!..마치 나..😥)
- 각 데이터를 블록 단위로 나누어 저장하고, 각 블록은 여러 개의 노드에 복제 됨. 클라이언트는 파일을 읽고 쓸 때 네임노드와 데이터노드를 통해 데이터에 접근
*네임노드(NameNode) : HDFS의 마스터 노드, 메타 데이터 관리 (들어온 데이터를 어떤 데이터노드에 저장할 지 정해줌)
*데이터노드(DataNode): HDFS의 슬레이브 노드, 실제 데이터를 저장 및 관리 (잘 동작되면 하트비트를 전달한다)
장점
- 분산 저장 : 데이터를 여러 노드에 분산하여 저장
- 높은 안정성 : 여러 노드에 복제하여 저장하므로, 하나의 노드에 장애가 발생해도 데이터의 손실을 방지할 수 있음
- 높은 확장성 : 새로운 노드를 클러스터에 추가함으로써 HDFS의 용량을 쉽게 확장할 수 있음
- 쓰기 한 번, 읽기 여러 번 : 대용량 데이터를 한번 쓰고 여러 번 읽는 데이터 처리 패턴에 최적화
단점
- 저대역폭 쓰기 문제 : HDFS는 한번 쓴 데이터를 여러 번 읽는 작업에 최적화되어 있어, 데이터를 쓰는 작업에는 대역폭이 저하될 수 있음
- 작은 파일 처리 문제 : HDFS는 큰 파일을 효율적으로 처리하는데 적합하지만, 많은 수의 작은 파일을 다루는데는 적합하지 않을 수 있음.
데이터 분산 처리 - MapReduce
- 대용량 데이터 처리를 위한 프로그래밍 모델
- MAP + Reduce 단계 (중간에 셔플이 있긴함)
MAP | Shuffle and Sort | Reduce |
데이터를 나누고, 각각의 조각에 동일한 처리 과정 적용. *병렬 처리 가능 |
맵 단계에서 생성된 중간 결과들을 키(key)별로 정렬하고, 동일한 키를 가진 결과들을 모아둠 | 셔플링된 결과를 받아서 마지막 결과를 만듬. 이 때 동일한 키를 가진 중간 결과를 그룹화하고, 각 그룹에서 원하는 연산을 수행하여 최종 결과를 수행 |
장점
- 대용량 데이터 병렬 처리를 통해 효율적 처리 가능
- 분산 환경에서 높은 확장성으로, 클러스터의 크기를 쉽게 조절할 수 있음
단점
- 중간 결과를 디스크에 쓰고 읽는 과정이 추가되어 입출력 비용 발생가능
- 작은 파일 처리 문제 : HDFS는 큰 파일을 효율적으로 처리하는데 적합하지만, 많은 수의 작은 파일을 다루는데는 적합하지 않을 수 있음.
리소스 매니저 - Yarn (Yet Another Resource Negotiatory)
- 하둡 2.0부터 제공되는 리소스 관리 플랫폼
-각 어플리케이션에 필요한 리소스(CPU,메모리,디스크 등)을 할당하고 모니터링하는 업무
- 수백,수천개의 노드로 구성된 클러스터에서 작업이 제출되면 수많은 작업들을 관리하고, 특정 작업에 사용할 자원 (CPU,RAM)을 관리해주는 분산자원관리 기능 담당
Resource Manager : Master에서 구동되며 클러스터들로의 자원 할당 관리
- 클러스터 전체의 자원 관리 및 클러스터 레벨에서 작업 스케줄링
- 클라이언트의 작업 요청을 받고, 각 어플리케이션에 필요한 자원 할당
- 작업들 간의 우선 순위 관리, 자원 활용 모니터링
Node Manager : Slave에서 구동되며, 클러스터들로의 자원 할당 관리
- 각 노드에서 실행되는 애플리케이션의 생명주기를 관리하고, 해당 노드의 자원 사용량을 모니터링
- 리소스 매니저로부터 할당받은 자원에 따라 컨테이너를 생성하고 관리
- 애플리케이션의 상태를 리소스 매니저에 보고하고, 필요 시 리소스 매니저와 통신하여 자원 요청
장점
- 대용량 데이터 병렬 처리를 통해 효율적 처리 가능
- 분산 환경에서 높은 확장성으로, 클러스터의 크기를 쉽게 조절할 수 있음
단점
- 중간 결과를 디스크에 쓰고 읽는 과정이 추가되어 입출력 비용 발생가능
- 작은 파일 처리 문제 : HDFS는 큰 파일을 효율적으로 처리하는데 적합하지만, 많은 수의 작은 파일을 다루는데는 적합하지 않을 수 있음.
빅데이터의 첫발걸음인 하둡에 대한 이해를 끝냈다. 그렇다면 다음은 하둡 에코시스템으로!
| 참고 자료
https://www.castingn.com/sourcing/kkultip_detail/110
'하둡 Hadoop' 카테고리의 다른 글
[Hadoop] 우분투(Ubuntu)에서 HDFS에 파일 업로드 (0) | 2024.04.01 |
---|---|
[Hadoop] 우분투(Ubuntu)에서 하둡(Hadoop) 설치와 환경세팅 및 실행/중단 방법 (0) | 2024.03.29 |
[Hadoop] 하둡 에코시스템(Hadoop Ecosystem)과 주요 컴포넌트 (0) | 2024.02.13 |
댓글