ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터 전문가의 하둡관리] Hadoop 아키텍처
    개발지식 아카이브/Data - Hadoop 2024. 12. 16. 07:50

    Hadoop 아키텍처

     

     

     


     

    1. 하둡은 무엇일까요?

    하둡은 Big Data를 효과적으로 처리하기 위한 기술입니다.

     

     

     


     

     

     

    2. 하둡 컴포넌트엔 어떤 것들이 있을까요?

     

        - HDFS: 파일 시스템 

        - Yarn: 스케줄링, 리소스 관리 프레임워크

     

    하둡 컴포넌트들 중 가장 핵심은 HDFS와 Yarn 두 가지입니다.

    그 외에 다른 컴포넌트들도 봅시다.


        - MapReduce: 병렬 처리 프레임워크    - HBase: HDFS를 스토리지로 사용하는 분산칼럼지향 데이터베이스


        - Hive: HDFS 데이터를 위한 분산 DW, SQL 기반 쿼리 제공
          - 잠깐! Hive는 데이터베이스가 아님. 그러면?
            - HDFS 디렉토리들을 테이블로 보여줄 뿐..
            - 쿼리로 얻은 데이터를 처리할 MapReduce job을 생성할 뿐..
          - Hive는 HiveQL -> MapReduce Job으로 변환하는 과정에서 지연을 발생시킴. 따라서 실시간 app에서는 권장 X


        - Hue: HDFS 사용자 인터페이스

     

     

     

     

     

     


     

     

     


    3. 하둡을 관리하기 위해 알아야 하는 것


        - 맵리듀스, HDFS와 모든 하둡 코드는 자바로 작성되어 있다.


        - Spark는 Scala가 인기가 높다.


        - 하둡은 클라우데라, 호튼웍스 같은 업체에서 공급된 배포판을 사용하는 경우가 많다.


        - 하둡 1과 2의 차이점
          - 하둡 2에서는 HDFS레이어와 Spark(혹은 MR) 사이에 Yarn을 두어 프로세싱과 스케줄링을 분리했다.
            - Yarn은 클러스터 리소스 관리와 작업 스케줄링을 책임진다.
          - 하둡2에서 스탠바이 네임노드가 탄생했다.
          - 하둡 2는 MR 외에 Spark 등의 다른 엔진도 사용할 수 있다.
            - Spark: 반복적 알고리즘 프로세싱 & 인터랙티브 작업 보완 (인메모리)
            - Impala: 인터랙티브 SQL
            - Spark Streaming & Flink: 스트리밍 데이터의 분산 컴퓨팅

     

     


     

    4. 그러면 하둡 관리자는 실제로 무엇을 관리합니까?

     

    1) 클러스터 스토리지 관리 (HDFS)


    2) 클러스터 리소스 할당


    3) Job Scheduling


    4) 데이터 보안 (Ex. Kerberos..)

     

    4가지가 하둡 플랫폼 관리자의 주요 업무가 되겠습니다.

     

     

     


     

     

     

     

    5. 분산 컴퓨팅의 필수 조건

    확장 가능성 & 장애가 발생하더라도 정상적으로 작동할 수 있는 능력 & 데이터 복구 능력

     

        1) Scalability


        2) Fault tolerance
          - 노드 하나에 Fault가 발생하더라도 이것이 SPOF이 되어서는 안 된다는 의미
          - 블록 복제로 풀어냄 (default: 3)


        3) Recoverability
          - 데이터는 손실되어서는 안 됨

     

     



     6. 하둡 클러스터 (컴퓨터 머신들)

       하둡 클러스터에는 두 종류의 노드가 있다
          - 마스터 노드
          - 워커 노드

     

     

    • 마스터 노드는 Hadoop 클러스터의 중앙 제어 역할을 하며, 데이터와 리소스를 관리합니다. (=관리자)
    • 워커 노드는 데이터를 실제로 저장하고 처리하는 작업을 수행합니다. (=일꾼)

     

     

     

     


     

     

     

    7. HDFS의 구조를 알아보자

    하둡의 스토리지인 HDFS!

    HDFS를 구성하는 노드들은 네임노드, 워커노드로 나눌 수 있다.




    네임노드를 알아보자!

     

          1) 마스터 노드 위에서 동작한다.


          2) Active Namenode는 단 1개만 실행된다.


          3) HDFS 스토리지의 메타데이터를 관리한다.

            - 메타데이터 = 데이터가 어느 데이터노드에 저장되어 있고, 접근 권한은 어떻고 등등..
            - fsimage라고 하는 파일에 저장하여 관리한다. (= file system image)


          4) 데이터노드의 주기적 하트 비트를 받아서 처리한다.
            - 클라이언트와 데이터 노드들 사이의 중재자 역할을 한다.


          5) 필수 요소는 아니지만 보조역할을 하는 세컨더리 네임노드스탠바이 네임노드라는 보조 네임노드들도 있습니다.

             - 세컨더리 네임노드는 메타데이터 업데이트를 대신 수행하여 액티브 네임노드의 부담을 줄여줍니다.

             - 스탠바이 네임노드는 대기조로 존재하다가, 액티브 네임노드가 내려가면 즉시 액티브 네임노드를 대체합니다.

     

     

     

     

    데이터노드를 알아보자!


          1) 워커 노드 위에서 동작한다.


          2) 실제 데이터 블록들이 저장되는 곳이 바로 데이터 노드이다.
           - 데이터 노드는 네임노드에 주기적으로 하트비트를 전송해 자신이 살아있음을 알린다.
           - 데이터 노드는 File System에서 일어나는 모든 변화를 네임노드에 보고하여 네임노드와 동기화한다.

     

     

     


     

     


    8.  HDFS 특징


        - HDFS에 파일은 여러 블록으로 나뉘어 저장될 수 있다


        - 기본 블록의 크기는 128MB


        - HDFS는 WORM Access 모델을 채택한다. (Write-once-read-many)
          - 이는 한번 쓰면 수정할 수 없다는 의미이다.
          - 이동/삭제/이름변경 만 지원  

     

     


    HDFS에 쓰인 파일을 수정할 수 없다는 것은 HDFS 기반의 데이터 레이크 아키텍처의 한계로 이어집니다.

    그리고 최근 데이터 레이크하우스 아키텍처가 각광받고 있는 이유와 연결되기 때문에,

    기억해 주세요!

     

     

     

     

        - HDFS에 저장하는 포맷은 텍스트 포맷보다 바이너리 포맷이 선호된다 (불완전 데이터 생성 감지를 위해)
          - ex. Avro


        - 파일 생성, 삭제가 일어나자마자 즉시 fsimage에 즉시 반영되는 것은 아니다
          - 그러면?
            - 네임노드는 edit log를 만들어 로그로 기록을 해둔다.

            - 그리고 @@시간마다 이 edit log들을, 세컨더리 네임노드가 fsimage와 병합을 해준다. 

            -> 이 과정을 체크포인트라고 부르며, 네임노드에서 수행되는 중요한 오퍼레이션입니다.

     

     

     


        - 네임노드에 문제가 생겨서 죽으면 스탠바이 네임노드가 네임노드로 승격된다
          - (주의) 그렇다 해도 이러한 일은 가능한 일어나지 않아야 한다

          - 스탠바이 네임노드가 교체되는 현상이 잦으면 반드시 분석과 조치가 필요하다


        - 네임노드는 fsimage 파일과 동일한 데이터를 RAM에 올려두고 있다
          - 요청이 오면 RAM 메모리에서 찾아서 알려 준다 (빠른 접근)
          - RAM을 쓰지만 디스크에도 두는 이유는 종료 후 유실을 막기 위한 것

     

     

     


     

     

     

     

    9. YARN

    YARN에는 크게 3개의 컴포넌트가 있다.

     

     

    1) 리소스 매니저 = YARN의 중앙 자원 관리자

          - 마스터 노드 위에서 동작
          - 클러스터에서 단 하나만 실행되는 서비스이다.
          - 클러스터의 리소스를 할당하고 워커 노드의 태스크를 스케줄링한다.
          - 리소스매니저 = only scheduler (프레임워크 고려 X)

     

     

    2) 애플리케이션 마스터 = 개별 애플리케이션의 생명 주기 관리
          - application마다 1개씩 실행된다
            - 즉 application이 종료되면 사라진다
          - application의 리소스에 대해 리소스매니저와 협상하면서 리소스를 조절한다

     

     

    3) 노드 매니저 = 각 노드의 로컬 리소스 관리
            - 물리 워커 노드 위에서 동작한다.
            - 리소스매니저에 노드 상태 및 태스크 상태를 보고한다.
            - 노드에서 실행되는 컨테이너의 수명 주기를 관리한다.

     




     

    하나의 노드에는 하나의 노드매니저만 존재한다고 했다.

    그러면 하나의 노드에 여러 개의 애플리케이션 마스터가 존재할 수 있을까?

     

     

    정답은 Yes이다. 한 노드에서는 여러 개의 앱이 실행될 수 있기 때문에, 애플리케이션 마스터는 여러 개가 실행되는 것이 가능하다!

     

     

     

     

     


    이 포스팅은 2024년 10월 ~ 12월에 공부한 도서인 빅데이터 전문가의 하둡관리 1~2장을 공부한 후 작성하였습니다.

     

     

     

     

    댓글

Copyright in 2020 (And Beyond)