Hadoop

대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 자유 자바 소프트웨어 프레임워크

Hadoop의 개요

왜 쓰는가?

  • map()과 reduce()만 오버라이딩: 로직을 구현한다
  • 나머지 병렬처리/분산처리/클러스터링 부분은 Hadoop이 처리함
  • Xaas: SaaS, DaaS, IaaS, PaaS
  • Big Data 이전 Virtualization(가상화) 필요
  • Utility Computing: on demand, cloud computing
  • CPU: socket당 core 여러개가 있음. VM쪽에서 core당 4~5개 가상머신 설치 권장.
    • 2 Socket * 10 Core * 5 VM = 100 VM(s)
  • SDN: SW Defined Network
  • Network, CPU도 가상화 진행 중
  • IT 주도권: 엔지니어 → 프로그래머 → 사용자
  • ORDB: Object RDB

설치

Hadoop 명령어

$ $HADOOP_HOME/bin/hadoop Usage: hadoop [--config confdir] COMMAND where COMMAND is one of:

 namenode -format     format the DFS filesystem
 secondarynamenode    run the DFS secondary namenode
 namenode             run the DFS namenode
 datanode             run a DFS datanode
 dfsadmin             run a DFS admin client
 mradmin              run a Map-Reduce admin client
 fsck                 run a DFS filesystem checking utility
 fs                   run a generic filesystem user client
 balancer             run a cluster balancing utility
 oiv                  apply the offline fsimage viewer to an fsimage
 fetchdt              fetch a delegation token from the NameNode
 jobtracker           run the MapReduce job Tracker node
 pipes                run a Pipes job
 tasktracker          run a MapReduce task Tracker node
 historyserver        run job history servers as a standalone daemon
 job                  manipulate MapReduce jobs
 queue                get information regarding JobQueues
 version              print the version
 jar <jar>            run a jar file
 distcp <srcurl> <desturl> copy file or directories recursively
 distcp2 <srcurl> <desturl> DistCp version 2
 archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
 classpath            prints the class path needed to get the
                      Hadoop jar and the required libraries
 daemonlog            get/set the log level for each daemon
or
 CLASSNAME            run the class named CLASSNAME
Most commands print help when invoked w/o parameters.

이것저것 해보기

Java로 map(), reduce()를 구현하여 jar 파일을 돌려야 함. 기본 제공되는 hadoop-examples.jar 이용하여 테스트도 가능.

단어 개수 세기

$ $HADOOP_HOME/bin/hadoop dfs -mkdir input 
$ $HADOOP_HOME/bin/hadoop dfs -put README.txt input/ 
$ $HADOOP_HOME/bin/hadoop jar hadoop-examples-1.2.1.jar wordcount input output

시험

  • 잡이 제출될 때 HDFS에 배포되는 두 개의 파일을 기술하시오
    • job.xml과 job.jar 파일
  • 하둡의 네임노드와 보조 네임노드와의 체크포인트 동작을 설명하시오
    • 보조 네임노드: 네임노드에게 에디트 로그 파일을 롤링할 것을 요청
  • 재구동할 때 발생하는 블록 리포팅에 대하여 설명
    • 로컬에 저장된 파일 시스템 이미지아 에디트 로그를 조회한 후 메모리에 있는 파일 시스템 이미지를 갱신. 이때 데이터노드는 저장하고 있는 블록의 위치 정보를 네임노드에 전송하고, 네임노드는 메모리에 올라와 있는 파일 시스템 이미지와 데이터노드가 전송한 블록의 정보를 비교하는 작업을 수행. 이러한 비교 작업을 블록 리포팅이라고 하며, 블록 리포팅이 완료되기 전까지의 상태를 안전모드(safemode)라고 함
  • 키값을 검색할 수 있게 색인과 데이터가 저장된 파일
    • 맵파일
  • MultipleOutput.addNamedOutput()
  • 맵퍼가 단독으로 수행하는 조인은?
    • 맵-사이드 조인
  • 맵퍼의 출력 데이터가 리듀서에 전달되기 전에 출력 데이터를 줄이는 기능은?
    • 콤바이너
  • 하둡에서 자바 외에 맵리듀스 프로그래밍을 가능하게 하는 기능은?
    • 스트리밍
  • 하이브 쿼리 중 각 리듀서의 출력이 정렬 되도록 하는 절은?
    • SORT BY
  • 하둡 클러스터 환경에서 서버 간 통신에 사용하는 기술은?
    • SSH
  • 하둡은 네임스페이스를 동기화하기 위해 체크포인트 매커니즘 사용한다. 기본적으로 1시간인데, 이 체크포인트를 설정하는 속성은?
    • fs.checkpoint.period
  • 하둡의 저장 구조를 기초로 하여 구성하는 NoSQL 데이터베이스는?
    • HBase
  • 분산 락을 사용하기 위한 모니터링/관리해주는 오픈소스 프로젝트?
    • ZooKeeper