하둡 Hadoop

[Hadoop] 하둡(Hadoop)이란? - HDFS, MapReduce, YARN

sseozytank 2024. 2. 7.

빅데이터 개념을 마스터하기 위해 시리즈를 작성해보기로 했다. 

이번 빅데이터 시리즈 포스팅의 궁극적인 목적은 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)별로 정렬하고, 동일한 키를 가진 결과들을 모아둠 셔플링된 결과를 받아서 마지막 결과를 만듬. 이 때 동일한 키를 가진 중간 결과를 그룹화하고, 각 그룹에서 원하는 연산을 수행하여 최종 결과를 수행

 

https://terms.tta.or.kr/dictionary/dictionaryView.do?subject=%EB%A7%B5%EB%A6%AC%EB%93%80%EC%8A%A4

 

장점 

  • 대용량 데이터 병렬 처리를 통해 효율적 처리 가능 
  • 분산 환경에서 높은 확장성으로, 클러스터의 크기를 쉽게 조절할 수 있음 

단점

  • 중간 결과를 디스크에 쓰고 읽는 과정이 추가되어 입출력 비용 발생가능
  • 작은 파일 처리 문제 : 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

https://jisoo0310.tistory.com/11#%ED%95%98%EB%91%A1_%EB%84%8C_%EB%88%84%EA%B5%AC%EB%83%90_!_%F0%9F%A4%94

https://kadensungbincho.tistory.com/32

https://mangkyu.tistory.com/127

댓글