Programming/Computer Science Fundamentals

[빅데이터의 이해] 6. 빅데이터 기술2

Sujin Lee (Daisy) 2021. 9. 11. 20:29

<하둡 시스템의 구성>

I. 하둡 분산 파일 시스템 (HDFS)

1. 일반적인 분산 파일 시스템의 설계 

 - HDFS도 '분산 파일 시스템'이므로, 일반적인 분산 파일 시스템의 설계를 따른다. 

    일반적인 분산 파일 시스템의 설계는 아래와 같음. 

 - (1) 마스터 노드 : 관리자 역할 (1대) 

 - (2) 슬레이브 노드 : 실제 데이터분산 저장. (수십 ~ 수천대) 

                                 분산 상태를 마스터 노드가 관리. 

 

2. HDFS의 구조 

 1) 네임 노드 (마스터 노드) 

    - 슬레이브 노드의 동작과 메타 데이터를 실시간 관리

      ㄴ 메타 데이터 : 데이터에 대한 데이터. ex) 파일 조각들이 어디에 들어있는지 등. 

 2) 데이터 노드 (슬레이브 노드)

   - 하나의 데이터 블록을 여러 대의 데이터 노드가 복제하여 보관

      ㄴ 상세설명) 마스터노드가, 하나의 커다란 파일을 그걸 백조각으로 나눠서 데이터 노드에 저장하기로 결정했다면, 

                          한 조각을 하나의 슬레이브 노드에 저장하는 게 아니라, 3개의 슬레이브 노드에 복제해서 저장하도록 함.  

                          데이터 노드는 이 조각만을 보관하는 것이 아니라, 다른 조각도 보관할 수 있도록 설계되어 있다.

                          ex) 데이터 노드 1번이 데이터 조각1번, 조각5번을 보관하고 / 데이터 노드 2번이 조각1번, 조각7번을 보관...

                                ---> 데이터 노드 1번의 조각1번이 고장나도, 데이터 노드 2번에도 데이터 조각 1번이 저장되어 있으므로 괜찮다 :) 

                           ---> 신뢰성고장 감내성. 

 

3. HDFS의 특징

 - 큰 데이터를 한 번에 빠르게 가져올 수 있도록 설계되어 있음

    : 한 블록의 크기가 크게 설정되어 있음.

 - 데이터의 일괄 처리에 최적화

    : 수집된 데이터를 수정할 필요가 없음. 

 

 

II. 하둡 맵리듀스

1. 하둡 맵리듀스

 - HDFS 상에서 동작하는 데이터 분석 프레임워크 

 - 데이터 중심 프로그래밍 모형

    : 작업 분할, 스케줄링, 네트워크 구성 등의 플랫폼 차원 단순화

 - 프로그래머는 맵과 리듀스 함수만을 작성

    : 데이터노드에서 실행됨. 

      (데이터 전송 최소화 - 일괄처리) 

 

2. 맵리듀스 프로그래밍 모형 

 1) 맵 함수 : 입력의 <키, 값>을 새로운 <키, 값>으로 변환 

 2) 리듀스 함수 : 시스템이 수집한 <키, (값1,값2, ...)>을 다시 <키, 값>으로 변환하여 HDFS에 저장

                           ㄴ 같은 키의 값을 모아서 저장. 

 - 중간 과정은 하둡 시스템이 해결해줌 --> 프로그래머는 맵 함수와 리듀스 함수만 작성하면 된다. 

 

3. 맵리듀스 프로그래밍 예제 (11min) 

 ex) 여러 개의 문서에 등장하는 단어의 개수 세기 

 - 맵 : <단어1, 1>, <단어2, 1>, ...

          ㄴ <빅데이터, 1>, <빅데이터, 1>, <빅데이터, 1>, <이해, 1>, <이해, 1>, <하하하, 1>

 - 중간과정 : <빅데이터, (1,1,1)>, <이해, (1,1)>, <하하하, (1)> 

 - 리듀스 : <빅데이터, 3>, <이해, 2>, <하하하, 1> 

----> 이 예제의 맵함수/리듀스함수의 동작을 의사코드화 시키면 아래 1), 2)와 같다. 

1) 맵 함수의 의사 코드 

map(key:document, value:text){
	for word in tokenize(value)
    	emit(word,1) 
}

2) 리듀스 함수의 의사 코드 

reduce(key:word, value:list of 1s){
	emit(key, sum(value))
}

3) 이 예제의 동작을 구조화한 그림... 

4) 단어 세기 예제의 의의.. 

 - 이 예시는 간단하지만, 전체 문서의 수가 10억 개이고 문서 하나당 100KB라면? 

   : 전체용량은 100TB...! (빅데이터) 

   ---> 하나의 디스크에 저장 불가. (분산 파일 시스템 이용해야.) 

           : 100MB/s 컴퓨터 1대로 순차 처리할 경우 12일 소요 ㅠㅠ

   ---> 컴퓨터 1,000대로 처리하면 17분 소요! :) (분산처리) 

 

4. 컴바인 함수 (19min) 

 - 노드 간 데이터 전송을 최소화하기 위해서 "중간 과정"을 제어하도록 해주는 함수.

 - 맵 작업과 동일한 데이터 노드에서 실행된다. 

 

 

III. 완전 분산모드와 의사 분산모드, 독자모드 

1. 맵 리듀스 프로그램을 편리하게 개발하기 위한 설정

 1) 완전 분산 모드 : 여러 대의 서버로 구성된 진짜 분산 시스템. 그런데 개인이 이걸 구성하는 것은 어렵다 ㅠ_ㅠ 

 2) 의사 분산 모드 : 한 대의 컴퓨터에서 완전 분산 모드를 흉내내는 것. --> HDFS 위에서 동작함. 

 3) 독자 모드 : 의사 분산 모드에서 로컬 파일 시스템을 사용하는 것. 

 

 

 

 


<맵리듀스를 사용한 통계 계산>

I. RHadoop을 이용한 맵리듀스 통계 계산

1. R로 작성하는 맵리듀스 프로그래밍 

 - 큰 데이터를 HDFS에 저장 : rhdfs에서 R로 접근 가능 : to.dfs(), from.dfs()

 - 맵과 리듀스 함수를 R로 작성 : rmr로 R에서 맵리듀스 프로그램을 실행. 

 

2. 정규방정식 (23min) 

    ㄴ 이 방정식을 풀면 베타 햇(^β) 값을 구할 수 있다... 

 

 

 


<빅데이터 기술의 정리>

1. 빅데이터 요소 기술 구성 및 분류 

빅데이터 기술 해당 기술
수집 ETL, 크롤링 엔진, 로그수집기, 센싱, RSS, 공개API
공유 멀티 테넌트 데이터 공유, 협업 필터링
저장 병렬 DBMS, 하둡, NoSQL
처리 실시간 처리, 분산 병렬처리, 인메모리 처리, 인데이터베이스 처리 
분석 통계분석, 데이터 마이닝, 텍스트 마이닝, 예측분석, 평판분석, 소셜 네트워크 분석
시각화 시간 시각화, 분포 시각화, 관계 시각화, 비교 시각화, 공간 시각화 

 

2. R과 빅데이터 기술의 결합

 - 비분산 저장 및 처리 기술과 쉽게 결합 : 빅메모리, 빅애널리틱스

 - 분산 저장 처리 및 처리 기술과도 쉽게 결합 : 하둡

 - 부가가치는 빅데이터 분석에 있음 : R의 확장성을 활용 

 

 

반응형