코딩뿌셔
[2과목] 분산 컴퓨팅/클라우드 인프라 기술 본문
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