1장. 유닉스 개요 및 기본...
TRANSCRIPT
7
03 빅데이터저장및관리기술
S3 Simple Storage Service [03]
• 아마존 S3는인터넷스토리지서비스
• 개발자가더욱쉽게웹기반의컴퓨팅작업을수행할수있도록설계함
• 웹에서용량에관계없이데이터를저장하고검색할수있는웹서비스인터페
이스를제공하여개발자가확장성과신뢰성을제공하면서비용효율적인인
프라를활용할수있음
• S3의기능
‒ 아마존 S3는최소 1바이트에서최대 5TB 데이터가포함된객체의읽기·쓰기·삭제가
가능하며, 저장가능한객체수에제한이없다. 각객체는버킷에저장되며, 개발자가
할당한고유한키로검색이가능하다. 여기에사용하는버킷은여러지역중한곳에
저장할수있다. 그리고지연시간최적화, 비용최소화, 규정요구사항준수등다양
한필요에따라지역을선택할수있다
‒ 아마존 S3는현재미국표준, 미국서부(오리건), 미국서부(캘리포니아 북부), EU(아
일랜드), 아시아태평양(싱가포르), 아시아태평양(도쿄), 남아메리카(상파울루),
GovCloud(미국) 지역에서사용할수있다
8
03 빅데이터저장및관리기술
미국표준지역은네트워크맵을사용하여요청을자동으로버지니아북부나태평양
연안북서부로라우팅routing한다. 한지역에저장한객체는사용자가다른지역으로
옮기지않는한해당지역밖으로이동하지않는다. 무단액세스에서 데이터를안전하
게보호할수있도록인증메커니즘도제공한다. 객체는공개나비공개로설정할수
있고, 특정사용자에게권한을부여할수있다
‒ 아마존 S3는데이터를보호하려고안전한데이터업로드및다운로드옵션과데이터
암호화옵션을제공한다. 그리고모든인터넷개발도구에서사용할수있도록표준
기반의 REST/SOAP 인터페이스를 사용하며, 프로토콜과기능계층을더욱쉽게추가
할수있도록유연하게구성되어있다. 기본다운로드프로토콜은 HTTP이며, 대규모
로배포할때비용을절감할수있도록 BitTorrent비트토렌트프로토콜인터페이스를 추가
로제공한다. 또한반복및대용량삭제를수행할수있는옵션도있다. 반복삭제는미
리정의한기간이지난후특정객체집합을제거하도록관리자가규칙을정할수있
다. 일회성삭제는효율적으로 수행할수있도록단일요청으로최대객체를 1000개
까지삭제할수있는기능을제공한다
‒ 아마존 S3는콘텐츠저장및배포, 데이터분석용, 백업·보관및복구등의작업에이
용할수있으며, 데이터보호및대용량데이터전송기능을지원한다.
10
03 빅데이터저장및관리기술
HDFS Hadoop Distributed File System [05]
• 하둡은아파치진영에서분산환경컴퓨팅을목표로시작한프로젝트임
• 파일시스템은분산처리환경에서필수조건으로하둡은 HDFS를제공함
• 하둡은마스터Master 하나와슬레이브Slave 여러개로클러스터를구성함
• HDFS에서는마스터노드를 NameNode라고하며, 슬레이브노드를
DataNode 라고함
• HDFS는대용량파일을클러스터에여러블록으로분산하여저장함, 이때블
록들은마지막블록을제외하고모두크기가동일, 기본크기는 64MB.
• HDFS는데이터복제기법을지원함
12
03 빅데이터저장및관리기술
DynamoDB 다이나모DB
• 아마존웹에서유·무료로서비스
• 하드웨어프로비저닝, 복제, 설정패치, 사용하는응용프로그램에따른 DB 자
동분할기능등을지원하며, 사용자는원하는만큼데이터베이스를생성하거
나삭제하여데이터를저장할수있음
• DynamoDB의 모든데이터는 SSD에저장
• DynamoDB의 기본데이터모델은속성, 항목, 테이블로구성됨. 그리고속성
은 <이름, 값> 쌍으로구성. 이름은문자열이어야하며, 값은문자열, 숫자, 바
이너리,문자열세트, 숫자나바이너리집합등의형태일수있음
15
03 빅데이터저장및관리기술
MongoDB MONGOus DB; 몽고DB [07]
• 신뢰성과확장성에기반한문서지향데이터베이스
‒ 방대한양의데이터에서낮은관리비용과사용편의성을목표로하는 MongoDB는
10gen이오픈소스로개발한것으로, 상업적인지원이가능하다.
• MongoDB에서저장의최소단위는문서
‒ 각문서들은 RDBMS의테이블과비슷한컬렉션이라는 곳에수집하며, 각컬렉션은
데이터베이스에서 관리한다.
• MongoDB는자동-샤딩Auto-Sharding을이용한분산확장이가능함
‒ 샤딩은데이터를분할하여다른서버에나누어저장하는과정을말하며, 기존 DBMS
의범위질의, 보조인덱스, 정렬등연산과맵리듀스등집계연산을함께지원한다.
데이터는 BSON 형태로저장하며, C++로작성한다. 그리고서버의용량이부족할때
새로운샤드 Shard 노드를추가하면자동으로재분산Re-Distribution을수행한다
17
03 빅데이터저장및관리기술
CouchDB Cluster Of Unreliable Commodity Hardware DB;카우치DB
• 인터페이스가 JavaScript로구성된문서기반데이터베이스
• MongoDB보다제공질의, 확장성, 버전관리등에서성능이더우수함
• 다른데이터베이스와 속성Atomicity (원자성), Consistency (일관성),Isolation (독립성), Durability (지속
성); ACID이같아데이터가여러시점에서접근할때발생할수있는문제점을다
중버전동시동작제어기능으로해결할수있다. 하지만쓰기작업중충돌이
발생하면다른기술에비해클라이언트의부하가증가한다는단점이있다
• 아파치프로젝트중유일하게 Erlang얼랭을언어로사용하며데이터표현방식
은 JSON 파서를사용한다
• CouchDB는양방향복제와맵리듀스를지원하기때문에오프라인모드로사
용하다추후동기화할수있다
• CouchDB에서는충돌을예외상황으로구분하지않으며충돌문서도복제, 보
안적용등일반문서와똑같이취급한다
• 전체텍스트검색 API, 뷰인덱스, 확장가능한보안모델등을지원함
19
03 빅데이터저장및관리기술
Cassandra카산드라 [10]
• <키, 값> 구조의 DBMS로페이스북에적용하여사용하다가 2008년구글을이
용하여오픈소스로배포함
• 특징
‒ 토큰링배경의키구간이설정되어있어서버(노드)의 추가및제거만으로도 전체저
장공간의유연한확장및축소가가능하다
‒ 다른서버(노드)에 데이터복제본을구성하여특정노드에장애가발생해도서비스에
영향을주지않고, 데이터가유실되지않는다
‒ 수정·추가·삭제할 때실제스토리지구조에적용하기전에먼저 CommitLog에변경
사항을기록하므로 MySQL 대비 8~15배빠른성능을보인다
‒ 1차인덱스는열집합의열이름, 2차인덱스는열의값을기반으로한다
‒ 데이터전송프로토콜로 Thrift를사용하며, 사실상언어에의존없이모든환경에서
이용가능하다
‒ 물리파일저장구조로 SSTable Sorted, String, Table을사용함. 물리파일을저장하는구조
자체가 1차정렬조건에맞추어사전정렬된형태를유지한다
21
03 빅데이터저장및관리기술
HBase Hadoop dataBASE; H베이스
• 행, 열그룹, 열이름, 타임스탬프를이용한테이블구조
• 하둡파일시스템위에설치되며, ZooKeeper주키퍼를 노드관리에사용
• 읽기와수정은즉시실행되며, 맵리듀스연산은일괄처리됨
• 각프로세스는자신의레코드를비동기적으로업데이트함
• 영역서버Region Server 간의시스템대체작동과불량클러스터복구기능,
Get/Put/Scan/Delete의네가지동작을지원함
• 데이터모델은열집합기반의저장소로구성됨
24
03 빅데이터저장및관리기술
Redis Remote Dlctionary System; 레디스
• 메모리기반의 <키, 값> 저장공간, NoSQL 이나인메모리솔루션으로분류하
기도함, 다양한데이터구조를지원하며, 메모리에저장된내용을지속시키려
고파일로싱크하는기능을제공한다
• 데이터타입
‒ String : 일반적인문자열로최대 512MB까지지원, 문자열뿐만아니라숫자와 JPEG
등바이너리파일도저장가능
‒ Set : string의집합. set 간의연산을지원하는데 이것으로교집합, 합집합, 차집합등
을빨리얻을수있음
‒ stored set : 일종의가중치가설정된데이터타입. 데이터는오름차순으로내부정렬
되며, 정렬되어있는만큼 score 값범위에따른질의, 톱랭킹에따른질의등이가능
‒ Hashe : 값내의 <필드, 문자> 쌍으로, RDBMS의기본키한개와문자열필드하나로
구성된테이블
‒ list : 문자열의집합으로저장되는데이터로형태는 set과비슷하지만, 일종의양방향
연결리스트임. list 앞과뒤에서 Push/Pop 연산을이용하여데이터를삽입·삭제할 수
있고, 지정된인덱스값을이용하여지정된위치에데이터를삽입·삭제할수있음
26
03 빅데이터저장및관리기술
Riak리악
• DynamoDB 계열에속함. 데이터모델은 <키, 값> 저장형식을취하는데, 값은
JSON문서가저장되는문서지향데이터베이스형식임
• 구성
‒ 링형태의데이터분산저장구조
‒ Riak의클러스터링 단위는크게노드와 v노드로구분할수있는데, 노드는물리적인
서버를말하며, v노드는논리적인서버를말함.
‒ Riak은이링구조를실행하는중에도동적으로재설정(노드의 추가·삭제) 가능
‒ 노드를동적으로재설정해야 하는상황이발생하면 Riak이데이터를변형된링구조
에따라자동으로재배포함
28
03 빅데이터저장및관리기술
Hypertable하이퍼테이블
• C++ 언어로개발됨, Hypertable은열그룹과타임스탬프개념을사용함
• HQL이라는 SQL과비슷한명령어를제공하여 RDBMS와기능이비슷함
• C++ API를완벽하게제공하고, Java로개발된 HBase보다성능이뛰어남
29
03 빅데이터저장및관리기술
ZooKeeper주키퍼
• 하둡의분산처리시스템(Hadoop, Chukwa, Pig 등)을관리하는분산처리시
스템을일괄적으로관리하는시스템
• 다중서버집합을묶어관리해주는시스템으로야후의분산코디네이터임
• 분산처리시스템의장애문제해결을위해개발됨
30
03 빅데이터저장및관리기술
Voldemort볼드모트
• LinkedIn에서개발, Java 기반의 <키, 값> 저장형식인데이터베이스로일종의
해시테이블임
• 복잡한구조의벡엔드로, 분산대형클러스터환경에서동작함
• 일관성있는해싱을사용하여키와관련된저장위치를빠르게조회할수있고,
버전을제어하여일치하지않는값들을신속하게처리함
• 여러개의값을매우비슷한시간에여러클라이언트에서기록할때한번의
읽기연산으로거의동시간에기록한값을처리함