코딩뿌셔

[2과목] 분산 컴퓨팅/클라우드 인프라 기술 본문

자격증/ADP

[2과목] 분산 컴퓨팅/클라우드 인프라 기술

He__o 2022. 8. 9. 00:05

1. 맵리듀스(MapReduce)

1) 개념 및 특징

  • 구글에서 분산 병렬 컴퓨팅을 이용하여 대용량 데이터를 처리하기 위한 목적으로 제작한 소프트웨어 프레임워크
  • C++, 자바 등 언어로 적용 가능하며, 아파치 하둡에서 오픈 소스 프로젝트로 시작한 자바 기반의 'Hadoop MapReduce' 프레임워크가 동일한 기능 지원
  • 클라이언트 수행 작업 단위는 맵리듀스 잡, 잡은 Map Task와 Reduce Task로 나눠서 실행
  • 맵리듀스 작업은 특별한 옵션을 주지 않으면 Map Task 하나가 1개 블록(64MB)을 대상으로 연산 수행

1-1. 구글 MapReduce

1) 개발 배경

  • 대용량 데이터를 처리하는 데 있어 연산의 병렬화, 쟁애 복구 등 복잡성을 추상화시켜서 개발자들이 오직 핵심 기능 구현에만 집중할 수 있도록 하기 위함

2) 폴트톨러런스

  • 각 프로세스에서는 마스터에게 Task 진행 상태를 주기적을 보냄
  • 마스터는 특정 워커 태스크가 더 이상 진행되지 않거나 상태 정보를 일정 시간 동안(Heartbeat Timeout) 받지 못하면 Task에 문제가 있다고 판단
  • 맵리듀스는 Shared Nothing 아키텍처이므로 간단한 메커니즘을 가짐

1-2. Hadoop MapReduce

  • 아파치 오픈소스 프로젝트인 하둡의 맵리듀스는 구글에서 발표한 논문을 바탕으로 자바언어로 구현된 시스템

1) 아키텍처

  • 하둡은 데몬관점에서 4개의 구성요소를 가짐
네임노드   하둡을 이루는 가장 기본적이고 필수적인 데몬, 네임 스페이스를 관리하는 마스터 역할
데이터노드   분산 파일 시스템의 데몬으로 파일의 실질적인 데이터 입출력에 대한 처리를 수행
잡트래커   맵리듀스 시스템에서 잡이라는 작업을 관리하는 마스터
태스크트래커   작업을 수행하는 워커 데몬, 슬레이브에 해당

2) 실행절차

   ① 스플릿(Split)

   ② 맵(Map)

   ③ 컴바인(Combine)

   ④ 파티션(Partition)

   ⑤ 셔플(Shuffle)

   ⑥ 정렬(sort)

   ⑦ 리듀스(Reduce)

3) 하둡의 성능

  • 맵리듀스의 sort는 어떠한 작업을 실행하더라도 Map에서 Reduce로 넘어가는 과정에서 항상 발생하는 내부적인 프로세스
  • sort 작업은 데이터가 커질수록 처리 시간이 선형적을 ㅗ증가함

2. 병렬 쿼리 시스템

  • 직접 코딩하지 않고도 쉽고 빠르게 서비스나 알고리즘을 구현하고 적용할 수 있는 환경에 대한 필요성 대두
  • 스크립트나 사용자에게 친숙한 쿼리 인터페이스를 통해 병렬 처리 시스템 개발, 사용자가 맵리듀스를 쉽게 사용할 수 있도록 새로운 쿼리 언어로 추상화된 시스템

2-1.구글 Sawzall

  • 맵리듀스를 추상화한 최초의 스크립트 형태 병렬 쿼리 언어
  • 사용자가 이해하기 쉬운 인터페이스를 제공하여 맵리듀스 개발 생산성 향상
  • 이후 오픈소스 프로젝트인 Pig, Hive도  Sawzall과 유사

2-2. 아파치 Pig

  • 야후에서 개발해 오픈소스 프로젝트화한 데이터 처리를 위한 고차원 언어
  • 하둡 맵리듀스 위에서 동작하는 추상화된 병렬 처리 언어로, 아파치 하둡의 서브 프로젝트

2-3. 아파치 하이브

  • 페이스북에서 개발한 데이터 웨어하우징 인프라로 아파치 내의 하둡 서브 프로젝트
  • Pig처럼 하둡 플랫폼 위에서 동작, 사용자가 쉽게 사용할 수 있도록  SQL 기반 쿼리 언어와 JDBC 지원
  • 하이브는 맵리듀스의 모든 기능을 지원

3. SQL on 하둡

3-1. 임팔라

1) 개념 및 특징

  • 분석과 트랜잭션 처리를 모두 지원하는 것을 목표로 만들어진 SQL 질의 엔진
  • 하둡과 Hbase에 저장된 데이터를 대상으로 SQL 질의 가능
  • 고성능을 낼 수 있도록 자바대신 C++ 사용, 맵리듀스를 사용하지 않고 실행 중 최적화 코드를 생성해 데이터 처리
  • 하이브가 하둡에 저장된 다양한 형태의 비정형 데이터를 처리하는 표준 SQL 솔루션으로 사용되지만, 더 빠른 처리가 필요한 비즈니스 요구 사항 때문에 임팔라와 같은 기술이 대두되고 있음

4. 클라우드 컴퓨팅

1) 개념 및 특징

  • 동적으로 확장할 수 있는 가상화 자원들을 인터넷으로 서비스하는 기술
IaaS   네트워크 장비, 서버와 스토리지 등과 같은 IT 인프라 자원을 빌려주는 클라우드 서비스
SaaS   서비스로서의 소프트웨어,  소프트웨어를 웹에서 사용할 수 있게 해주는 서비스
PaaS   서비스로서의 플랫폼, 애플리케이션이나 소프트웨어 개발 및 구현 시 필요한 플랫폼을 제공하는 서비스
  • VMware, Xen, KVM 등 서버 가상화 기술은 IaaS에 주로 활용됨
  • 아마존은 S3, EC2 환경을 제공하며 플랫폼을 위한 클라우드 서비스 최초 실현
  • AWS, EMR은 하둡을 온디맨드로 이용할 수 있는 클라우드 서비스

4-1. 서버 가상화

1) 개념 및 특징

  • 클라우드 컴퓨팅의 근간이 되는 기술로 사용자에게 물리적인 자원은 숨기고 논리적 자원만을 보여주는 기술
  • 하나의 서버에 여러 개의 애플리케이션, 미들웨어, 운영체제들이 서로 영향을 미치지 않으면서 동시에 사용할 수 있도록 해줌
  • 서버 가상화를 가능케하는 기술은 다양하며 메인프레임, 유닉스 서버, x86 서버 등에 따라 서로 다른 기술이나 분류체계 사용

2) 기술 효과

  • 하나의 물리적 서버에서 운영중인 서로 다른 가상머신들 사이의 접속은 정상적 네트워크 접속만 허용하며, 가상머신은 보안상 서로 분리되어 데이터 보호 받을 수 있음
  • 수행중인 애플리케이션의 장애가 다른 가상머신에는 전혀 영향을 미치지 않으며, 애플리케이션, 운영체제 장애로부터 보호받을 수 있음
  • 하나의 가상머신의 I/O 병목현상이 발생해도 다른 가상머신에서  I/O 병목현상이 발생하지 않음
  • 기존 서버 용량 증설 및 가상머신 추가를 통해 동일한 데이터센터의 물리적 자원을 이용하면서 더 많은 서버 운영 가능
  • 수시로 변화하는 각 가상머신의 자원 요구량에 맞춰 전체 시스템 자원을 재배치함으로써 자원 활용도 극대화 가능
  • 다양한 환경에서 테스트가 필요한 경우, 새로운 서버를 추가하지 않아도 테스트 환경 구성 가능
  • 필요한 자원만큼만 가상머신 할당 가능, 정확하고 안전한 서버 사이징
  • 마이그레이션 기능을 이용할 경우 운영 중인 가상머신 중지 없이 가상머신을 다른 물리적 서버로 이동시킬 수 있음

5. CPU 가상화

5-1. 하이퍼바이저

1) 개념 및 특징

  • 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하도록 하기 위한 논리적인 플랫폼
  • 물리적 서버 위에 존재하는 가상화 레이어를 통해 운영체제 수행에 필요한 하드웨어 환경을 가상으로 만들어줌
  • 사용자는 추가 하드웨어 구입 없이 새로운 운영체제 설치, 애플리케이션 테스팅 및 업그레이드를 동일한 물리적 서버에서 동시 수행 가능

2) 기능

  • 하드웨어 환경 에뮬레이션
  • 실행환경 격리
  • 시스템 자원 할당
  • 소프트웨어 스택 보존

3) 위치와 기능에 따른 분류

  • 가상화를 제공하는 하이퍼바이저가 물리적 하드웨어 또는 호스트 운영체제와의 관계에서 어디에 위치하는지에 따라 분류
  • 베어메탈 하이퍼바이저 : 하드웨어와 호스트 운영체제 사이에 위치 (반가상화, 완전가상화로 분류)
  • 호스트 기반 하이퍼바이저 : 호스트 운영체제와 게스트 운영체제 사이에 위치

5-2. 가상화 방식

1) 완전 가상화

  • 하이퍼바이저보다 우선순위가 낮은 가상머신에서는 실행되지 않는 privileged 명령어에 대해  트랩을 발생시켜 하이퍼바이저에서 실행하는 방식
  • CPU뿐만 아니라 메모리, 네트워크 장치 등 모든 자원을 하이퍼바이저가 직접 제어·관리하기 때문에 어떤 운영체제라도 수정하지 않고 설치 가능 
  • 초기 Xen에서는 완전 가상화 지원하지 않았지만 최근 Intel VT-x, AMD-V 환경에서 완전가상화 지원
  • VMware ESX Server, MS Virtual Server

2) 하드웨어 지원 완전 가상화

  • 하이퍼바이저를 거쳐 바로 하드웨어로 명령이 전달돼 빠른 성능을 보장하나 CPU 사용률이 증가함
  • 서버 통합을 목적으로 하는 경우 비효율적

3) 반가상화

  • privileged 명령어를 게스트 운영체제에서 hypercall로 하이퍼바이저에 전달하고, 하이퍼바이저는 hypercall에 대해서 privileged 레벨 상관없이 하드웨어로 명령을 수행시킴
  • CPU 나 메모리 자원의 동적 변경이 서비스 중단 없이 이뤄질 수 있으며 완전 가상화에 비해 성능이 뛰어남
  • 반가상화는 privileged 명령어를 직접 호출(hypercall) 하므로 속도는 빠르나 커널을 변경해야 함

4) 호스트 기반 가상화

  • 완전한 운영체제가 설치되고, 가상화를 담당하는 하이퍼바이저가 호스트 운영체제 위에 탑재되는 방식
  • (단점) 단일 운영체제가 취약함. 호스트 운영체제 레벨에서 보안 이슈 발생 시 게스트 운영체제의 신뢰성 문제 발생
  • VMware, Workstation, Microsoft Virtual PC

5) 컨테이너 기반 가상화

  • 호스트 운영체제 위에 가상의 운영체제를 구성하기 위한 운영 환경계층을 추가하여 운영체제만을 가상화한 방식
  • 가상화 수준이 낮기 때문에 다른 방식에 비해 빠른 성능을 보이나 호스트 운영체제의 보안 취약성에 의해 모든 가상 운영체제에 문제가 발생할 수 있음
  • 가상화를 지원하는 계층을 가상 운영환경이라고 부르며, OpenVZ, Virtuozzo, Solaris Containers, Linux-VServer 등이 있음

6. 메모리 가상화(VMware 기법)

1) 개념 및 특징

  • 한 대의 컴퓨터로 마치 여러 대의 컴퓨터를 사용하는 것과 같이 가상의 공간을 만들어주는 프로그램
  • 프로그램 주소는 물리적 메모리가아닌 가상주소 값으로 페이징 테이블을 이용하여 가상주소 값의 위치(VPN)를 실제 물리적 주소 값 위치(MPN)로 매핑하는 과정이 필요함
  • VMKernel은 서비스 콘솔, 디바이스 드라이버들의 메모리 영역을 제외한 나머지 전체 메모리 영역을 모두 관리하면서 가상머신에 메모리를 할당

2) 가상머신 메모리 할당 문제 해결 방법

  • Memory ballooning
    • VMKernel은 예약된 메모리보다 더 많은 메모리를 사용하는 가상머신 메모리 영역을 빈값으로 강제로 채워 가상머신 운영체제가 자체적으로 swappint하도록 함
  • Transparent page sharing
    • 하나의 물리적 머신에 여러 가상머신이 운영되는 경우 각 가상머신에 할당된 메모리 중 동일한 내용을 담고있는 페이지는 물리적 메모리 영역에 하나만 존재시키고 모든 가상머신이 공유하도록 함
  • Memory Overcommitment
    • 2GB 메모리를 가진 물리적 장비에 512MB를 Minimum reserved를 가질 수 있는 가상머신 5개 수행 가능

 

7. I/O 가상화

  • 하나의 물리적 장비에 여러 가상머신이 실행되고 있는 상황에서 가장 문제가 되는 것은 I/O에서의 병목현상임
  • CPU 자원의 파티셔닝만으로 가상화 기술을 제대로 활용할 수 없으며, I/O 자원의 공유 및 파티셔닝 필요

1) 가상 이더넷

  • 물리적으로 존재하지 않는 자원을 만들어내는 에뮬레이션 기능을 이용함
  • 가상 머신들 사이에 물리적 네트워크 어댑터가 없어도 메모리 버스를 통해 고속 및 고효율 통신이 가능
  • 가상 LAN 기술을 기반으로 한 네트워크 파티션도 가능하며, 별도의 물리적 어댑터와 케이블을 사용하지 않고도 네트워크 이중화, 네트워크 안정적 단절 등 효과를 얻을 수 있음

2) 공유 이더넷 어댑터

  • 여러 개의 가상머신이 물리적인 네트워크 카드를 공유할 수 있게 하며, 공유된 물리적 카드를 통해서 외부 네ㅡㅌ워크와 통신이 가능
  • 가상 머신의 개수보다 물리적 어댑터 개수가 적은 경우 여러 가상머신들이 물리적 이더넷 어댑터를 공유할 수 있게 해줌. 하나의 자원을 여러 가상머신이 공유하기 때문에 발생하는 병목현상은 피할 수 없음

3) 가상 디스크 어댑터

  • 한 대의 서버가 여러 개의 가상머신을 구성할 경우 가장 문제가 되는 부분이 외장 디스크를 사용할 수있게 해주는 파이버 채널 어댑터같은 I/O 어댑터 부족을 해결하기위함
  • 가상화된 환경에서 가상 디스크를 이용해 가상머신이 디스크 자원을 획득하는 방법에는 내장 디스크, 외장 디스크가 있음

'자격증 > ADP' 카테고리의 다른 글

[4과목] 정형 데이터 마이닝  (0) 2022.08.14
[4과목] 통계분석  (0) 2022.08.14
[3과목] 분석 마스터 플랜  (0) 2022.08.11
[3과목] 데이터 분석 기획의 이해  (0) 2022.08.09
[2과목] 분산 데이터 저장 기술  (0) 2022.08.08
Comments