본문 바로가기

컴퓨터공학 기초 이론 (old)

Hadoop 이론 정리 + github code

반응형

좀 더 정리해!! 

## 하둡

- Hadoop is a Distribute Programming Framework!!

- HDFS(분산저장) + MapReduce(분산처리)


### System 설계의 특징

- Scale-Out  VS  Scale-Up

    - 여러개를 추가 VS 1개를 상향

- Master-slave  VS  Peer-to-peer

    - 마스터 죽으면 끝 VS 게릴라전, 하나라도 살면 ok, 노드간에 끊임없이 주고 받음

- Logic 이동 VS Data 이동

    - JAVA는 data가 이동한다. 그래서 느리다. 그래서 SQL을 잘 짜야한다!!! data를 compact하게 뽑기 위해서, 하둡은 Logic이 이동하는 구조이다. 하둡은 데이터가 이동하지 않는다! 여러곳에 저장하고, 분석도 그곳에 가서 분석함.


- HDFS(분산 저장)                     + MapReduce(분산 처리)

  NameNode(NN)                      ~ Job Tracker(JT)

  Secondary NameNode(SNN)      ~ Task Tracker(TT)

  DataNode(DN)


-> Distributed_Programming.pdf

-> hdfs_comic.pdf

- > https://ko.wikipedia.org/wiki/아파치_하둡


-- Google  ->  Yahoo : Hadoop  ->  ...

 - GFS                 HDFS                    : 분산 저장

 - MapReduce       MapReduce            : 분산 처리

 - Bigtable            HBase                   : 실사간 응답




### Q & A , **답할 수 있어야 하고 위 외워야 한다!!

  - Distributed Programming(분산 프로그래밍)에 대해 설명하세요.
=>  분산 컴퓨팅이라고도 하며, 인터넷에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 거대한 계산 문제를 해결하려는 분산처리 모델이다. 

  - Hadoop(하둡)에 대해 설명하세요.

=> 하둡은 Distribute Programming Framework!! 즉, 분산 프로그래밍 프로임워크로 HDFS(Hadoop Distributed File System) 분산저장과 MapReduce 분산처리로 구성되어 있다.  'Scale-out', 'Master-Slave', 'Logic이동' 의 특징을 가진다.

가장 큰 약점은 Job Tracker가 죽으면 전체가 돌아가지 않는 약점이 있다.

  

  - HDFS(하둡 분산 파일 시스템)에 대해 설명하세요.

=> Hadoop Distributed File System의 약자로, 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일시스템이다. HDFS는 네임노드(마스터)와 데이터노드(슬레이브)로 구현되어 있다. 


네임노드는 다음과 같은 핵심 기능을 수행한다.

1. 메타데이터관리 : 파일 시스템을 유지하기 위한 메타데이터를 관리

2. 데이터노드 모니터링 : 데이터노드는 네임노드에게 3초마다 하트비트(heartbeat)를 전송한다. 네임노드는 이를 이용하여 데이터노드의 실행상태와 용량을 체크한다. 하트비트를 전송하지 않는 데이터노드는 장애서버로 판단한다.

3. 블록관리 : 장애가 발생한 데이터노드의 불록을 새로운 데이터노드에 복제한다. 용량이 부족하다면 여유가 있는 데이터노드에 블록을 옮긴다.

4. 클라이언트 요청접수 : 클라이언트가 HDFS에 접근하려면 반드시 네임노드에 먼저 접속해야 한다. HDFS에 파일을 저장할 경우 기존 파일의 저장여부와 권한 확인 절차를 거쳐 저장을 승인한다.

데이터노드(DataNode)는 클라이언트가 HDFS에 저장하는 파일을 로컬 디스크에 유지한다. 이때 파일은 두가지로 저장되는데 하나는 실제 저장되는 로우데이터이고 다른 하나는 체크섬이나 파일생성일자 같은 메타데이터가 저장된 파일이다. 

reference : http://yookeun.github.io/java/2015/05/24/hadoop-hdfs/


  - MapReduce(맵리듀스)에 대해 설명하세요.

=> 대용량 데이터 처리를 위한 분산 프로그래밍 모델로, 흩어져 있는 데이터를 수직화하여 그 데이터를 각각의 종류별로 모으고(Map), Filtering과 Sorting을 거쳐 데이터를 뽑아내는(Reduce) 분산처리 기술로 구성되어 있다. 


정의)

Map : 데이터 변형, 값들을 모두 key와 value로 만듦

shuffle : 중간단계 시스템에서 알아서(프레임워크), map과 reduce만 개발자가 조절할 수 있음

Reduce : 결과를 집계, 각 key와 value를 중복에 대해 count함 출력파일을 만듦

단계)

입력 스플릿 :  block단위로 쪼개져있는 block들을 받음

맵 : 각 데이터를 key 와 value로 만듦

스필 : 메모리에 만든 map을 파일로 내려씀 (얼마만큼 차면 스필할지 조절 가능)

병합 : sort해서 파티션을 함

예제)

맵 : value -> key로 변경 ex) (hi,1) (bye,1) (hi,1)

셔플 : (hi,1) (bye,1) (hi,1) -> (hi,[1,1]) (bye,[1])

리듀스 : (hi,[1,1]) (bye,[1]) -> (hi, 2) (bye,1)


Github


### Hadoop 과 SQL-on-Hadoop

1. RDBMS의 문제점

2. 하둡이란?

3. HDFS

4. MapReduce

5. SQL-on-Hadoop


1. RDBMS의 문제점

RDBMS(Relational DataBase Management System) : 관계형 데이터베이스 관리 시스템

MS(Management System) : DB에 레코드를 삽입(Insert), 수정(Update), 삭제(Delete) 할 수 있도록 해주는 소프트웨어

-> SQL(Structured Query Language) 지원


R(Relational)

- DBMS의 종류를 의미

- 여러 개의 테이블을 조합해서 원하는 데이터를 조회

- 트랜잭션 지원


그래서, RDBMS란 관계형 데이터베이스를 생성, 수정, 관리할 수 있는 소프트웨어 입니다.


RDBMS는 데이터를 가져와서, 로직을 수행한다.

문제점은 병목현상과 돈이 많이 든다는 점이다. 


2. 하둡이란?

대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크 입니다.

하둡 = 분산파일시스템(HDFS) + 분산처리시스템(MapReduce)

- 하둡의 주요 특징은 무엇이 있을까요?

  1. Data Locality

     데이터가 있는 곳에서 로직을 수행한다.

  2. Fault Tolerant.(장애 허용)

     하둡은 x86 서버(저가)에 설치할 수 있습니다.(vs 유닉스 서버(고가))

     하드웨어 장애는 피할 수 없다는 가정하에 설계됐습니다. 

  3. Scalable(확장성있음)

     서버(노드)를 추가하면, 용량과 컴퓨팅 성능의 선형적인 확장이 가능합니다. 

  4. Simple

     다수의 클러스터를 하나의 스토리지처럼 사용합니다. 


단점은..

- 배치 프로세싱에 최적화되어 있습니다.

- 하둡 버전과 에코 시스템이 너무 다양합니다. 로그 수집 하나만 해도 Flume, chuckwa, scribe ...

- 설치와 사용이 쉽지 않습니다.

- 엔지니어를 고용하기 쉽지 않습니다.


3. HDFS

HDFS 시스템 구성

reference : https://www.slideshare.net/blrunner/hadoop-intro-201512122


4. MapReduce

사실 MapReduce는 예전부터 있던 프로그래밍 모델이다. 

MapReduce는 Map과 Reduce라는 두 단계로 데이터를 처리합니다.

Map은 입력 파일을 한 줄씩 읽어서 데이터를 변형(transformation) 합니다.

Reduce는 맵의 결과를 집계(aggregation) 합니다.

MapReduce의 Helloworld인 wordcount 예제를 살펴보면.


 입력파일 

 맵 

 셔플(자동으로..)

 리듀스 후 출력

 read a book 

 (read, 1)

 (a, 1) 

 (book, )  

 (read, [1])

 (a, [1,1])

 (book, [1,1])

 (write, [1])

 (read, 1)

 (a, 2)

 (book, 2)

 (write, 1)

 write a book 

 (write, 1)

 (a, 1)

 (book, 1)


하둡 MapReduce 프레임워크는 개발자가 MapReduce 프로그램 로직 구현에 집중하게 해주고, 데이터에 대한 분산과 병렬 처리를 프레임워크가 담당한다. 


reference : https://www.slideshare.net/blrunner/hadoop-intro-201512122


아직 wordcount 만으로는 감이 잘 오지 않기 때문에 MapReduce를 이용하여, 웹서비스 접속 통계를 구해본다고 한다.





결국 counting 예제네...


5. SQL-on-Hadoop

MapReduce에 어떤 문제점이 있을까?

- 관계형 처리를 위해 고안된 것이 아니기 때문에, 데이터 처리 모델상의 한계가 있다.

- Pig, Hive는 MapReduce가 제공하는 기능 이상의 최적화 불가능하다...

- 초기화 및 스케쥴링 시간이 느리다.

- 개발 노력이 많이 들어가고, 성능 보장이 어렵다...

- Ad-hoc 질의에 대한 속도 문제로, DBMS 병행 사용이 불가피하다.


SQL-on-Hadoop 이란?

- HDFS에 저장된 데이터를 SQL로 처리하는 시스템

- 탈 MapReduce 모델

- 다양한 설계 목표 : DataWarehouse VS Query Engine








반응형

'컴퓨터공학 기초 이론 (old)' 카테고리의 다른 글

ip 정의 관련 (업무하면서,,)  (0) 2022.06.22
네트워크와 TCP/IP  (0) 2017.10.04
신입 개발자 역량 평가  (0) 2017.10.01