본문 바로가기
Cumputer Science/데이터 베이스📈

데이터 처리 프로세스(저장, 처리) + 하둡(hdfs,mapreduce)

by @ENFJ 2022. 12. 30.
데이터 처리 프로세스中  저장, 처리 에 대해 중점적으로 자료조사를 해서 정리한 글입니다.
(가볍게 참고 해주시면 좋을 것 같습니다) 

데이터처리 프로세스 에는

1. 데이터 소스 

2. 수집

3. 저장

4. 처리

5. 분석

6. 표현 

순으로 진행됩니다. (무조건 저 순으로 진행되는건 아니라고 합니다. 설명하기 편하기 때문에..)

 

우선 데이터소스를 보면

기업이 가지고 있는 내부 데이터있을테고, 이러한 데이터는 주로 데이터베이스나 지난번에 설명 드렸던

데이터 웨어하우스(주로 정형데이터) 에 저장이 됩니다.

그리고 외부데이터가 있는데, 외부데이터는 공공기관이나 또는 그 외의 다양한 데이터들을 말합니다.

그리고 미디어 즉, 비정형 데이터들이 있습니다.

그중 처리 파트에서 일괄처리 부분중 데이터저장하고 처리하는데 있어서 핵심인 Hadoop(하둡) ! 이라는 녀석에 대해 

알아보겠습니다.

 

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

(zookeeperhdfs,mapreduce..pig,hive 이런 것을 통제하는 프로그램입니다)

 

여기서 데이터 저장하는 부분은 Hadoop distributed file system 입니다.

즉 해석해보면 분산처리를 하게 됩니다. 그 이유는 데이터 양이 워낙 많기 때문입니다.(컴퓨터 하나에 모든 것을 저장할 수 없어서)

+IQ 300인 사람이 1명이 일을 수행하는 것보다   IQ100인 사람100명이 일을 나눠서 수행하는 것이 더 많은 양과 시간적으로도 단축시킬 수 있기 때문

그리고 이를 처리하는 Map reduce ! 이 두가지가 하둡의 핵심 기술이라고 할 수 있습니다.

다시 정리하자면, 하둡은 분산저장하여 처리하는 것 입니다.

 

그렇다면 오픈소스 프레임워크라고 하는 이유는 이 두가지 핵심 기술 위에 여러 개발자가 살을 붙여서 그렇게 부르게 되었습니다.

 

+ Pig, hive,mahout,oozie 는 분산 처리 한 데이터들을 분석!해주는 툴입니다.

 

에러가 발생 했을 때를 대비하기위해 빨간 색 데이터 블록을 보면 노드1뿐만 아니라 2,3에도 복사가 되어져 있는 것을 확인할 수 있습니다.

Master slave 구조인데, 여기서 master namenode이며, slavedatanode입니다.

 

네임 노드 하는 일

1. 메타데이터 관리: 파일 시스템을 유지하기 위한 메타데이터를 관리. ß 여기서 메타데이터란 전체적인 구조를 의미합니다.

2. 데이터노드 모니터링: 3초마다 하트비트를 전송(나 살아있어요~라고 보내줌으로써 죽었는지 살았는지 확인가능)

3. 블록관리: 장애가 발생한 데이터노드의 블록을 새로운 데이터노드에 복제

 

데이터 노드(실제로 데이터를 저장하는 컴퓨터입니다)

-클라이언트가 hdfs에 저장하는 파일을 로컬 디스크에 유지
-실제 저장되는 데이터
 

 
 

Mapreduce는 분산한 것을 대용량 데이터를 처리를 위한 분산 프로그래밍 모델입니다.

데이터를 분산해서 저장한 것을 한 곳으로 통합시켜서 통합분석을 하게 됩니다.

그런데 분산을 시켜 놓고 다시 하나로 통합해서 처리하게 되면 분산한 의미가 없게 됩니다.

저장은 분산되어서 잘 정리되어 있는데 처리하는데 속도가 오래 걸리게 됩니다.

 

Mapreduce map reduce 를 합친 말입니다.

여기서 map 이란 각각의 분산된 데이터들을 keyvalue 쌍의 형태로 연관성 있는 데이터 분류로 묶는 작업을 말하며

Reduce란 중복데이터를 제거하고 원하는 데이터를 추출하는 작업을 말합니다.

 

Mapreduce 를 통해서 키(key)- value 값으로 분산 처리 를 하게 됩니다.

이 분산 처리된 것을 hive 나 자기 입맛에 맞는 분석 툴을 이용해 분석을 하게 됩니다.

그 결과 값을 이제 활용하게 되는 것입니다.

 

정리
 
HDFS : 분산 저장
Mapreduce : 분산 처리

흐름
* 데이터 수집을 해서 -> 분산 저장 (hdfs) -> 분산 처리(mapreduce) -> db에 통합 저장(hbase) -> 데이터 분석(hive or mahout ..등) -> 데이터 표현(시각화...)