Tools/Hadoop

Hadoop 컴퓨팅과 클러스터

칼쵸쵸 2023. 7. 2. 14:05

DFS

하둡의 분산 파일 시스템(Distributed File System, DFS)은 하둡 에코시스템의 핵심 구성 요소 중 하나로써 DFS는 대량의 데이터를 분산 저장하고 처리하기 위한 분산 파일 시스템.

DFS는 데이터를 블록(Block) 단위로 분할하여 여러 대의 컴퓨터에 저장하며, 이를 통해 데이터의 안정성과 처리 성능을 향상.

각각의 블록은 여러 개의 노드에 복제될 수 있으며, 이는 데이터의 가용성과 장애 복구를 보장하는데 유용함.

DFS의 구성 요소

  • 네임노드(NameNode): 네임노드는 DFS의 중앙 관리자로서 메타데이터 정보를 유지합니다. 이 정보에는 파일과 블록의 위치, 권한 및 기타 속성이 포함됩니다. 또한 클라이언트 요청을 처리하고 데이터 블록의 위치 정보를 제공합니다.
  • 데이터노드(DataNode): 데이터노드는 실제 데이터 블록을 저장하는 역할을 담당합니다. 각 데이터노드는 하나 이상의 블록을 저장하고 유지합니다. 또한 네임노드와 상호작용하여 데이터의 상태를 보고하고, 블록의 복제와 복구 작업을 수행합니다.

DFS의 장점:

  • 확장성: DFS는 데이터를 여러 데이터노드에 분산하여 저장하기 때문에 데이터의 크기가 증가하더라도 시스템을 확장할 수 있습니다. 이를 통해 대용량 데이터의 처리를 지원할 수 있습니다.
  • 안정성: 데이터 블록은 여러 개의 데이터노드에 복제되므로 하나 이상의 노드에 장애가 발생해도 데이터의 손실을 방지할 수 있습니다. 데이터의 복제와 장애 복구 기능은 데이터의 안정성을 보장합니다.
  • 고성능: DFS는 데이터를 여러 노드에 분산하여 저장하고 처리하기 때문에 데이터의 로드 밸런싱과 병렬 처리를 지원합니다. 이를 통해 높은 처리량과 성능을 달성할 수 있습니다.

* OLTP성 작업(기본 조회, 삭제, 추가)에서는 기존의 RDBMS와 같은 데이터베이스 시스템이 더 유용하다

* RDB와 같은 시스템들은 스키마 온 라이트 로 저장 스키마가 생성되고 해당 스키마에 데이터를 적재하는 과정이 이었다면 하둡은 스키마 온 리드 패턴으로서 데이터를 저장함과 스키마를 생성하는 데에 제약이 없다 따라서 데이터의 구조에 보다 유연하게 처리할 수 있다.

 

하둡 클러스터들

 

 

1) 하둡 프레임워크에서 제공되는 마스터노드, 워커노드

  • 하둡 공통 (하둡을 구성하는 필수서비스)
  • HDFS (파일 시스템)
  • YARN (리소스 관리)
  • MapReduce(병렬처리 프레임워크)

2) 하둡 클러스터에 접근하는 에지 서버들

3) 메타 데이터를 활용하여 데이터 베이스의 역할을 수행해 주는 sqoop, hue와 같은 프레임워크들

4) Kafka나 storm 같은 특정 프레임워크를 위한 전용 서버들

 

 

하둡 에코 시스템

  • 맵리듀스(MapReduce): 맵리듀스는 대규모 데이터 처리를 위한 분산 프로그래밍 모델입니다. 데이터 처리 작업을 "맵"과 "리듀스" 단계로 나누어 병렬 처리하며, 데이터의 분할과 결과의 정렬 및 집계를 자동으로 처리합니다.

 

  • 얀(YARN): 얀은 하둡 클러스터의 자원 관리와 작업 스케줄링을 담당하는 컴포넌트입니다. 얀은 클러스터의 컴퓨팅 자원을 효율적으로 관리하여 다양한 애플리케이션들이 공유 자원을 사용할 수 있도록 합니다.

 

  • 하이브(Hive): 하이브는 데이터 웨어하우스를 위한 데이터 쿼리 및 분석 도구입니다. SQL과 유사한 HiveQL을 사용하여 대량의 데이터를 쉽게 쿼리하고 분석할 수 있습니다. 하이브는 내부적으로 맵리듀스 작업을 활용하여 데이터를 처리합니다.

 

 

  • 하둡 HBase(HBase): HBase는 분산된 대규모 데이터 저장소로서 NoSQL 데이터베이스입니다. 고성능의 읽기 및 쓰기 작업을 지원하며, 대량의 구조화되지 않은 데이터를 실시간으로 처리할 수 있습니다.

 

  • 스파크(Spark): 스파크는 대규모 데이터 처리와 분석을 위한 고성능 클러스터 컴퓨팅 프레임워크입니다. 메모리 기반의 데이터 처리 방식을 사용하여 빠른 처리 속도를 제공하며, 다양한 데이터 소스와 통합하여 다양한 분석 작업을 수행할 수 있습니다.

 

 

  • 테즈(Tez): 테즈는 하둡 에코시스템에서 맵리듀스 작업의 성능을 개선하기 위한 고급 데이터 처리 프레임워크입니다. 테즈는 맵리듀스와 유사한 방식으로 작업을 수행하지만, 데이터 처리를 더 세밀하게 제어할 수 있도록 합니다. 테즈는 데이터 처리 작업을 작은 태스크 단위로 분할하고, 이를 병렬로 실행하여 빠른 처리 속도를 제공합니다. 또한, 테즈는 데이터의 로드 밸런싱과 자원 사용량을 효율적으로 관리하여 맵리듀스에 비해 높은 처리 성능을 달성할 수 있습니다.

  • 휴(Hue): 휴는 하둡 에코시스템에서 사용자 친화적인 웹 인터페이스를 제공하는 개발자 도구입니다. 휴를 사용하면 웹 브라우저를 통해 하둡 클러스터의 다양한 컴포넌트를 관리하고 모니터링할 수 있습니다. 휴는 맵리듀스, 하이브, 피그, 스파크 등 다양한 컴포넌트에 대한 사용자 인터페이스를 제공하며, SQL 쿼리 편집, 작업 스케줄링, 파일 탐색 등의 기능을 포함하고 있습니다. 휴는 비개발자들도 쉽게 하둡 클러스터를 관리하고 데이터 처리 작업을 수행할 수 있도록 도와줍니다.

 

  • 스쿱(Sqoop): 스쿱은 관계형 데이터베이스와 하둡 클러스터 간 데이터 이전을 지원하는 도구입니다. 스쿱을 사용하면 관계형 데이터베이스의 테이블을 하둡의 HDFS로 가져오거나, 반대로 HDFS의 데이터를 관계형 데이터베이스로 내보낼 수 있습니다. 스쿱은 다양한 데이터베이스 시스템과 호환되며, 데이터 이전을 위한 맵리듀스 작업을 자동으로 생성하여 데이터 이동을 용이하게 합니다. 스쿱은 대량의 데이터를 효율적으로 이전하고 데이터 웨어하우스나 분석 시스템과 하둡 간의 통합을 용이하게 해 줍니다.

 

  • 카프카는 분산 스트리밍 플랫폼으로, 대량의 실시간 데이터 스트림을 처리하기 위한 고성능 메시징 시스템입니다. 카프카는 다양한 소스에서 데이터를 수집하고 여러 목적지로 데이터를 전달하는 역할을 합니다. 데이터의 스트림 처리에 중점을 두며, 대용량 및 고속의 데이터 흐름을 처리하기 위해 설계되었습니다. 카프카는 내구성, 확장성, 고가용성을 갖추고 있어서 다양한 애플리케이션에서 사용될 수 있습니다. 대규모 데이터 파이프라인, 실시간 스트리밍, 로그 처리 등 다양한 시나리오에서 활용됩니다.

 

 

하둡관리의 핵심 영역

클러스터 스토리지 관리

하둡데이터는 HDFS에 저장된다. 하둡의 balancer를 사용해 클러스터 내부에서 데이터가 특정위치에 집중되지 않도록 하며 성능과 관련된 작업을 진행한다.

안정성을 위해 hdfs 데이터를 관리하고 스냅숏을 만들기도 한다.

 

클러스터 리소스 할당과 job 스케줄링

페어 스케줄러는 장시간에 걸쳐 모든 애플리케이션이 리소스를 균등하게 배분받게 한다.

DRF(Dominant Resource Fairness)는 하둡 클러스터에서 리소스 스케줄링을 위해 사용되는 알고리즘입니다. DRF는 클러스터의 자원을 효율적으로 할당하기 위해 설계되었으며, 다양한 애플리케이션 및 사용자 간에 공정한 리소스 분배를 지향합니다.

 

DRF 알고리즘은 클러스터의 자원을 "우선순위"와 "비율" 기반으로 분배합니다. 각 애플리케이션은 우선순위를 가지며, 우선순위가 높은 애플리케이션이 먼저 자원을 할당받게 됩니다. 이때, 할당된 자원은 애플리케이션들의 비율에 따라 분배됩니다. 즉, 애플리케이션의 우선순위가 높을수록 해당 애플리케이션은 더 많은 자원을 할당받게 되고, 비율에 따라 할당된 자원의 양이 조정됩니다.

 

DRF의 주요 목표는 모든 애플리케이션이 동등한 비율로 리소스를 할당받을 수 있도록 하는 것입니다. 예를 들어, 하나의 애플리케이션이 다른 애플리케이션의 리소스를 독점하는 것을 방지하고, 모든 애플리케이션이 공평하게 리소스를 공유할 수 있도록 합니다.

 

DRF 알고리즘은 특히 다양한 애플리케이션이 동시에 실행되는 멀티테넌시 환경에서 유용합니다. 각 애플리케이션은 자체적인 우선순위와 비율을 설정하여 리소스를 할당받게 되므로, 서로 다른 우선순위와 비율을 가진 애플리케이션이 공존할 수 있습니다.

 

DRF 하둡 클러스터의 효율성과 공정성을 향상시키는데 도움을 줍니다. 리소스 사용의 균형을 조정하여 클러스터 전체의 성능을 최적화하고, 다양한 애플리케이션 간에 리소스를 공정하게 분배함으로써 공정성을 확보합니다.

 

하둡은 리소스 큐를 활용해 리소스들을 공유합니다. 따라서 해당 하둡 서비스가 어떤 큐(큐 별로 리소스 할당 정책을 다르게 배정한 경우)를 활용할지에 따라서 리소스정책을 다르게 가져갈 수 있습니다.

 

* Fair 스케줄러 이외에 커패시티 스케줄러로 설정이 가능하다

특정 잡에 대해서 보장된 리소스 용량과 상한선을 할당받는다. 특정한 잡이 일정 수준의 수행능력을 보장하여야 할 때 사용한다.

하둡 잡은 위와 리소스 스케줄링을 고려하여 스파크, 맵리듀스, 하이브, 피그 잡들을 구성한다. 해당 잡들은 DAG로 구성되며 여려가지 잡들이 서로 상호 의존적이기 때문에 우지와 같은 스케줄링 프레임 워크를 통해서 실패 시 쉽게 다시 시작할 수 있도록 한다.

 

 

'Tools > Hadoop' 카테고리의 다른 글

하둡 클러스터와 리소스 할당  (0) 2023.09.26
하둡 네임노드와 HDFS  (0) 2023.09.11
MapReduce 이해 하기  (0) 2023.07.25
Hadoop YARN 아키텍쳐  (0) 2023.07.02
Hadoop HDFS 아키텍쳐  (0) 2023.07.02