프로그래밍 공부
작성일
2022. 10. 11. 15:18
작성자
WDmil
728x90

구조도

  Muhaut    
  MR    
Zookeeper HIVE(SQL) Yarn  
HBase MR(Map Reduce) Yarn
HDFS

Hadoob

 

MapReduce

  • 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기위한 목적으로 2004년에 제작발표한 소프트웨어 프레임워크
  • 빅데이터를 입력 -> 스크립트 분할 -> 맵핑( 키 밸류 ) -> 셔플링 ( 중복항목 확인 ) -> 리듀싱 ( 중복 값 제거, 확인 ) -> 결과 도출 (얼마나 중복되었는지, 단어는 뭐가 나왔는지)

장점

  • 단순 사용편리
  • 유연성
  • 저장구조 독립성
  • 내고장성 확보 ( 일부 고장나도 전체 영향 낮음 )
  • 확장성 높음

단점

  • 고정된 단일 데이터 흐름
  • 기존 DBMS보다 불편함 빌의
  • 단순한 스케줄링
  • DBMS와 비교하여 상대적으로 성능 낮음
  • 개발도구의 불편, 기술지원 어려움

Apache Pig

  • 하둡을 기반으로 동작하는 병렬 데이터 처리 엔진
  • 자체 스크립트 언어인 Pig Latin(피그라인) 사용함
  • 대규모 데이터 처리에 용이함
  • 고수준 언어로 방대한 양의 데이터 분석 플랫폼과 평가하는 인프라를 함께 재공함

HBase

  • 하둡 플랫폼을 위한 공개 비관계형 분산 데이터 베이스
  • 구글의 테이블을 본보기로 삼았으며 자바로 쓰여짐
  • key/value형식으로 단순한 구조를 가짐

 

  • HDFS에 데이터를 영구 보관 가능
  • 희소 행렬 방식으로 데이터를 저장함.
  • 컬럼 단위로 데이터 읽고 쓰기가 가능하다.

 

  • HDFS = 일괄 분석에 적합, 실시간 분석 불가능
  • HBas = 일괄 분석에 적합하지 않음, 실시간 분석이 가능

 


HIVE

  • 하둡 에코 시스템
  • SQL -> 하둡에서 사용하기 위해 만듬
  • 개념 = 하둡에 있는걸 SQL로 보겠다 라는것
  • 데이터 모델링 프로세싱에 사용하는 데이터 웨어하우징용 솔루션
  • SQL 데이터베이스, 테이블 동일한 형태
  • 메타스토어가 존재함

 

Schema = 테이블의 컬럼 이름, 데이터 타입, 테이블 간의 관계 등을 정의한 것

 

데이터 웨어하우징 = 데이터를 분류해서 내가 원하는 데이터를 잘 보여주는것

 

SQL과 차이점

SQL : 미리 스키마 정의하고 그틀에 맞게 데이터 입력

HIVE : 데이터 저장 -> 스키마 입힘 ( 메타스토어에 입력 )

  • SQL문을 드라이버가 컴파일러에 요청, 메타스토어의 정보를 이용해 처리에 적합한 형태로 컴파일함
  • 컴파일 된 SQL을 실행엔진으로 실행
  • 리소스 매니저가 적절하게 가져다 씀

YARN( Yet Another Resource Negotiator )

작업 스케줄링, 클러스터 리소스 관리를 위한 프레임 워크

 

Resouce Manager

  • 클러스터들로의 자원할당
  • Resource Allocation의 최상위 관리자이다.
  • 어디에 자원을 할당할지 결정하여 cluster들의 활용을 최적화 한다.
  • 또한 일의 처리요청을 받을 시 Request의 일부를 Node Manager에게 전함.

 

Node Manager

  • Slave Daemon에서 구동되며, 각 단일 노드의 Task 실행을 담당한다.
  • 개별 노드들을 관리하고 주어진 노드에서 사용자의 작업 및 Work Flow를 관리
  • Resourec Manager에 등록되며 각 노드의  heartbeats를 반환

 

  • Application Master : 개별적인 응용에서 필요로하는 자원과 Job에 대한 lifecycle을 관리한다.
  • Application은 프레임 워크에 제출된 단일 작업을 의미하며, 각각의 단일 작업은 고유한 Application Master을 지니게 된다.

 

  • 클러스터 에서 응용의 실행을 조정하고 오류를 관리. Node manager와 함께 작동. Task를 실행하고 모니터링하여 Resource Manager를통해 자원 협상

 

  • 자원 협상 후 Resource Manager로부터 적당한 Resource를 할당받고 상태를 추적하고 모니터링. 한번 Application Master가 실행되면 주기적으로 Resource Manager에 heartbeats를 전송하여 상태를 확인, 자원의 요구사항을 갱신

 

Container

  • 한 노드의 자원을 모아둔 페키지
  • 하나의 노드에 할당받은 자원들로, COntainer Live Cycle에 해당하는 Context를 통해 관리된다.
  • 레코드에는 환경 변수 맵, 원격 액세스 간으한 스토리지에 저장된 종속성, 보안 토큰, 노드 관리자 서비스의 페이로드 및 프로세스를 만드는데 필요한 명령이 포함된다.

ZOOKEEPER

하둡에코 시스템의 노드의 구성에서 트리구조로 각 동작사항을 분류함.

일종의 현상정보를 트리구조로 분류 관리함.

 

네임노드를 이용한 HA( 고가용성 )를 가능하게 하는 분산 코디네이터

고가용성 : 서버와 네트워크, 프로그램 등 정보시스템이 상당히 오랜기간동안 지속적으로 정상 운영이 가능한 성질

 

분산 환경에서 노드 간 조정자 역할을 수행

노드간 정보 공유, 잠금, 이벤트 등의 기능 수행함

 

특징

  • 다양한 활용성
  • 고가용성
  • 라이브러리
  • 뛰어난 처리량
  • 느슨한 상호작용 연결

 

  • 하나의 서버에만 서비스가 집중되지 않도록 분산해 동시에 처리함.
  • 하나의 서버의 처리 결과를 다른 서버들과 공유함
  • 분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리한다

 

  • Follower 서버들은 클라이언트로부터 받은 모든 업데이트 이벤트를 Leader에게 전달받는다.

 

쿼럼(Quorum)

합의체가 의사를 진행시키거나 의결을 하는 데 필요한 최소한도의 인원수

주키퍼 에서의 뜻

주키퍼 앙상블을 이루고 있는 모든 서버 중 과반수 서버로 이루어진 그룹을 말한다.

 


AVro

아파치의 에코 시스템이 다양한 기술과 언어로 구현되기 떄문에 각 언어간에 내부 객체를 공유해야 하는 경우가 있다.

Avro는 아파치의 하둡 프로젝트에서 개발된 원격 프로시저 호출 및 데이터 직렬화 프레임 워크이다.

 

프로시저 

SQL기반에서 데이터 간의 Sumation작업을 진행한 것을 프로시저라고 하고 이것을 SQL에 저장할 수 있다.

JAVA APP에서 요청한 데이터를 보내주는것 -= 원격 프로시저 콜

프로시저를 하지 않으면, 100만건의 데이터를 처리한다고 했을 때 SQL자체에서 처리하지 않으면 데이터를 전달 받고 작업을 진행하는데 프로시저를 통해 데이터의 저장장소에서 연산작업을 할 수 있다.

 

특징

Primitive Data Type 원시데이터 자료형

Complex Data Type 복합 데이터 자료형

 

Avro 작동방식

원시 데이터를 가져와 C# Avro 라이브러리를 사용하여 원시 데이터를 Avro 개체로 변환

Avro 데이터는 항상 스키마와 함께 직렬화 되므로 직렬화된 데이터 블록을 생성하기 위해 데이터 직렬화 단계를 수행한다.

데이터 블록은 .NET 4.5 내의 수축 옵션을 사용하여 

 

데이터 직렬화 역직렬화

 


Sqoop

RDBMS(My SQL, Oracle) 와 HDFS간 데이터를 전송하기 위해 사용하는 툴

하둡에 있는 데이터를 분석하기 위해 Export를 위해 사용하게 된다.

하둡 파일 시스템에서는 스키마가 없고 데이터와 키 벨류로 구분하게 되는데,

Sqoop은 데이터의 메타데이터를 가져오게 되고 메타데이터로 연결하게 된다.

 


Flume

데이터에 대한 흐름을 컨트롤하기 위해 만들어진 도구

소스에서 데이터 꺼내고 채널로 임시저장 싱크에 데이터 옮김

 

연속적으로 생성되는 데이터 스트림 [ 센서 데이터, 트위터 데이터, 로그 데이터, ]

수집 및 전송하고 HDFS에 저장할 수 있는 도구

 

구성방법

1소스 1채널 1싱크

쌓여있는 로그데이터를 소스가 계속 수집하고 싱크가 빼와서 HDFS에 담게되는 형식

멀티 에이전트 플로우 구성

여러개의 시스템을 거쳐서 최종 목표까지 가게되는 형식

 

Mahout(머하웃) 데이터를 핸들링한다.

분산처리가 가능하고 확장성을 가진 기계학습 라이브러리의 구현을 목표로 하였다.

 

하둡 에코시스템 이슈 : 하둡 에코시스템이 분산되어있는데, HDSF에 분할되어있는 데이터를 분석해야 하는데 기존의 데이터 분석방법은 단일 라이브러리를 기준으로 하였으나, 그 방법을 쓸수는 없다. 그래서 머하웃을 만들어냄

 

기능, = 추천, 클러스터링, 분류, 감독학습, 비감독학습

 

상호작용 하

728x90