아파치 하둡이란?

  • 빅데이터를 저장, 처리, 분석할 수 있는 프레임워크

 

아파치 하둡은 다양한 에코 시스템 존재

  • 회사에서는 하둡 하나만 가져다 쓰는것이 아니라 다양한 소프트웨어 추가적으로 활용
  • 예를 들어 HIVE, HBASE, Solr, ...

 

하둡 등장 계기

  • 기존의 구조로는 대용량 데이터 처리할 수 없음 (저장공간, 계산비용 등 ...)
    • IBM mainframe과 같은 대형 컴퓨터 시스템은 너무 비쌌다.
    • -> 그래서 생각한 것이 "저렴한 PC 여러개를 묶어서 사용하자!"
    • 이 아이디어를 구현하기 위해 구글에서 논문을 발표한 것 (아래에서 이어서 설명) 
  • 이 문제를 해결하기 위해 구글에서 논문 발표
    • 저장공간으로는 GFS(Google File System)이라는 것을,
    • 계산방법으로는 Map-Reduce라는 것을 소개
  • 하지만, 구글에서 이러한 시스템을 오픈소스로 공개하지는 않았음
  • 아파치가 GFS, Map-Reduce 방식을 보고 구현한 것이 바로 "아파치 하둡"

 

전통적인 대용량 계산

  • 기존에는 프로세서에 의존적인 수행 ex) IBM mainframe, super computer
  • 아주 빠른 프로세서와 아주 큰 메모리가 필요했다 
    • 이것을 지속적으로 향상하기에는 한계가 존재 : (

 

분산처리 시스템의 등장

  • 하나의 컴퓨터를 크게 만들지 말고, 작은 컴퓨터를 여러개 연결해서 큰 컴퓨터 하나를 만들자 라는 아이디어
  • 초기에는 MPI(Message Passing Interface)이용했는데, 프로그래밍이 너무 복잡하다는 문제 존재
  • 추가적으로 partial failure에 대한 대처가 부족
    • partial failure? 여러개의 컴퓨터 중 일부의 컴퓨터가 고장하는 것
    • -> 일부 컴퓨터가 고장나더라도 정상적인 수행이 가능해야 한다
    • (참고로, 하둡에서는 3개의 복사본을 유자하여 partial failure 문제를 해결하고자 노력)

 

하둡의 핵심 컨셉

  • high-level 코드로 작성 (네트워크 프로그래밍 몰라도 사용할 수 있도록)
  • 각 노드(=컴퓨터)는 가급적 최소한의 데이터만 주고 받음
  • 데이터는 여러 노드에 분산되어 저장되어 fault tolerance 구현
  • 데이터를 64MB / 128MB 단위의 블록으로 나누어 저장하고, 로드함
  • 데이터에 대해 연산을 수행할 때 Map-Reduce(MR) 방식 사용
  • Map Task는 하나의 block을 대상으로 수행
  • Master 프로그램은 Task들을 관리함

 

하둡 구성요소

  • HDFS (Hadoop Distributed File System)
    • 클러스터에 데이터를 저장
    • 자바로 작성된 파일 시스템
    • 데이터는 블록으로 분할되고, 클러스터의 여러 노드에 분산되어 저장
    • 각 블록은 여러 개의 replication 생성하여 사용 (일반적으로 replicaiton은 3개)
    • Name Node로 불리는 master node는 어떤 block들이 파일을 구성하고, 어느 위치에 저장되어 있는지 정보를 메타 데이터로 관리
      • NameNode의 메타데이터 이용하지 않으면 HDFS에 접근할 수 없음
      • 따라서 NameNode는 항상 실행되고 있어야 한다
  • MapReduce
    • 클러스터의 데이터를 처리 
    • Map 태스크는 전체 데이터 셋에 대해 별개의 부분에 대한 작업 수행 (HDFS 블록을 대상으로 수행)
      • Map단계에서는 흩어져 있는 key, value로 데이터를 묶어준다
    • intermediate 데이터를 Reduce phase를 수행할 노드로 분산하여 전송
      • key를 중심으로 필터링 및 정렬을 진행

 

하둡 클러스터

  • 하둡 클러스터는 HDFS, MapReduce 사용할 수 있도록 구성된 여러개의 machine을 의미함
  • 각각의 개별 machine은 노드
  • 하나의 하둡 클러스터는 여러 개의 node로 구성될 수 있다.

 

HDFS 접근 방법

  • 셸 커맨드 라인을 이용 (hadoop fs)
  • 자바 API
  • Flume, Sqoop, Hue

 

---

1. 하둡 클러스터는 여러 개의 노드로 이루어져 있다.

2. 각각의 노드에 데이터가 블록 단위로 분산되어 저장된다.

3. 마스터 노드는 어떤 블록들이 파일을 구성하고 있고, 어느 위치에 저장되어 있는지 meta 정보를 관리

 

'데이터처리 > Pyspark' 카테고리의 다른 글

[pyspark] distinct() vs dropDuplicates()  (0) 2021.05.24

+ Recent posts