• HDFS와 YARN

    2017. 10. 11. 16:36

    by. 위지원





    HDFS


    -HDFS는 하둡 파일 시스템으로 대용량의 데이터를 분산 된 서버에 저장하고 빠르게 처리할 수 있게 하는 블록 구조의 파일 시스템

    **블록은 파일을 저장하는 단위로 메모리에서  I/O 작업을 한번 거칠 때 읽거나 쓰는 단위


    -저사양 서버를 이용해서 스토리지를 구성할 수 있어 기존 대용량 파일 시스템에 비해 장점을 가짐


    HDFS는 Name Node(Master)와 Data Node(Slave)로 이루어진다.


    -Data Node는 클라이언트가  HDFS에 저장하는 파일을 로컬 디스크에 유지한다.

    -파일은 실제 저장되는 1.로우데이터 2.메타데이터 두가지이다.


    -Name Node는 아래 4가지를 수행한다.

    1. 메타 데이터 관리
    2. 데이터 노드 모니터링 : 데이터 노드가 네임 노드에게 3초마다 하트비트 전송 (안보내면 장애판단)
    3. 블록 관리 : 장애 노드 블록을 새 데이터 노드에 복제
    4. 클라이언트 요청 접수 : 클라이언트는 HDFS 접근시 반드시 네임노드 먼저 접속해야 함 ,파일 존재여부 권한 확인절차를 거치게 함


    HDFS에 파일을 저장할 때에는


    1.클라이언트와 네임노드와 통신과정을 통해 DFSOutputStream생성

    2.스트림을 통해 데이터 노드에 파일을 전송(패킷단위)

    3.Stream Close, 패킷 Flush

    4.네임노드의 complete  method호출로  true가 반환되면 완료


    HDFS에서 파일을 읽을 때에는


    1.DFSInputStream생성

    2.스트림을 통해 기본 블록의 10배수만큼 조회

    3.크라이언트에서 스트림객체에서 블록 리더기 생성하는데

    3-1.블록이 저장된 데이터노드가 같은 서버에 있다면 BlockReaderLocal

    3-2.블록이 저장된 데이터노드가 다른 서버에 있다면 RemoteBlockReader

    4.Stream Close


    Secondary Name Node는 fsimage를 줄여주는 역할을 한다.


    HDFS는 네임노드가 작업중에 서버가 리붓되면 데이터가 사라지는 문제가 있다.

    그래서

    -editslog : HDFS의 모든 변경이력 저장

    -fsimgae  : 메모리에 저장 된 메타디에터 파일 시스템 이미지 저장

    두 개의 파일을 생성한다. 그런데! editslog가 커지면 fsimage파일 만드는데에 시간이 많이 소요된다.

    그래서 세컨더리 네임노드를 사용하는것이다. 세컨더리 친구는 fsimage를 갱신해준다.(그래서 체크포인트 서버라고도함) 그래서 네임노드가 fsimage가 너무커서 메모리에 로딩되지 못하는 경우를 예방하기 위해 사용하는것이다


    JobTracker(Master) TaskTracker(Slave) 관계로 tasktracker가 jobtracker에게 hb를 계속해서 보냄 이역시 안보내면 장애로 판단


    JobTracker는 클러스터 노드에서 실행되는 사용자 애플리케이션을 관리한다.

    -하둡클러스터가 사용자의 코드를 넘겨받으면 잡트래커가 실행계획을 결정한다

    -모든 Task를 모니터링하고 실패하면 재실행 한다


     TaskTracker는 각 slave노드에 할당된 작업의 실행을 담당한다.



    하둡2.0


    하둡2.0은 하둡1.0에서 


    -맵 리듀스는 I/O집약적이거나 대화식 분석에 적합하지 않고 

    -그래프,기계학습,메모리 집약적 알고리즘에 대한 지원이 제한적


    인 이유로 hadoop개발자에 의하여 파일시스템의 주요 구성 요소를 다시 작성되어 개발



    하둡2.0의 특징으로는...

    1.다중 네임 노드 :  

    -대기(standby)와 활성화(activity) 노드가 있음  name node faile 시 standby 노드 사용


    So Hadoop 2.0 provides High availability because there is no data loss, since if if NameNode fails standby NameNode are available.


    -활성노드의 모든 기록은 logs에 저장됨

    -secondary 노드는 복사본임

    -하둡의 네임노드는 현재 메타정보+변경된 메타정보를 정기적으로 병합해주어야 하는데 이걸 2차 네임노드가 해줌 병합하고 변경된 메타정보(edits.new)를 비워주어 최신 메타정보를 만듬


    2.여러 응용프로그램을 이용한 데이터분석

    -OLTP에서 수행되는 작업과 같은 데이터를 분석하고 GIRAPH처리를 수행하는 다중 application 허용


    3.yarn 컴포넌트

    -기존의 job tracker를 리소스 매니저와 어플리케이션 마스터로 분리시킴

    -리소스 매니저 : 클러스터 내의 컴퓨팅 리소스들을 어플리케이션에 할당 

    -어플리케이션 마스터 : 컴퓨팅 리소스를 할당받아 어떤 어플리케이션을 실행,라이프사이클 관리

    다른 형태의 것도 가능해서 훨씬 더 융통성이 생김


    10/19일 추가


    왜 yarn을 쓰는가?


    1.자원을 동적으로 공유하고 중앙 얀에서 실행되는 모든 프레임웤사이의 클러스터 자원을 동일 풀에서 구성

    2.얀 스케쥴러의 카테고리화,분리,워크로드 우선순위 모든 기능 활용

    3.사용할 익스큐터의 수를 선택

    4.보안을 지원하는 유일한 클러스트 관리자


    4.스케줄러

    -리소스 매니저가 클러스터마다 존재하여 클러스터의 자원관리와 테스크들의 스케쥴링담당

    -노드매니저들의 자원 상태를 관리하여 부족한 리소스를 배정



    HDFS와 YARN의 아키텍쳐





    '2017년 > Spark' 카테고리의 다른 글

    spark 예제 돌려보기  (0) 2017.10.18
    spark sql  (0) 2017.10.18
    스칼라를 빠르게 공부해보자  (0) 2017.09.20
    spakrR과 R의 메모리  (0) 2017.09.12
    sparkR 이제 좀 써보자..  (0) 2017.08.28