Hadoop Review



Features of Hadoop

  • Hadoop은 정형 / 비정형 / 반정형의 세 가지 데이터 타입의 처리가 모두 가능

    • 정형 데이터: RDBMS의 Table과 같이 고정된 Column에 저장되는 데이터와 파일, 그리고 지정된 행과 열에 의해 데이터 속성이 구별되는 스프레드 시트 형태의 데이터
    • 비정형 데이터: 데이터 세트가 아닌 하나의 객체화된 데이터(동영상, 이미지, 텍스트, ...)
    • 반정형 데이터: 데이터 내부에 정형 데이터의 스키마에 해당하는 메타데이터를 가지며, 일반적으로는 파일 형태로 저장(JSON, XML, HTML, ...)
  • Map: 데이터를 Key, Value의 Map 형태로 변환

  • Shuffle: Map 함수를 통해 Mapping된 결과를 key에 따라 재분배하여 같은 key를 가진 Map들이 같은 노드에서 실행되도록 작업 수행

  • Reduce: 산출된 결과 데이터를 key에 따라 병렬적으로 처리




hadoop 1.x

  • Core components
    • HDFS: Namenode, Datanode
    • MapReduce: Job tracker, Task tracker

hadoop 2.x

  • Core components
    • HDFS: Namenode, Datanode
    • Yarn: Resource manager, Node manager
  • ApplicationMaster는 작업의 **'Entry point'**로 Nodemanager들을 실행하고 조정하는 데몬 프로세스.
  • Nodemanager는 Container를 실행하고, Container의 라이프 사이클 모니터링 cf. Container는 Nodemanager가 실행되는 서버의 시스템 자원을 표현(kinda task of Hadoop 1.x.x)

Scala Programming

  • Java로 짜여진 소스 코드들은 Compile시, byte code의 용량이 너무 컸던 문제 때문에 JVM 위에서 돌아가는 함수형 언어들이 도래함
  • Scala도 이러한 이유로 등장한 언어 중 하나로 하이브리드 함수형 언어
  • 간결한 코드라인과 이에 따른 적은 메모리 사용으로 성능의 향상을 가져옴

Features of Scala

  • 객체지향적
  • 정적 타입의 언어
  • JVM에서 실행되어, Java와 호환(Java 코드도 실행 가능)
  • 동시 처리 및 동기화 처리의 수행 가능
  • Type inference
  • 모든 타입은 객체이며, 함수도 객체

Scala 실습

  • traits = interface of java
  • 세미콜론은 다른 라인을 한 라인에 넣을 때 구분하기 위해 사용하는 것 따로 필요하지 않을 때는 사용안하는 것이 보기 좋음
  • var로 선언하면 변수(변경 가능). val로 선언하면 상수(변경 불가)
  • Scala의 Object는 기본적으로 Singleton Object로 미리 구현되어 있음
  • Java에서와 같이 객체의 생성 없이 바로 객체로 사용하기 위해 Class가 아닌 Object로 객체를 직접 만들어서 사용할 수 있음

Apache Spark


: 빅데이터 분석을 위해 통합된 병렬 데이터 프레임 워크로 개발자의 생산성을 향상시키며, Hadoop eco system의 Hive와 HBase와 잘 어울러져 사용할 수 있음


  • 일괄 처리
  • 실시간 처리
  • 스트림 분석
  • 기계 학습
  • 대화식 SQL

What make Spark fast?

  • Spark는 In-Memory 클러스터 컴퓨팅을 위한 기본적 환경을 제공
  • Spark는 데이터를 메모리에 load하고 cache 하여 메모리에서 질의를 반복적으로 던지기 때문에 disk-based system보다 빠른 속도를 보임
  • Spark는 Scala와 통합되어 사용되기 때문에 분산 데이터셋을 마치 로컬 콜렉션과 같이 조종할 수 있게 함. 따라서 Map과 Reduce와 같은 작업을 수행하기 위해 모든 것을 구조화할 필요가 없어짐
  • Spark는 데이터를 복제 없이 '메모리'안에 저장하여 사용하기 때문에 HDFS에서 데이터를 가져와서 연산하는 것보다 훨씬 더 빠른 연산 속도를 보임


+ Recent posts