BigDATA/Hadoop

Hadoop이란? 구성요소? 용어?

태하팍 2024. 7. 2. 18:03
반응형

요즘은 AI의 시대가 되었지만 10년전만 해도 빅데이터 열풍이 불었었다.
당시 사내에서 해주는 하둡교육을 들었었는데 지금은 1도 기억이 나지 않는다 하하;;

2013.06.04 - [BigDATA/Hadoop] - [하둡교육 2일차] Hadoop 설치

2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Zookeeper

2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Pig

그나마 블로그에 끄적인 내용 덕분에 살포시 기억이 난다 ㅎㅎ

여차저차해서 하둡을 다시 공부해보려고 한다.

나란 녀석 귀엽게 포스트잇을 붙였다ㅋㅋㅋ

오늘은 용어를 익혀보자! 

하둡(Hadoop) : hadoop은 대용량 데이터를 분산처리 할 수 있는 자바 기반의 오픈소스 프레임워크 입니다.
HDFS(Hadoop Distributed File System) : HDFS는 대용량 파일을 분산된 서버에 저장하고,
                                                                       많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템 입니다.

네임노드(NameNode) : NameNode는 HDFS의 모든 메타데이터를 관리하고,
                                       클라이언트가 HDFS에 저장된 파일에 접근할 수 있게 해줍니다.
파일 시스템 이미지(fsimage) : HDFS의 네임스페이스(디렉토리명, 파일명, 상태정보)와 파일에 대한 블록 매핑 정보를
                                                저장하는 파일입니다.
에디트로그(editLog) : HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일 입니다.
데이터노드(DataNode): HDFS에 데이터를 입력하면 입력 데이터는 32MB의 블록으로 나눠져서
                                       여러 대의 데이터노드에 분산되어 저장됩니다.
                                       책이 오래되긴했다 ㅋㅋㅋ 32MB라니..128MB가 디폴트인데..
보조 네임노드(SecondaryNameNode) :  보조 네임노드는 주기적으로 네임노드의 파일시스템에 이미지 파일을
                                                                 갱신하는 역할을 수행합니다.
맵리듀스(MapReduce) : 맵리듀스 프로그래밍 모델은 과거부터 사용하던 알고리즘으로
                                        맵(map)과 리듀스(reduce)라는 두 개의 메소드로 구성된 알고리즘 입니다.
                                        대규모 분산 컴퓨팅 혹은 단일 컴퓨팅 환경에서 대량의 데이터를 병렬로 분석할 수 있게 합니다.
                                        요즘은 맵리듀스는 느려서 사용하지 않는다고 한다.
맵리듀스 잡(MapReduce Job) : 클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은
                                                    잡(job)이라는 하나의 작업 단위로 관리 됩니다.
잡트래커(JobTracker) : 잡트래커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링 합니다.
                                       (하둡 버전1) 2부터는 Job스케줄링은 리소스매니저가 한다.
태스크 트래커(TaskTracker) : Task Tracker는 사용자가 설정한 맵리듀스 프로그램을 실행하며,
                                                하둡의 데이터노드에서 실행되는 데몬 입니다.
                                               이때 map task와 reduce task 란? 사용자가 설정한 map과 reduce 프로그램 입니다.
입력 스플릿(input split) : 하나의 맵에서 처리해야 하는 입력 파일의 크기 입니다.
매퍼(Mapper) : 맵리듀스 프로그래밍 모델에서 맵 메서드의 역할을 수행하는 클래스 입니다.
                          매퍼는 key/value로 구성된 입력 데이터를 전달받아 이 데이터를 가공하고 분류해서 새로운 데이터 목록을 생성 합니다.
리듀서(Reducer) : 맵리듀스 프로그래밍 모델에서 리듀스 메소드의 역할을 수행하는 클래스 입니다.
                              리듀서는 map task의 출력 데이터를 입력 데이터로 전달받아 집계연산을 수행 합니다.
셔플(Shuffle) : map task와 reduce task 사이의 데이터 전달 과정 입니다.
콤바이너(Combiner) : 콤바이너 클래스는 매퍼의 출력 데이터를 입력 데이터로 전달 받아 연산을 수행 합니다.
                                   이러한 연산을 통해서 셔플할 데이터의 크기를 줄이는데 도움을 줍니다.
파티셔너(Partitioner): 파티셔너는 map task의 출력 데이터가 어떤 reduce task로 전달 될지를 결정 합니다.


SSH(Secure Shell) : SSH는 네트워크상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고
                                   다른 시스템으로 파일을 복사 할 수 있게 해주는 응용 프로토콜이나 응용 프로그램 또는 그 프로토콜을 의미 합니다.

하둡이 뭔지 구성요소는 뭔지 알아보자!

 

Hadoop은?

  • Hadoop은 Big Data를 처리하고 분석하는데 사용되는 OpenSource Software Framework 입니다.
  • 저렴한 하드웨어로 구성된 분산 시스템에서 페타바이트 규모의 데이터를 처리 할 수 있도록 설계
  • data를 분석 할 때 나눠서 분석하고 합치면 되므로 빠르다.
  • 저장된 데이터를 변경하는 것이 불가능하고, 실시간 데이터와 같은 신속한 작업에서는 부적합하다.

Hadoop 구성요소

  1. HDFS(Hadoop Distributed File System)
    1. Hadoop 분산 파일 시스템
      1. 데이터를 저장하는 분산형 file system으로 실시간처리보다는 배치처리 목적으로 설계 → 작업량이 작거나 빠른 데이터 응답이 필요한 작업에는 적합하지 않음
    2. 데이터를 여러 노드에 분산저장하여 처리 속도를 높입니다.
    3. NameNode와 DataNode로 구성
      1. NameNode
        1. 분산처리 시스템에서 Master를 담당
          1. Meta데이터 관리와 DataNode를 관리
          2. 각 DataNode에서 전달하는 Meta데이터를 받은 후 전체 노드의 Meta데이터 정보와 파일정보를 묶어서 관리
          3. file system을 유지하기 위해 Meta데이터를 관리
            1. 데이터를 저장할 시 기본적으로 블록단위로 들어옴 → 이때 들어온 블록들을 어느 DataNode에 저장 할 지를 정해준다고 이해하자.
          4. DataNode는 실제로 데이터를 저장하는 컴퓨터이기 때문에 에러가 날 수 있음 → NameNode와 DataNode는 3초마다 Heartbeat을 주고 받는다.
            1. DataNode에서 살아있다고 NameNode에 문서를 보내 알려준다. → 알림이 오지 않으면 문제가 생겼다고 판단.
              1. 문제가 생긴다면 다른 DataNode에 복제된 블럭을 가지고와서 사용하면 된다.
      2. DataNode에 블록 단위로 나누어 데이터를 저장
        1. 주기적으로 NameNode에 Heartbeat와 Block Report를 전달한다.
          1. Heartbeat : DataNode의 동작여부를 판단하는데 이용
            1. Heartbeat이 전달되지 않는 DataNode는 동작하지 않는것으로 판단 → 더이상 데이터를 저장하지 않도록 설정한다.
          2. Block Report : Block의 변경사항을 체크하고, NameNode의 Meta 데이터를 갱신한다.
      3. Meta 데이터는 전체적인 구조를 나타낸다.
        1. 파일이름, 파일크기, 파일생성시간, 파일 접근권한, 파일 소유자 및 그룹 소유자, 파일이 위치한 블록의 정보 등으로 구성된다.
  2. MapReduce
    1. 대규모 데이터 집합을 처리하는 프로그래밍 모델
    2. 입력 데이터를 작은 작업 단위(Map)로 분산하고, 각 작업 단위를 병렬적으로 수행한 후 결과를 하나로 합칩니다.(Reduce)
  3. YARN(Yet Another Resource Negotiator)
    1. Hadoop Cluster의 자원관리 시스템
    2. Cluster의 자원을 Application에 할당하고 관리
    3. Container라는 단위로 자원을 관리
      1. Container는 CPU, Memory, Disk 등의 자원을 포함
  4. 기타 구성 요소
    1. HBase: NoSQL Database
    2. pig: 데이터 분석을 위한 Scripting 언어
    3. Hive: SQL과 유사한 언어를 사용하여 DataWareHouse 작업을 수행할 수 있도록 하는 도구
    4. Oozie: Hadoop 작업을 자동화하는데 사용되는 도구
    5. Flume: 로그 데이터 등을 실시간으로 수집하는데 사용되는 도구

 

아주 기초적인 내용을 학습을 했습니다.
좀 더 아키텍처를 파봅시다!:)

하둡 커미터 가즈아~~

반응형