[Data] Hadoop?

Ik·2022년 12월 29일
0

Data

목록 보기
23/34

탄생

  • Yahoo나 Google과 같은 검색 엔진이 막 출발한 시점에서 끊임없이 늘어나는 빅데이터를 처리하고 웹 결과를 더 빨리 제공해야 한다는 필요성이 절실해지면서 탄생
  • 당시 Google의 MapReduce라는 프로그래밍 모델이 있었는데, 이 모델은 하나의 애플리케이션을 여러 부분으로 나누어 서로 다른 여러 노드에서 실행되도록 하는 방식을 취했는데 여기서 아이디어를 얻어 Apache Nutch 프로젝트를 진행하던 중 하둡을 시작하게 되었다
    • 몇년 후 Nutch는 웹 크롤러 요소에 집중했지만, 하둡은 분산형 컴퓨팅 및 처리 부분을 담당하게 되어 Nutch에서 분할되어 나옴

탄생 흐름

text mapping 검색엔진 lib 개발
=> java 기반의 platform 독립적인 full text 검색엔진 lib 개발
=> Web 검색위해 index 갯수를 늘리면서 여러 개의 머신(=노드) 이용, Web 상에 text뿐만 아니라 모든 Content 검색 + 저장, 분석 개발 확장성(여러 언어, 프로그램 자동화(html parsing해서 자동화 등))
=> 여러 개 노드 사용 문제 발생, 클러스터 매니저 탄생



하둡 이란

  • full name : Apache Hadoop Stack
  • 대용량 스토리지
  • 대규모 데이터 처리
  • scale out(증설)
    • 서버 수를 증가하며 저장 용량 확장
    • 분산처리 성능 향상(분산처리는 스케일 아웃 후에 성능 향상을 도운다는 의미)

batch process

  • 대량의 데이터를 대상으로 서버 대 수로 나눠 한번에 일괄 처리
  • 관계형 DB X, 검색엔진 구현 SW X, 트랜잭션 제어기능 X
  • 클러스터 방식의 시스템
    • 다량의 서버가 클러스터로 구성되어 통신, 커뮤니케이션하는 방식

Commodity

  • IT분야에서 비즈니스 컴퓨팅을 위해 더 많은 가능성을 제공한다는 것



핵심 원리

  1. Failure tolerance(장애 허용)
    • 시스템 부품에 일부 문제가 발생해도 정신적 혹은 부분적으로 기능을 수행할 수 있다는 것
    • HW, SW에 장애가 존재한다는 가정 하에 시스템 운영
    • 일부 장애가 시스템에 큰 영향 X
  2. Load Balancing - Distributed/Resiliency
    • 기반 SW System이 실패한 작업을 책임지고 재시도
    • 한 머신(노드)이 문제 발생 시 다른 머신이 도움
    • 장애처리 : 즉시 대응 X, 탄력성 유지하게끔
  3. Data Loss
    • 머신에 장애 존재해도 데이터는 그대로 유지



하둡 프로그래밍

  • 대부분 Java로 작성되지만 일부 네이티브 코드는 C를 기반
    • 하둡 프로그램은 Python, C++ 등의 다양한 프로그래밍 언어로 작성가능
    • 따라서 프로그래머는 자신에게 익숙한 도구를 사용해서 유연하게 일할 수 있다
  • 명령줄 유틸리티는 셸 스크립트로 작성되는 것이 일반적




하둡 데이터베이스

  • 데이터 스토리지나 관계형 데이터베이스를 위한 솔루션 X
  • 오픈 소스 프레임워크
    • 실시간으로 엄청난 양의 데이터를 동시에 처리하는 것이 주목적
    • 대규모로 병렬 컴퓨터 처리를 활용하기 때문에 가능
  • 유연한 데이터 처리 가능
    • 데이터는 HDFS에 저장되며 데이터를 비구조적, 반구조적, 구조적 형식으로 저장할 수 있다
  • SQL이나 RDBMS 등의 데이터베이스와는 다르다
    • 대신, 하둡 프레임워크는 사용자에게 다양한 데이터베이스 유형에 대한 처리 솔루션을 제공
  • Apache HBase와 같은 여러 데이터베이스는 수백, 수천 개의 상용 서버에 저장된 데이터 노드 클러스터에 흩어져 있다
  • 하둡은 상용 하드웨어의 클러스터에 방대한 데이터 세트를 분산할 수 있는 프레임워크
    • 클러스터 : 컴퓨터 클러스터는 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합
    • 하둡의 처리는 여러 서버에서 동시에 병렬로 수행
    • 기업이 단시간에 방대한 데이터를 처리하도록 도와주는 소프트웨어 에코시스템
      • 에코시스템 : IT분야의 여러 기업이 몇몇 리더기업을 중심으로 경쟁과 협력을 통해 공생(共生)하고 함께 발전해 나가는 모습을 지칭
    • 고객은 데이터와 프로그램을 하둡에 제출합니다. 간단히 말해, HDFS(하둡의 핵심 구성 요소)는 메타데이터와 분산형 파일 시스템을 처리합니다. 그런 다음, 하둡 MapReduce가 입력/출력 데이터를 처리하고 변환합니다. 마지막으로, YARN이 클러스터에 작업을 분산합니다
    • 하둡을 사용하는 고객은 높은 가용성과 장애 시점 탐지 기능을 기본으로 제공받아, 상용 리소스를 훨씬 효율적으로 사용
    • 고객은 연결된 비즈니스 시스템에서 쿼리를 수행할 때 빠르게 응답 가능

하둡은 빅데이터 활용을 극대화하고 싶어 하는 기업에 비교적 간편한 솔루션을 제공

특징

  1. 대용량 데이터를 범용 서버만으로 처리 가능
    • 데이터 파일 크기나 개별 장비의 파일 시스템 크기에 제한이 없음
  2. 용량 확장성
    • 데이터가 증가하면 노드를 추가로 처리가능
  3. 높은 처리량 실현
    • 데이터의 부분 수정 불가, 랜덤 접근 불가, 큰 블록 처리 -> 고속 처리로 이어짐.
  4. 슬레이브 노드의 일부가 고장 나도 데이터 손실을 방지 가능
    • 복수개의 노드에 데이터 복제 유지




영향

  • 현행 클라우드 데이터 레이크의 기초 토대로 인정
  • 기업에서 무료, 오픈 소스 소프트웨어와 저렴한 상용 하드웨어를 사용해 확장할 수 있는 방식으로 빅데이터 세트를 분석, 쿼리할 수 있게 해준 역할
  • 상용(proprietary) 데이터 웨어하우스(DW) 솔루션과 폐쇄형 데이터 형식에 실질적인 대안을 제시해주는 효과
  • 하둡이 도입되면서 기업에서 엄청난 양의 데이터를 저장, 처리할 능력을 신속히 확보할 수 있게 되었고, 컴퓨팅 파워를 증가하고 내결함성, 데이터 관리 유연성, DW에 비해 저렴한 비용은 물론 뛰어난 확장성까지 얻게 되었다
  • Hadoop은 빅데이터 분석 분야의 향후 개발을 위해 길을 개척했다고 볼 수 있다
    • 대표적인 예로 Apache Spark가 있다




하둡 이점

Scalability

  • 확장성
    • 기존 시스템은 데이터 스토리지를 제한하지만, 하둡은 분산형 환경에서 작동하기 때문에 확장가능
    • 분산환경 덕에(스케일 아웃을 통해 데이터 용량 확장) 시스템 중단 없이 손쉽게 확장 가능
    • 이 때문에 데이터 설계자가 하둡에서 일찍부터 데이터 레이크를 구축할 수 있다

Resilience

  • 복원력, 회복 탄력성
    • hadoop의 Failure Tolerance 원리로 인해
    • HDFS(Hadoop Distributed File System)는 근본적으로 복원력이 있다
    • 하둡 클러스터 내 노드에 저장된 데이터는 클러스터의 다른 노드에도 복제되어 하드웨어나 소프트웨어 오류 가능성에 대비
    • 이러한 의도적인 중복 설계 덕분에 내결함성이 보장
    • 노드 한 개가 다운되더라도 클러스터 내에 항상 그 데이터의 백업본이 준비되어있다

Data Diversity

  • 유연성
    • 기존 관계형 데이터베이스 관리 시스템과는 달리, 하둡을 다룰 때는 형식에 구애받지 않고 데이터를 저장할 수 있다
    • 반구조적, 비구조적 형식도 마찬가지
    • 하둡을 이용하면 기업에서 새로운 데이터 소스에 손쉽게 액세스하여 여러 가지 데이터 유형을 활용할 수 있다

Low Cost

  • 저비용
  • 이 전에 RDB에 비해 라이센스 없어도 사용 가능하며 확장도 용이

Spead

  • 속도 측면에서 복잡한 쿼리 날리면서 동시에 map/reduce를 이용한 병행처리, 동시 처리 프로세스 실행 가능
    • 클러스터링 이용해 다중 쿼리 이용한다 보면 될듯



하둡 문제점

  • 복잡함
    • 하둡은 저수준 Java 기반 프레임워크라서 최종 사용자가 다루기에는 지나치게 복잡하고 어려울 수 있다
    • 하둡 아키텍처는 상당한 수준의 전문 지식과 리소스가 있어야 설치, 유지하고 업그레이드할 수 있다
  • 성능
    • 하둡은 디스크로부터 읽기, 쓰기를 자주 이용하여 연산을 수행하는데, 이렇게 하면 Apache Spark와 같이 데이터를 최대한 메모리 내에 저장하고 메모리 내에서 처리하고자 하는 프레임워크에 비해 시간이 오래 걸리고 비효율적
  • 장기적 실용성
    • 지난 2019년에는 하둡과 관련해 참 많은 일이 벌어졌고 온 세상이 주목했습니다. Google에서 2004년에 발표한 중대한 MapReduce 관련 논문은 Apache Hadoop의 제작을 뒷받침하는 역할을 하였고, 그러면서 MapReduce 사용을 전면 중단하게 되었습니다(Google의 기술 인프라 사업부 선임 부사장(SVP) Urs Hölzle의 트윗 참조). 또한 하둡과 관련해 몇 차례 세간의 이목을 집중시킨 합병과 인수 건도 있었습니다. 또한 지난 2020년에는 하둡의 대표적인 제공업체에서 자사 제품을 하둡 중심에서 벗어나 다른 방향을 지향하기로 했는데, 이는 이제 하둡은 "기술이라기보다 하나의 철학에 가깝기 때문"이라고 밝혔습니다. 마지막으로, 2021년 한 해 동안 흥미로운 변화가 많이 일어났습니다. 지난 2021년 4월에는 Apache Software Foundation에서 하둡 에코시스템에서 열 개 프로젝트를 사용 중단한다고 발표했습니다. 그리고 2021년 6월에는 Cloudera가 유한회사로 전환하는 데 동의했습니다. 이 결정이 하둡 사용자에게 어떤 영향을 미칠지는 아직 두고 볼 일입니다. 이렇게 우려되는 상황이 많아진 데다 디지털화가 점점 절실해지면서 수많은 기업이 하둡과의 관계를 다시 생각해보게 되었습니다.



하둡 쿼리

Apache Hive

  • Apache Hive는 초기에 하둡으로 SQL을 쿼리하는 데 일반적으로 사용했던 솔루션
  • MySQL의 동작, 구문, 인터페이스를 에뮬레이션하여 프로그래밍을 단순화
  • Java API와 JDBC 드라이버가 내장되어 있기 때문에 Java 애플리케이션을 많이 사용한다면 좋은 옵션이 된다
  • 개발자에게 빠르고 간단한 솔루션을 제공하지만 다소 느리고 읽기 전용 기능만 제공하기 때문에 상당히 제한적

IBM BigSQL

  • IBM에서는 하둡에 고성능 대량 병렬 처리(MPP) SQL 엔진을 제공
  • HDFS 데이터에 액세스하는 것 외에도, RDBMS, NoSQL 데이터베이스, WebHDFS 및 기타 데이터 소스에서 가져올 수 있다




하둡 에코 시스템

  • 코어 모듈과 하위 모듈로 구성

코어 모듈

  • Hadoop Distributed File System(HDFS), Yet Another Resource Negotiator(YARN), MapReduce, Hadoop Common 등

HDFS

  • Hadoop Distributed File System
  • 말 그대로 하둡이 실행되는 파일을 관리해주는 시스템
    • 다양한 구조적 및 비구조적 데이터 노드에 걸쳐 대량의 데이터 세트를 관리
    • 그와 동시에 메타데이터를 로그 파일의 형태로 보관
  • Java 기반 시스템의 일종으로, 클러스터 내 여러 노드에 걸쳐 대규모 데이터 세트를 내결함성 있는 방식으로 저장할 수 있게 해준다
  • 하둡 분산형 파일 시스템에서 모든 데이터 스토리지가 시작되고 끝난다

NameNode

  • Hadoop HDFS의 마스터 데몬은 NameNode
    • 마스터 노드라고도 부름
  • 파일 시스템 네임스페이스를 관리하고 이 파일들에 대한 클라이언트 액세스를 제어
  • 블록 번호와 위치 등과 같은 메타데이터를 저장
  • 주로 파일과 디렉터리로 구성되며 파일 이름 지정, 종료, 열기 등의 파일 시스템 명령을 실행

DataNode

  • 슬레이브 데몬
  • 클라이언트가 요청한 읽기 및 쓰기 함수를 실행하면서 실제 데이터 또는 블록을 저장
  • DataNode도 마스터 NameNode의 명령에 따라 복제본 생성, 삭제 및 복제를 담당
  • DataNode는 두 개의 시스템 파일로 구성
    • 하나는 데이터에 사용하고, 나머지 하나는 블록 메타데이터를 기록하는 데 사용
  • 애플리케이션이 시작되면 마스터와 슬레이브 데몬 사이에 핸드셰이크를 하여 네임스페이스와 소프트웨어 버전을 확인
    • 불일치가 발견되면 자동으로 DataNode가 해제

MapReduce

  • MapReduce는 프로그래밍 모델 겸 대규모 데이터 세트의 병렬식 처리를 위해 쓰이는 빅데이터 처리 엔진
    • 핵심 처리 구성 요소
    • 방대한 용량의 구조적, 비구조적 데이터를 처리할 때 애플리케이션을 쉽게 작성할 수 있는 프레임워크를 제공
  • 원래 MapReduce가 하둡에서 이용할 수 있는 유일한 실행 엔진이었는데, 하둡에서 나중에 Apache Tez, Apache Spark 등과 같은 다른 엔진 지원도 추가
  • 프로그래머는 MapReduce에서 두 가지 기본 함수를 지정
    • Map 함수는 데이터 처리의 비즈니스 로직
      • Map 단계에서는 데이터 세트가 키/값 쌍으로 나뉘는 다른 데이터 세트로 변환
    • Reduce 함수는 map 함수의 중간 데이터 출력을 요약, 집계하여 최종 결과를 산출
      • Reduce 단계에서는 InputFormat 클래스를 통해 프로그래머에 따라 출력을 변환

YARN

  • Yet Another Resource Negotiator
  • YARN은 클러스터 리소스 관리, 작업 계획, 그리고 하둡에서 실행되는 작업 예약에 사용
  • MapReduce의 성능이 개선된 새로운 버전
    • 프로그래머들이 실시간 인터랙티브 스트리밍 애플리케이션을 구축할 수 있다
    • 그 외 작업 시퀀스 예약과 처리, 실행에도 사용

Hadoop Common

  • Hadoop Common은 다른 Hadoop 모듈을 지원하는 여러 라이브러리와 유틸리티를 총망라한 일련의 서비스를 제공

하위 모듈

  • Apache Hive, Apache Impala, Apache Pig, Apache Zookeeper, Apache Flume 등



하둡 관련 소프트웨어

Apache Hive

  • 하둡에서 실행되는 데이터 웨어하우스 소프트웨어로서 사용자가 HiveQL이라는 SQL 유사 쿼리 언어를 사용해 HDFS 데이터를 다루도록 지원

Apache Impala

  • Apache Hadoop에 적합한 오픈 소스, 네이티브 분석 데이터베이스

Apache Pig

  • 보통 MapReduce를 통한 추상화로서 하둡과 함께 쓰여 데이터의 흐름에 따라 표시되는 대규모 데이터 세트를 분석하는 데 쓰이는 툴
  • Pig은 조인, 필터링, 정렬, 로드 등의 작업을 지원

Apache Zookeeper

  • 고도로 안정적인 분산형 처리를 지원하는 중앙 집중형 서비스

ref

0개의 댓글