ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Headoop] 하둡 개념
    Developer/Headoop 2013. 2. 28. 15:42

    하둡이란?


    대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스트에서 동작하는 분산 응용 프로그램을 지원하는 자유 자바 소프트웨어 프레임 워크이다. 원래 너치의 분산처리를 지원하기 위해 개발되었으며, 아파치 루씬의 하부 프로젝트이다.

    분산처리 시스템인 구글 파일 시스템을 대체할 수 있는 하둡 분산 파일 시스템(HDFS : Headoop Distributed File System)과 맵리듀스를 구현한 것이다.

    아파치 프로젝트


    아파치 하둡에는 다음과 같은 3개의 하위 프로젝트들이 있다.

    • 1) Hadoop Common(하둡 커먼) : 다른 하둡 하위 프로젝트들에서 공통으로 사용되는 유틸리티들을 포함하고 있다.
    • 2) Hadoop Distributed File System (HDFS™)(하둡 분산 파일 시스템) : 애플리케이션 데이터에 접근할 때 높은 처리량을 지원하는 분산 파일 시스템이다.
    • 3) Hadoop MapReduce(하둡 맵리듀스) : 컴퓨터 클러스터에서 대용량 데이터의 분산 처리를 위한 소프트웨어 프레임웍이다.

    또한 아파치는 하둡과 관련있는 다음과 같은 프로젝들도 지원하고 있다.

    • 1) Avro™(아브로) : 데이터 직렬화(serialization)를 지원하는 시스템이다.
    • 2) Cassandra™(카산드라) : 하나의 에러 때문에 전체 시스템이 정지(SPoF: Single Point of Failure)되지 않도록 설계된 확장 가능한 멀티-마스터(multi-master)를 가지는 데이터베이스이다.
    • 3) Chukwa™(척와) : 대용량 분산 시스템을 관리하기 위해서 만들어진 데이터를 수집, 저장, 관리, 분석하는 시스템이다.
    • 4) HBase™(H베이스) : 대용량 데이터베이스 테이블을 위한 구조적 데이터 저장 공간을 지원하는 확장가능한 분산 데이터베이스이다.
    • 5) Hive™(하이브) : 데이터 요약(summarization)과 애드훡(ad hoc) 쿼리를 지원하는 데이터 웨어하우스 인프라스트럭처(infrastructure)이다.
    • 6) Mahout™(마훗) : 확장 가능한 머신 러닝(machine learning)과 데이터 마이닝(data mining)을 위한 라이브러리이다.
    • 7) Pig™(피그) : 병렬 계산(parallel computation)을 위한 고수준(high-level) 데이터-플로우(data-flow) 언어와 실행 프레임웍이다.
    • 8) ZooKeeper™(주키퍼) : 분산 애플리케이션을 위한 고성능의 조정 및 관리(coordination) 서비이스이다.
    • 다운로드 : http://hadoop.apache.org/releases.html

    하둡 분산파일 시스템


    하둡 분산 파일 시스템은 다음과 같은 시스템에서 잘 동작하는 것을 목표로 하고 있다.

     

    1) 하드웨어 오동작 : 하드웨어 수가 많아지면 그 중에 일부 하드웨어가 오동작하는 것은 예외 상황이 아니라 항상 발생하는 일이다. 따라서 이런 상황에서 빨리 자동으로 복구하는 것은 HDFS의 중요한 목표다.
    2) 스트리밍 자료 접근 : 범용 파일 시스템과 달리 반응 속도보다는 시간당 처리량에 최적화되어 있다.
    3) 큰 자료 집합 : 한 파일이 기가바이트나 테라바이트 정도의 크기를 갖는 것을 목적으로 설계되었다. 자료 대역폭 총량이 높고, 하나의 클러스터에 수 백개의 노드를 둘 수 있다. 하나의 인스턴스에서 수천만여 파일을 지원한다.
    4) 간단한 결합 모델 : 한번 쓰고 여러번 읽는 모델에 적합한 구조이다. 파일이 한번 작성되고 닫히면 바뀔 필요가 없는 경우를 위한 것이다. 이렇게 함으로써 처리량을 극대화할 수 있다.
    5) 자료를 옮기는 것보다 계산 작업을 옮기는 것이 비용이 적게 든다 : 자료를 많이 옮기면 대역폭이 많이 들기 때문에 네트워크 혼잡으로 인하여 전체 처리량이 감소한다. 가까운 곳에 있는 자료를 처리하게 계산 작업을 옮기면 전체적인 처리량이 더 높아진다.
    6) 다른 종류의 하드웨어와 소프트웨어 플랫폼과의 호환성 : 서로 다른 하드웨어와 소프트웨어 플랫폼들을 묶어 놓아도 잘 동작한다.

     

     

    하둡 네임노드와 데이터 노드


    하둡 분산 파일 시스템은 다음과 같은 시스템에서 잘 동작하는 것을 목표로 하고 있다.

     

    DFS는 마스터/슬레이브(master/slave) 구조를 가진다. HDFS 클러스터는

    하나의 네임노드와, 파일 시스템을 관리하고 클라이언트의 접근을 통제하는 마스터 서버로 구성된다. 게다가 클러스터의 각 노드에는 데이터노드가 하나씩 존재하고, 이 데이터 노드는 실행될 때마다 노드에 추가되는 스토리지를 관리한다. HDFS는 네임스페이스를 공개하여서 유저 데이터가 파일에 저장되는것을 허락한다. 내부적으로 하나의 파일은 하나 이상의 블록으로 나뉘어 있고, 이 블록들은 데이터노드들에 저장되어 있다. 네임노드는 파일과 디렉터리의 읽기(open), 닫기(close), 이름 바꾸기(rename) 등, 파일시스템의 네임스페이스의 여러 기능을 수행한다. 또한, 데이터 노드와 블록들의 맵핑을 결정한다. 데이터 노드는 파일시스템의 클라이언트가 요구하는 읽기(read), 쓰기(write) 기능들을 담당한다. 또한 데이터 노드는 네임노드에서의 생성, 삭제, 복제 등와 같은 기능도 수행한다.

    네임노드와 데이터노드는 GNU/Linux OS를 기반으로 하는 상용머신에서 실행하기 위해 디자인된 소프트웨어의 일부이다. HDFS는 Java 언어를 사용하므로 Java가 동작하는 어떠한 컴퓨터에서나 네임노드나 데이터노드 소프트웨어를 실행할 수 있다. 

     

    하둡 과 하이브


    1. 하이브는 하둡의 최상위에 구축된 데이터 웨어하우스 기반 구조이다.

    2. 페이스북의 하둡에 저장된 데이터에 쿼리하기 위해 사용될 수 있는 도구.

     

     

     

     

    참조 :    http://bigmark.tistory.com/54  -  Mysql+Linux+Eclipse+Maven2+Hive+Headoop

    http://o-m-i.tistory.com/148

    http://blog.naver.com/beabeak?Redirect=Log&logNo=50144632591

    http://paranwater.tistory.com/367 - 윈도우 하둡

     

     

© 2018 T-Story. All right reserved.