• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 하둡 기초 개념
      2024년 09월 30일
      • 31514
      • 작성자
      • 2024.09.30.:46

      대용량 분산 서비스가 필요한 이유

      • 대용량 데이터를 손실 없이 보관하기 위해
      • SQL과 같이 구조적 데이터 뿐 아니라, 비구조화/반구조화 데이터를 처리하기 위해
      • 순차적 처리보다는 병렬 처리가 더 빠르니까

      대용량 분산 서비스의 필요 조건

      • 분산 파일 시스템과 분산 컴퓨팅 시스템
      • 몇 대의 노드(서버)가 고장나도 신뢰성을 유지할 수 있는 Fault Tolerance
      • 용이한 확장

      하둡 1.0

      • HDFS(분산 파일 시스템)과 MapReduce(분산 컴퓨팅 시스템)으로 구성
      • 하지만 MapReduce가 너무 저수준이라 사용자들이 어려움 호소
      • MapReduce 위에 고수준의 프레임워크 Pig, Hive, Presto 등 출현

      하둡 2.0

      • MapReduce 대신 YARN
      • YARN은 고수준 프레임워크를 사용하는 사용자들을 위해 조금 더 범용적인 자원 관리 프레임워크(Resource Management Framework)
      • HDFS도 신뢰성과 견고성을 높여 HDFS2로 발전
      • YARN위에 MapReduce, Spark, Tez 등을 올려 사용

      HDFS

      <개념>

      대용량 분산 파일 시스템

       

      <특징>

      하나의 파일을 기본값 128MB 크기의 블록으로 나누어 여러 서버에 저장

      서버의 고장을 대비하여 최소 3대 이상의 서버에 저장

       

      <구조>

      • Name Node(Master)는 어떤 파일이 있고, 파일이 어떤 Data Node(Slave)에 나뉘어져 있는지에 대한 정보를 저장하는 디렉토리
      • 특정 Data Node가 고장나면 해당 Data Node에 있던 블록들을 파악하고 새로운 Data Node에 정보를 저장하여 3개 이상을 유지
      • Data Node가 가지고 있는 파일 시스템에 데이터 블록 저장

      <Name Node 이중화 방법>

      1. Active/StandBy - Name Node에 장애가 발생하면 즉시 StandBy가 대체
      2. Secondary - 그냥 복제본, 장애가 발생하면 사용자가 직접 복구 필요

       

      MapReduce

      <개념>

      대용량 분산 컴퓨팅 서비스

       

      <특징>

      데이터 셋은 key-value의 집합만 가능하고 불변성 지님

      Map은 입력으로 들어온 key-value를 다른 key-value 리스트로 반환

      Reduce는 Map의 출력 중에 같은 key를 가진 데이터를 모아서 처리

      Reduce의 출력은 HDFS에 저장

      <셔플링>

      Map의 출력을 보고 어느 Reduce로 갈지 정하고, 네트워크로 송신하는 과정

       

      <Sorting>

      Reduce에 들어온 파티션을 정렬하고 같은 키를 갖는 value 병합

       

      <Data Skew>

      Map에 들어오는 데이터에 따라 Task 수가 결정되고, Reduce는 개발자가 직접 지정

      이에 따라 Map이 출력하는 키의 분포가 특정 Reduce에 몰릴 수 있음 → 하나의 Reduce만 처리해야 하는 데이터의 양 증가

       

      <문제점>

      낮은 생산성 → 데이터 포맷 1개, 2가지 오퍼레이터, 어려운 튜닝

      배치 처리만 가능

       

      YARN

      <개념>

      MapReduce가 너무 저수준이라 탄생한 범용적인 리소스 매니저 프레임워크

       

      <동작 과정>

      1. 클라이언트가 리소스매니저에게 실행 코드와 환경 정보 등을 넘김
      2. 리소스매니저가 노드 매니저 안의 컨테이너에 애플리케이션 마스터 생성
      3. 생성된 애플리케이션 마스터가 리소스매니저에게 코드를 실행하기 위해 필요한 정보 요청
      4. 리소스매니저에게 받은 정보를 바탕으로 노드 매니저에게 필요한 컨테이너 수 전달
      5. 생성된 태스크가 주기적으로 애플리케이션 마스터에게 상황 보고(Heartbeat)

      '개발' 카테고리의 다른 글

      [MySQL] DELETE & UPDATE  (0) 2024.10.04
      멀티 프로세싱 & 멀티 스레딩 & 비동기 처리  (0) 2024.10.02
      새로운 웹 크롤링 도구 Playwright  (0) 2024.09.27
      쿼리가 무한 루프에 빠지는 문제  (0) 2024.09.19
      SQL 사전  (0) 2024.09.10
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바