2014-11-03 GFS (구글파일시스템) 어휘 및 개념정리
Fault tolerance |
Fault-tolerant describes a computer system or component designed so that, in the event that a component fails, a backup component or procedure can immediately take its place with no loss of service.
컴포넌트 에러가 발생하면, 그 즉시 백업 컴포넌트가 작동하거나 대체되어 손실 없는 서비스를 제공한다.
|
scalability |
확장성 ((사용자 수의 증대에 유연하게 대응할 수 있는 정도))
data scalability 1. 자료 규모성 2. 대규모 데이터
|
reliability |
(전산학) 시스템 신뢰도(~信賴度) |
the norm |
규정량
We treat component failures as the norm rather than the
exception, optimize for huge files that are mostly appended
to (perhaps concurrently) and then read (usually sequentially),
and both extend and relax the standard file system
interface to improve the overall system.
|
component failures |
기기고장률 |
revisited |
재고(再考) |
mutate |
돌연변이가 되다. 갱신하다.
A mutation is an operation that changes the contents or
metadata of a chunksu ch as a write or an append operation.
|
deployed for |
구비되다. 배치되다. |
checksum |
|
IDE |
통합 개발 환경 |
aggregate throughput |
총 처리량 |
IDE subsystem level |
|
chunkleases |
|
delegates authority |
|
data mutations. |
데이터 갱신작업 |
ACKNOWLEDGMENTS |
감사의 말 |
stale replica |
|
the relaxed consistency model |
Shared memory consistency models
shared memory multiprocessor system에서는 각 processor들이 변경한 데이터를
다른 processor들이 올바로(consistent하게) 접근하도록 보장해 주어야 한다.
특히나 distributed shared memory system에서는 각 메모리 노드에 대한 접근 시간이 달라지므로
이러한 작업이 무척 복잡해 질 수 있다.
따라서 이를 제공하는 정도와 방법에 따라 여러 consistency model이 존재한다.
먼저 확인해야 할 사항은
memory consistency는 processor가 program을 실행할 때
서로 다른 영역에 대한 메모리 접근 순서(ordering)를 제어한다는 것이다.
동일한 메모리 영역에 대한 접근은 반드시 순서대로 이루어져야 한다. (serialize)
물론 memory consistency를 보장하는 가장 간단한 방법은
각 processor의 메모리 접근을 순서대로 atomic하게 처리하는 것이다.
하지만 이는 (memory latency로 인해) processor의 성능에 심각한 영향을 미치게 된다.
strict consistency model은
어떠한 상황에서도(?) 특정 메모리 영역에 대한 read가 가장 최근에 write된 값을 읽도록 보장한다.
즉 processor1 (이하 P1)이 X에 write할 때 P2가 (동시에) Y를 write했고
P1이 Y를 read했다면 P1은 P2가 write한 값을 읽게 된다.
|
resilient |
회복력 있는 |
producer-consumer
queue.
|
|
name corresponding
application
|
|
leases
/ chunk lease
|
예문.
We use leases to maintain a consistent mutation order across
replicas.
|
consistent |
일관된 |
LRU buffer cache |
LRU (Last Recent Used) buffer
장점
1. 데이터 전송을 chain 방식으로 진행 , 제어 명령과 분리
2. 가까운 머신부터 전달
3. 수신과 송신을 동시에
|
network topology |
네트워크 토폴로지라 하면 네트워크의 구성을 형상화 시킨 것인데요.
그냥 구성도라 생각하면 쉬울겁니다.
|
TCP connections. |
|
Pipelining |
|
full-duplex links. |
|
traditional write |
|
Serializable |
|
O_APPEND mode in Unix |
|
synchronization, |
|
AFS |
Like AFS [5], we use standard copy-on-write techniques to
implement snapshots.
|
namespace |
A에서 정의한 함수의 이름과, B에서 정의한 함수의 이름, C에서 정의한 함수의 이름이 상당수가 동일하여 충돌이 일어나는 것이었습니다.
위의 문제를 해결하기 위해선 어떻게 해야 할까요? 바로 지금 배우게 될 '네임스페이스(namespace)'란 녀석으로 이름충돌을 미연에 방지할 수 있습니다. 네임스페이스를 간단히 말하면, 관련있는 녀석끼리 모여있는 공간을 말합니다. 아래의 예를 한번 보시죠.
|
prefix compression, |
|
inode-like |
|
locking scheme |
|
dead lock |
|
lexicographically |
사전 편집 순으로. |
racks. |
|
network bandwidth utilization |
|
clones vs replica |
Sure a clone is an exact copy. A replica is a copy that looks like the original but may have hidden differences. |
reclaim |
재생하다. 복구하다.
After a file is deleted, GFS does not immediately reclaim
the available physical storage
|
handshakes with chunkservers |
|
Hadoop File System은 대용량 데이터를 저장하기 위한 분산 파일시템이다. 거대한 데이터를 여러 컴퓨터에 나누어 저장하는 파일시스템 레이어를 제공하여 데이터의 양이나 시스템의 연산 능력에 선형확장성을 부여한다. HDFS는 구글이 2003년에 발표한 Google File System (GFS)을 클론한 것이다.
|
|
MapReduce는 큰 태스크를 분산시스템에서 효과적으로 처리하기 위한 기술이다. 비교적 간단한 연산을 구현하면 수 많은 컴퓨터를 이용하여 일을 분산 처리할 수 있도록 해준다. 2004년에 구글이 같은 이름으로 낸 논문이 있으며 하둡의 MapReduce는 구글의 MapReduce를 클론한 것이다.
|
|
NoSQL |
즉 데이터의 패러다임이 한정된 규모의 복잡성이 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작했다. 이는 기존의 데이터 저장 시스템으로는 커버할 수 없는 여러 가지 한계를 야기했고 결국에는 새로운 형태의 데이터 저장 기술을 요구하게 되었다.
NoSQL은 Not Only SQL의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.
NoSQL 공통 특징
CAP 이론
NoSQL은 분산형 구조를 띠고 있기 때문에 분산 시스템의 특징을 그대로 반영하는데, 그 특성 중의 하나가 CAP 이론이다. Consistency, Availability, Partitioning 세 가지 특징을 가지고 있으며, 이중 두 가지만 만족할 수 있다는 이론이다.
- Consistency는 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다는 기능적 특징이다(데이터 복제 중에 Query가 되면, Consistency를 제공하지 않는 시스템의 경우 다른 데이터 값이 Query 될 수 있다).
- Availability는 클러스터링된 노드 중 하나 이상의 노드가 FAIL이 되더라도, 정상적으로 요청을 처리할 수 있는 기능을 제공하는 특징이다.
- Partition Tolerance는 클러스터링 노드 간에 통신하는 네트워크가 장애를 겪더라도 정상적으로 서비스를 수행할 수 있는 기능이다.
# NoSQL분류
Key/Value Store
Ordered Key/Value Store - 데이터가 내부적으로 Key 순서로 Sorting
Document Key/Value Store - XML, JSON, YAML과 같이 구조화된 데이터 타입으로, 복잡한 계층 구조를 표현할 수 있다.
# 제품별 선호도
MongoDB가 제일 높고, Cassandra나 HBase가 그 뒤를 따른다.
# 기존 RDBMS와 차이
NoSQL은 데이터를 저장한다. 그리고 Key에 대한 Put/Get만 지원한다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
Sorting, Grouping, Join, Range Query, Index 기능이 없다. 이를 구현하는 ‘NoSQL 데이터 모델링 패턴’ 이 있다.
|
샤딩은 데이터베이스가 저장하고 있는 테이블을 테이블 단위로 분리하는 방법과 테이블 자체를 분할하는 방법으로 나누어진다.
|
|
Colossus는 2009년 Jeff Dean의 프리젠테이션에서 처음으로 잠깐 언급되었고, 2010년 Faculty Summit에서 발표된 Andrew Fikes의 프리젠테이션에 특성에 대해 간단히 소개 된적이 있었다. GFS와 다른 가장 큰 특징은 메타데이터를 샤딩하여 여러 컴퓨터에 나누어 분산 저장할 수 있게 되었다는 것인데, 이는 매우 큰 규모로의 확장을 가능하게 해주며, 좀 더 작은 파일을 사용할 수 있게 하여 어플리케이션 작성을 좀 더 단순하게 할 수 있도록 해준다.
|
|
2012년에 발표된 구글의 새로운 분산 데이터베이스이다. Spanner는 Colossus상에서 구현된 데이터베이스인데, 지리적으로 멀리 떨어진 여러 데이터센터간 운영이 가능하다. 여러 데이터센터간 운영되는 분산 환경에서, 높은 수준의 트랜잭션 뿐만 아니라 Semi-Relational 모델과 일종의 테이블 구조, SQL을 확장한 질의 언어까지도 제공한다.
|
|
High Availability |
|
no matter how |
어떻게 하든. |
hiccup |
|
cross-server redundancy |
|
loosely coupled system |
|
the canonical name |
A canonical name is the properly denoted host name of a computer or network server |
server mirroring |
Utilizing a backup server that duplicates all the processes and transactions of the primary server. If, for any reason, the primary server fails, the backup server can immediately take its place without any down -time.
|
shadow copy |
In some Windows operating systems, when a system restore point is requested, a shadow copy of a file or folder is created. The shadow copy is essentially a previous version of the file or folder at a specific point.
|
데이터 완전성 ((입력된 데이터가 변경·파괴되지 않은 상태)) |
|
HTML5 |
|
Web vs internet |
internet이 더 큰 개념. (ftp, e-mail, 등등이 속한다)
인터넷은 컴퓨터가 서로 연결되어 통신을 주고받는, 컴퓨터끼리의 네트워크를 일컫는 말이고, 웹은 그 인터넷상에 정보가 얽혀있는 무형의 정보 네트워크를 말합니다.
|
divergent replicas |
파편화된 복제 데이터들. (파편화 현상) |
the semantics |
|
propagate |
전파하다 |
computation |
계산 |
incrementally |
증가하여 |
business as usual
|
평상시와 다를 바 없이 행동해라 |
transient |
일시적인, 순간적인 |
RPC requests and
replies.
|
|
10% hitrate |
|
saturated |
포화된 |
culprit |
원인, 용의자, 범인 |
pipelining scheme |
|
illegible |
판독이 어려운 |
pipelining scheme |
|
pipelining the data transfer |
|
intervention |
간섭 |
respectively. |
각자, 제각기 |
prefix-compressed form |
|
copy-on-write. |
|
hobbled |
다리를 절뚝거리다. 버벅이다. |
fetched |
To load an instruction or piece of data from memory into a CPU's register. All instructions must be fetched before they can be executed. |
binary searches |
|
leeway |
여지 |
Methodology |
방법론 |
Caveats |
통고, 경고 |
heuristically |
|
parallelism |
|
Explicit |
분명한 |
cumbersome |
크고 무거운, 번잡한 |
conversely |
역으로 |
outpace |
앞지르다. |
Breakdown vs failure vs exception |
|
conceived |
상상하다 |
rudimentary |
가장 기본적인, 흔적의 |
range of IDE protocol versions |
|
kernel |
|
redundancy check |
(컴퓨터) 중복 검사 ((여분의 비트를 부가하여 잘못을 검출하기))
|
Json |
간단한 데이터를 xml보다 좀 더 간단하게 표현하기 위해 만든 것이다. XML보다 기능이 적기 때문에 파싱도 빠르고 간단하기 때문에 클라이언트 사이드에서, 특히 모 바일에서 더욱 유용하겠다. 사실 서버 입장에서도 더 유용하기 때문에 많은 서비스들이 XML보다는 JSON을 권장한다.
JSON 그자체 는 단순히 데이터 포맷일 뿐이다. 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다.
AJAX와는 별개의 개념이지만 AJAX가 없다면 JSON이라는 개념은 필요 없을 것이다. AJAX를 사용해 데이터를 주고 받을 때 그 데이터 포맷으로 JSON을 사용하는 것이다.
|
HTML5 |
4.5 Text-level semantics |
리눅스 명령어 fsync |
버퍼 내용을 디스크로 쓰기
|
리눅스 명령어 mmap() |
메모리 매핑 명렁어
mmap() 호출은 파일기술자 fd가 가리키는 객체를 파일에서 offset 바이트 지점을 기준으로 len 바이트만큼 메모리에 맵핑하도록 커널에 요청한다.
|
리눅스 명령어 pread() |
pread() 는 파일 기술자 fd 의 변위 offset (파일의 시작에서) 에서 count 바이트를 buf로 시작하는 버퍼로 읽는다. |
rack awareness |
Never loose all data if entire rack fails.
|
하둡 관련 링크 |
|
offset |
오프셋이란, 두 번째 주소를 만들기 위해 기준이 되는 주소에 더해진 값을 의미한다. 예를 들어, 만약 아래의 수식에서 C가 100번지의 주소를 가리키고 있다면, 그 수식의 결과는 107번지를 의미할 것이다.
C + 7
여기서 이 수식 내의 "7"이, 바로 오프셋이다.
|
applications |
어플리케이션 이란 것은 운영체제를 제한 나머지 프로그램으로 컴퓨터를 부릴 수 있는 소프트웨어를 총칭한다 |
API |
|
cache |
|
Implications |
|
원자성
atomic
|
'Data Science 데이터 과학' 카테고리의 다른 글
빅데이터 분석을 통한 조혈모세포 기증에 대한 대중 인식과 실제 (0) | 2018.02.19 |
---|---|
하둡 (Hadoop) 한글 지원 (UTF-8) 지원 (0) | 2018.02.18 |
2014-12-10 High-throughput Analysis of Large Microscopy Image Datasets on CPU-GPU 용어정리 (0) | 2018.02.18 |
<The Google File System> 논문 정리 (2) | 2018.02.18 |
임백준 저자와 함께하는 데이터과학자를 꿈꾸는 히치하이커를 위한 안내서 (0) | 2018.02.11 |