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
중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다. 단순 체크섬과 순환중복검사 (CRC)가 있다.
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
 
 
HDFS 
 Hadoop File System은 대용량 데이터를 저장하기 위한 분산 파일시템이다. 거대한 데이터를 여러 컴퓨터에 나누어 저장하는 파일시스템 레이어를 제공하여 데이터의 양이나 시스템의 연산 능력에 선형확장성을 부여한다. HDFS는 구글이 2003년에 발표한 Google File System (GFS)을 클론한 것이다.
 MapReduce는 큰 태스크를 분산시스템에서 효과적으로 처리하기 위한 기술이다. 비교적 간단한 연산을 구현하면 수 많은 컴퓨터를 이용하여 일을 분산 처리할 수 있도록 해준다. 2004년에 구글이 같은 이름으로 낸 논문이 있으며 하둡의 MapReduce는 구글의 MapReduce를 클론한 것이다.
HBase는 HDFS상에서 구현된 NoSQL이다. 여러 업체에서 제한된 용도로 사용된다. (비트윈에서는 메인 데이터베이스로 사용한다) HBase 또한 구글의 2006년에 발표한 BigTable을 클론한것이다.
NoSQL
즉 데이터의 패러다임이 한정된 규모의 복잡성이 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작했다. 이는 기존의 데이터 저장 시스템으로는 커버할 수 없는 여러 가지 한계를 야기했고 결국에는 새로운 형태의 데이터 저장 기술을 요구하게 되었다.
NoSQL은 Not Only SQL의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.
NoSQL 공통 특징
  • NoSQL은 RDBMS와는 달리 데이터 간의 관계를 정의하지 않는다(Foreign Key , Join 등)
  • RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다. (페타바이트급)
  • 고정되지 않은 테이블 스키마.  테이블의 스키마가 유동적이다.(ID 필드는 공통이지만, 데이터를 저장하는 컬럼은 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.)

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 데이터 모델링 패턴’ 이 있다.
DB Sharding / 샤딩
샤딩은 데이터베이스가 저장하고 있는 테이블을 테이블 단위로 분리하는 방법과 테이블 자체를 분할하는 방법으로 나누어진다.

 
Colossus는 GFS의 단점을 보완하고자 만든 새로운 버전의 GFS이다.
 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.
Server mirroring is an expensive but effective strategy for achieving fault tolerance
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
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
cache
캐시란 데이터를 임시로 저장해두는 장소를 말한다. 이를테면, 사용자가 요구한 웹 페이지는 하드디스크 내의 캐시 디렉토리에 저장된다. 이런 방법으로, 사용자가 최근에 열어본 페이지로 다시 돌아왔을 때 브라우저는 시간을 줄이고 네트웍에 추가 부담을 덜기 위해, 원래의 서버에서 정보를 찾아오는 대신에 캐시로부터 데이터를 가져오는 것이다.
Implications
 
원자성
atomic
원자성(atomicity)은 데이터베이스 시스템에서 ACID 트랜잭션 특성중의 하나다.

 


+ Recent posts