DBILITY

하둡 정리 1 본문

bigdata/hadoop

하둡 정리 1

DBILITY 2016. 10. 11. 22:21
반응형
  • 하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크다.
  • 구글이 논문으로 발표한 GFS(Google File System)와 맵리듀스(MapReduce)를 2005년에 더그 커팅이 구현하였으며,
    2008년에 아파치 최상위 프로젝트가 됐다.
  • 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하고,
    분산 처리 시스템인 맵리듀스로 데이터를 처리한다.
  • 하둡이라는 명칭은 구현자인 더그 커팅 아들의 코끼리 장난감 인형의 이름이다.
    그래서, 하둡과 관계 된 아파치 프로젝트들은 대부분 동물 로고를 쓴다.
    참고로, MySql도 구현자의 딸이름에서 유래하였으며, MariaDB는 둘째 딸의 이름이 maria라고 한다.
  • RDBMS는 데이터가 저장된 서버에서 데이터를 처리하는 방식이지만, 하둡은 다수의 서버에 데이터를 저장하고,
    동시에 데이터를 처리하는 방식이다.
  • 맵리듀스 모델은 Map과 Reduce단계로 이루어지며, Map은 입력 파일을 한줄씩 읽어서 데이터를 변형(Transformation)하고,
    이때 변형규칙을 개발자가 정의하며,한줄씩 결과 데이터가 출력된다.
    Reduce는 Map의 결과 데이터를 집계(Aggregation)한다.
  • 맵리듀스 데이터플로우
    Input -> Splitting -> RecordReading -> Mapping -> Combining & Partitioning -> Shuffling & Sorting -> Reducing -> RecordWriting -> Output
  • 하둡1.0에선 HDFS+MapReduce가 핵심이었다면, 2.0에선 HDFS2+MapReduce2+YARN(Yet Another Resource Manager)으로 바뀌었다.
    1.0에서 데이터처리와 클러스터 리소스 관리를 MapReduce가 처리했지만,
    2.0에선 MapReduce2는 데이터처리만하고 클러스터 리소스 관리는 YARN에서 한다.
    YARN은 하둡1.0 MapReduce프로그램도 하위 호환성을 제공하며,
    하둡1.0의 JobTracker는 ResourceManager와 ApplicationMaster로 분리,TaskTracker 기능은 NodeManager가 담당(Container실행)한다.
    ResourceManager는 Cluster내의 Computing Resource를 Application들에 할당, 관리하고,
    ApplicationMaster는 Computing Resource를 할당받아 Application을 실행, LifeCycle을 관리한다.
    즉, ResourceManager는 NodeManager를 통해 Resource를 관리하며, ApplicationMaster는 Application마다 할당되어 생성된다.
    ApplicationMaster는 Application마다 NodeManger Container에서 실행된다.

  • 아키텍쳐 Hadoop version 1
  • 아키텍처 Hadoop version 2
  • 하둡에코시스템( 향후 공부해야할 것을 중심으로 정리 )

    분산데이터를 저장하는 HDFS, 데이터를 처리하는 MapReduce는 하둡 코어 프로젝트며,
    나머지는 서브 프로젝트로 전문업체에서 공개한 프로젝트들도 있다. 다음은 데이터 수집부터 저장, 처리까지의 순서로 나열한다.

    1. Flume
      클라우데라에서 개발하여 아파치 오픈소스로 공개하였다.
      분산된 서버에 에이전트를 설치하고, 에이전트로부터 데이터를 전달받는 컬렉터로 구성된다.
      전체 데이터의 흐름을 관리하는 마스터서버가 존재하며, 데이터의 수집, 전송방식, 저장위치를 동적으로 변경 가능하다.
    2. Sqoop
      대용량 데이터 전송 솔루션으로, HDFS, RDBMS, DW, NoSQL등 저장소에 대용량 데이터를 신속하게 전송한다.
      Hadoop2+Sqoop2를 테스트해 보았으며, Oracle JDBC로 연결하였고, MapReduce로 자체 변환하여 실행(기억이 가물),cli도 존재한다.
    3. Kafka
      링크드인에서 개발, 공개하였다.
      데이터 스트림을 실시간으로 관리하기 위한 분산 메시징 시스템으로, publish & subscribe 모델로 구성되며,
      데이터 유실방지를 위해 디스크에 저장한다. 파티셔닝 지원으로 다수의 서버에서 분산처리할 수 있고,
      loadbalancing, fault tolerance를 보장하며, 링크드인에선 1조1천억건 이상의 메시지를 처리한다고 한다.(팩트는 중요하니까)
    4. HBase
      HDFS 기반의 컬럼 기반 데이터베이스로 구글의 BigTable논문을 기반으로 개발되었다.
      실시간 랜덤조회 및 갱신이 가능하고, 각 프로세스는 데이터를 비동기적으로 갱신할 수 있으나, MapReduce는 batch방식으로 처리된다.
    5. Kudu
      컬럼 기반 스토리지로, 특정 컬럼에 대한 데이터 읽기를 고속화할 수 있다.
    6. YARN
      데이터 처리를 위한 클러스터 리소스(CPU,Memory,Disk등)와 작업 스케줄링을 위한 프레임워크로, 하둡2.0부터 지원한다.
      MapReduce부터 Spark까지 App들은 Yarn에서 Resource를 할당 받아 실행하게 된다.
    7. Mahout
      하둡 기반으로 데이터 마이닝 알고리즘을 구현한 프로젝트다.
      Classification, Clustering, Recommanders/Collaborative Filtering, Pattern Mining, Regression, Dimension Deduction,
      Evolutionary Algorithms 등을 지원한다.알고리즘에 대한 학습이 우선되어야 하겠다.
    8. Spark
      인메모리 기반의 범용 데이터 처리플랫폼으로써,
      Batch Processing, Machine Learning, SQL Processing, Streaming Data Processing, Graph Library Processing을 할 수 있다.
    9. Impala
      클라우데라에서 개발한 하둡 기반의 분산 쿼리 엔진으로 맵리듀스를 사용하지 않고, C++로 개발된 인메모리 엔진을 사용해 속도가 빠르다.
      데이터 조회 인터페이스로 HiveQL을 사용한다.
    10. Hive
      하둡 기반의 데이터웨어하우스로 페이스북에서 개발하였다.
      SQL과 유사한 HiveQL을 제공하며, 내부적으로 MapReduce로 변환되어 실행된다.
    11. Tajo
      하둡 기반의 데이터웨어하우스로 고려대학교 박사과정 학생들이 주도하여 개발하였다.
      자체분산 처리엔진을 사용하며, ANSI-SQL을 지원한다.
      HDFS, AWS S3, HBase, DBMS등에 저장된 데이터를 ANSI-SQL로 조회할 수 있으며, 이기종 저장소 간의 데이터 조인 처리도 가능하며,
      유형에 따라서는 Hive,Spark보다 1.5~10배 빠른 성능을 보인다고 한다. 와우~~
    12. Avro
      Remote Procedure Call과 데이터 직렬화를 지원하는 프레임워크로, JSON을 이용해 데이터 형식과 프로토콜을 정의하며,
      작고 빠른 바이너리 포맷으로 데이터를 직렬화한다.
      경쟁 솔루션으로 Apache Thrift, Google Protocol Buffer등이 있다.
    13. Zeppelin
      빅데이터 분석가를 위한 웹 기반의 분석 도구이며, 분석결과를 즉시 표, 그래프로 시각화까지 지원한다.
      노트북 기능제공으로 손쉽게 데이터의 추출, 정제, 분석, 공유할 수 있다.
      Spark, Hive, Tajo, Elastic Search, Cassandra, DBMS 등과 연동할 수 있다.
    14. Oozie
      하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템으로 서블릿 컨테이너에서 실행된다.
      맵리듀스 작업이나 Pig 작업 같은 특화된 액션으로 구성된 워크플로우를 제어한다.
    15. Azkaban
      워크플로우 스케줄러, 시각화된 절차, 인증 및 권한 관리, 작업모니터링 및 알람 등의 기능을 웹UI로 제공한다.
    16. Zookeeper
      분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템이다.
      하나의 서비스에 부하가 집중되지 않게 분산 처리하고, 서비스 처리결과를 다른 서버와 동기화하며,
      운영서버에 문제발생시 대기 중인 서버를 운영서버로 전환하여 서비스가 중지 없이 제공되게 한다.
      분산환경을 구성하는 서버의 환경설정을 통합 관리한다.

참고문헌 : 시작하세요!  하둡프로그래밍 개정2판(위키북스) - 정재화지음

반응형
Comments