hubring

빅데이터 하둡 프로그래밍 공부 정리 본문

BigData/hadoop

빅데이터 하둡 프로그래밍 공부 정리

Hubring 2020. 8. 4. 23:59

[빅데이터 하둡 프로그래밍 공부 정리]

 

 

1-1 빅데이터 정의

 

1. 서버 대로 처리할 없는 규모의 데이터

2. 기존의 소프트웨어로 처리할 없는 데이터

3.3V(Volumn velocity variety)

 

크기를 굳이 따지자면 20 TB

 

스케일   vs 스케일 아웃

스케일 : 하나의 서버에 용량을 키우는

스케일 아웃 :  분산형 컴퓨터 장비를 여러개 두는

 

 

1-2 빅데이터

 

웹페이지 데이터 

1. 크롤링 데이터 

ex) 페이지 랭크 : 수많은 페이지의 중요도를 계산

2. 검색 로그, 클릭 로그 데이터 

ex) 독감 지도, 연관 검색

 

디바이스 생성 데이터

소셜 미디어 데이터

 

1-3 빅데이터 시스템 구성

 

 

 

 

 

 

1. 데이터 수집 모듈

Flume, chukwa (오픈소스 기반)

다수의 노드로 구성된 클러스터로 부터 로그데이터 수집 -> 중앙서버 또는 저장소로 전송

->모니터링 또는 실시간 분석툴로 사용 or HDFS 분산 시스템에 저장

-> 아키텍쳐 유사

 

kafka  : 메세징 기반 링크드인에서 만듬 데이터 수집 저장 용도로 근래 많이 사용

 

 

Flume : 

 

 

 

 

하둡 모듈

 

1. HDFS : Hadoop distributed file system 라고 부르는 분산파일 

2. MapReduce : 분산처리 시스템 자바 or  스크립트 언어 or C++

 

HDFS(저장) -> MapReduce(처리)

 

MapReduce 대신 하이 레벨의 Hive Pig같은 언어로 프로그래밍 있음

 

 

하둡은 대용량의 배치 프로세싱에 적합 실시간성은 약함

따라서 하둡 데이터를 다른 컴포넌트로 옮겨야하며 이런 컴포넌트는 크게 3가지 있음

 

1. 기존 관계형 데이터 베이스

처리된 데이터의 크기가 상대적으로 작을 경우

별다른 검색이 필요 없을 경우

처리된 결과를 관계형으로 저장

 

ex) Sqoop

 

Sqoop -> 관계형 데이터 베이스와 하둡의 통신 역할 or 하둡 데이터를 관계형 데이터 처럼 사용가능

 

 

 

NoSQL

1. 제약 없이 동적으로 새로운 필드를 추가 삭제

2. 분산형 환경을 염두 처리할 있는 또는 트래픽이 훨씬 거대

3. 데이터 중복저장 가능, 서버가 고장나도 계속 사용 가능

4. 기반과 기반  전자 몽고 디비 , 후자  Hbase, 카산드라  ( Key, Value )

 

하둡 데이터를 위해 검색 엔진이 필요할 있음

 

 

데이터 시각화 모듈

1. 매틀랩 또는 R

 

 

1-4

성공 사례

 

넷플릭스 영화 추천 서비스

이베이 쿼리 로그 마이닝

트위터 대용량 머신 러닝 시스템

 

빅데이터 시스템 도입시 고려할 문제

 

ROI고려 :  , 무엇, 수익성 고려

개인 정보 노출

오픈소스로 구성된 시스템

(보안 취약, 빠른 진화, 서비스 보장의 어려움)

 

 

2-1

하둡이란?

 

 

하둡은 대용량의 데이터를 분산처리하게 해주는 아파치 레벨 오픈소스 프로젝트

리눅스 기반의 머신러닝 기반에서 동작

오프라인 배치 프로세싱에 최적화

 

2-2 

하둡 아키텍쳐

 

HDFS 마스터(네임노드), 슬레이브(데이터노드)

이중화를 위해 세컨더리 마스터를

 

Mapreduce 마스터( 트래커), 슬레이브(태스크 트래커)

 

2-3

HDFS 개요

 

파일을 여러 개의 블록으로 나누어 저장

하나의 파일은 여러 데이터 노드로 들어감

하나의 블록은 기본 64mb 업무에선 128mb

한블록 크기가 작지 않기에 작은 크기의 파일을 저장하는 것은 부적합

 

 

 

2-4

MapReduce 프레임워크

 

1. 데이터가 있는 서버로 코드를 전송

2. 데이터를 /벨류 데이터셋의 변환으로 처리

3. 함수형 언어 리스프 맴과 리듀스에 영감을 받음

 - 입력 데이터를 하나 이상의 조각으로 나눔 조각의 수만큼 각기 병렬 처리 -> 테스크

 - 테스크의 출력을 모아 최종 처리 리듀스 태스크

 

 맵과 리듀스 두가지 스탭으로 구성 입출력을 키벨류로 처리

 

(Job) : 하나의 리듀스프로그램을 잡이라 부름 

테스크(Task) : 태스크와 리듀스 테스크를 묶어 부름

 

잡트래커의 역할

 

마스터 서비스로 사용자로부터 하둡 실행 요청이 들어간 자르 파일을 입력데이터 위치 출력데이터 위치를 받아

해당 클러스터 내의 태스크 트래커들로 나눠서 실행 종료할 때까지 관리하는 역할

 

YARN

Yet Another resource negotiator

 

가장 효율적인 방법으로 계산 리소스를 할당하고 사용자 애플리케이션을 스케줄링하는 시스템으로 YARN이라 부른다.

얀은 스케줄링과 리소스관리로 데이터 지역성을 극대화 시킨다.

계산량이 많은 어플리케이션이 리소스를 독점하지 않도록 제어한다. 

사용자당 리소스 제한이나 작업 대기열당 리소스 할당량 공용 리소스 시스템의 스케쥴링에 필요한 기본적인 환경 설정을 스케줄러에 입력할 있다.

 

얀은 클러스터의 리소스를 컨테이너로 분할한다.

이러한 실행중인 컨테이너를 모니터링 하면서 리소스의 최대 할당량을 초과하지 않게 억제한다. 

이를 통해 분산 시스템을 전체적으로 원할하게 운영 클러스터의 리소스를 다수의 애플리케이션에 공평한 방식으로 공유한다. 

 

 

YARN 기본 사항

YARN Hadoop 데이터 처리를 제어하고 조정합니다. YARN에는 클러스터의 노드에서 프로세스로 실행되는 다음 가지 핵심 서비스가 있습니다.

  • ResourceManager
  • NodeManager

 

ResourceManager MapReduce 작업과 같은 응용 프로그램에 클러스터 계산 리소스를 제공합니다.

ResourceManager 이러한 리소스를 컨테이너로 제공하며, 

컨테이너는 CPU 코어 RAM 메모리의 할당으로 구성됩니다

클러스터에서 사용할 있는 모든 리소스를 결합한 다음, 코어 메모리를 블록으로 분산한 경우 리소스 블록이 컨테이너가 됩니다

클러스터의 노드에는 특정 수의 컨테이너에 대한 용량이 있으므로, 

클러스터에는 사용할 있는 컨테이너 수에 대해 고정된 제한이 있습니다.

컨테이너에 있는 리소스의 할당은 구성할 있습니다.

 

MapReduce 응용 프로그램이 클러스터에서 실행될 , ResourceManager 실행할 컨테이너를 응용 프로그램에 제공합니다

 

ResourceManager 실행 중인 응용 프로그램의 상태와 사용 가능한 클러스터 용량을 추적하고, 리소스가 완료되고 해제될 응용 프로그램을 추적합니다.

또한 ResourceManager 응용 프로그램의 상태를 모니터링하기 위한 사용자 인터페이스를 제공하는 서버 프로세스도 실행합니다.

 

 

사용자가 클러스터에서 실행할 MapReduce 응용 프로그램을 제출하면 해당 응용 프로그램이 ResourceManager 제출됩니다

이에 따라 ResourceManager 사용 가능한 NodeManager 노드에 컨테이너를 할당합니다.NodeManager 노드는 실제로 응용 프로그램이 실행되는 위치입니다

할당된 번째 컨테이너에서 ApplicationMaster라는 특별한 응용 프로그램을 실행합니다

ApplicationMaster 제출된 응용 프로그램을 실행하는 필요한 리소스를 후속 컨테이너의 형태로 확보해야 합니다

ApplicationMaster 응용 프로그램의 단계(: 단계 축소 단계) 검사하고 처리해야 데이터의 양을 결정합니다

그런 다음 ApplicationMaster 응용 프로그램을 대신하여 ResourceManager에서 리소스를 요청(협상)합니다

 

이에 따라 ResourceManager 응용 프로그램을 실행하는 사용하도록 클러스터의 NodeManager에서 ApplicationMaster 리소스를 제공합니다.

NodeManager 응용 프로그램을 구성하는 작업을 실행한 다음, 진행 상황과 상태를 ApplicationMaster 다시 보고합니다.

ApplicationMaster 다시 응용 프로그램의 상태를 ResourceManager 보고합니다이에 따라 ResourceManager 모든 결과를 클라이언트에 반환합니다.

 

 

 

 ResourceManager (RM) 최신 상태로 유지하고 컨테이너의 라이프 사이클 관리를 감독하며개별 용기의 자원 사용 (메모리, CPU) 모니터링, 노드 건강 상태 추적, 다른 YARN 응용 프로그램에 의해 악용 수있는 로그 관리 보조 서비스.

 

 

 

2-5

맵리듀스 사용 적합 분야

병렬도가 굉장히 높은 단순 작업

로그분석

머신러닝

 

부적합

리얼타임 데이터 스트림 처리 

반복실행이 많은 작업들

 

 

'BigData > hadoop' 카테고리의 다른 글

Hadoop 개념 정리  (0) 2020.08.04