2014-12-10 High-throughput Analysis of Large Microscopy Image Datasets on CPU-GPU Cluster Platforms
 
단어
Image Segmentation Pipelines
영상 분할 파이프 라인 기법
GPGPU
범용 목적 그래픽 카드:  이런 장벽을 크게 허물어 단순히 그래픽 연산뿐만 아니라 일반 범용 목적의 병렬 계산 프로세서로 써보자는 움직임이 일어났다.
 2007년, nVidia가 C언어 기반의 CUDA(Compute Unified Device Architecture)
라는 비디오 카드를 위한 프로그래밍 환경을 내놓으면서 시작되었다
ALU
ALU (arithmetic-logic unit) ; 산술논리 연산장치

 
CPUGPU
 
computational
 
OpenCL(Open Computing Language)은
개방형 범용 병렬 컴퓨팅 프레임워크이다. CPUGPUDSP등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL은 커널 코드를 작성하기 위한 C99 기반의 언어인 OpenCL C와 플랫폼을 정의하고 제어하기 위한 API를 포함하고 있다. OpenCL은 작업 기반(task-based) 및 데이터 기반(data-based) 병렬 컴퓨팅을 제공한다.
OpenGL
OpenAL
 오디오에 대한 산업계의 개방형 표준이다.
파이프라인이란 하나의 프로세스를 서로 다른 기능을 가진 여러 개의 서브 프로세스(subprocess)로 나누어 각 서브 프로세스가 동시에 서로 다른 데이터를 취급하도록 하는 기법이다.
Microscopy
현미경 관찰
throughput
처리량
offer
내놓다
fine-grain
미립자
coarse grain
거친입자
monolithic
단일체의, 획일적인, 반도체의
application processing pattern
 
bag-of-tasks pattern

variants
법규문서, 변종, 이형
feasible
실현가능한.
feature value
특징값
POSIX
 
ADIOS
 
leverage
영향력, 영향력을 발휘하다.
a range of
다양한
pathology
병리학
morphology
형태학
prefetching
  • 선반입 (prefetching) CPU 앞으로 수행될 명령어를 메모리에서 미리 인출하여 CPU 내부의 큐에 넣어 둠으로써 수행속도를 향상시키는 기법이다.
overheads
간접비
segmentation
분화
feature computation
자질 연산
nuclei
세포핵
cells
세포
delineates
대략적인 윤곽을 그리다.
morphometry.
형태 계측
MATLAB
 공학용으로 디자인된 행렬 수식을 계산하기 위한 프로그램 및 프로그래밍 언어이다. 
incorporated
통합된
Primitives
기초 요소
threshold
한계점
 deconvolution
콘볼루션을 제거하는 연산. 
 점상 분포 함수가 커지면 상이 선명하지 않게 된다.
i(xy)=o(xy)fh(xy)
[네이버 지식백과] 디콘볼루션 [deconvolution] (컴퓨터인터넷IT용어대사전, 2011.1.20, 일진사)
벡터 이미지
수학적 공식에 의해 처리되는 이미지.
점과 베지어 커브를 통해서 외곽선을 만들고 그 내부에 색상이나 패턴을 적용시켜 표현
[네이버 지식백과] 벡터 이미지 [vector image] (색채용어사전, 2007, 도서출판 예림)

 


2014-10-28 <The Google File System> 정리

 
 
슬라이드 몇 장으로 할 것인가: 15장 + 1장(소개) + 2장(첫 장, 끝 장)
영어로 구성할 것인가: 영어로.
핵심 내용은 한글로 정리:
 
밑줄은 어디에 그을 것인가. 조사해야 할 개념에 밑줄.
 
1~5
Abstract
 무정지 기능(failure tolerance)과 군집성능(high aggregate performance) 제공.
 앞으로 예측 되는 어플리케이션의 부하와 기술적 환경에 중점을 두고 새로운 파일 시스템을 설계했다.
 여기서는 분산 어플리케이션을 지원하기 위해 설계된 파일 시스템 인터페이스 확장을 소개하고, 이 설계의  다양한 측면과 실제 상황과 이론상의 벤치마크결과에 대해 이야기하려고 한다.
 
1. INTRODUCTION
우선, 구성요소(component)의 오류는 당연하다고 간주한다.
기존에 비해 훨씬 증가한 파일들의 크기이다. 
대부분의 파일이 새로운 데이터에 의해 덮어쓰여지는 것이 아니라 추가확장되어간다는 점이다.
한번 작성된 파일은 단순히 읽기만 가능하며 대부분 순차적으로만 읽혀진다. 
이러한 파일접근방식이 대용량의 파일에 적용된다고 가정하면, 기능 향상과 원자성 보장(atomicity guarantee)을 위해서 중점을 두어야 할 부분은 클라이언트의 데이터 블록 캐슁 알고리즘이 아니라 파일의 확장(appending) 알고리즘이라는 것을 알수 있다.
어플리케이션과 파일 시스템 API를 같이 설계한다는 것은 유연성 측면에서 전체 시스템의 효율을 높여준다. 
느슨한 GFS의 일관성 규약(consistency model)덕분에  어플리케이션 쪽에 귀찮은 여러 제약을 부가하지 않고 대단히 단순화된 파일 시스템을 구현할수 있었다.  또한 아토믹 어펜드 (atomic append) 기능은 별도의 동조화(synchronization)를 필요로 하지 않고도 복수의 클라이언트가 동시에 하나의 파일에 추가할수 있도록 한다.
 
2. Design Overview
2.1 Assumptions
시스템에 걸리는 부하는 대량 스트리밍 읽기와 소량 랜덤 읽기, 두 종류의 읽기 동작이 주가 된다. .
 대량의 스트리밍 읽기에서는 각각의 동작(operation)이 수백 킬로바이트 혹은 1메가바이트 이상을 읽어들이게 되고, 동일한 클라이언트에 의한 연속되는 동작은 주로 그 파일의 연장영역에서 읽어오게 된다.  소량의 랜덤 읽기는 임의의 좌표에서 수 킬로바이트단위를 읽게 된다.  속도가 중요한 어플리케이션의 경우엔 대부분, 매번 앞뒤로 읽기 작업을 행하는 것 보다 여러 랜덤 읽기 작업을 모아서 정렬후 일괄적으로 읽어들이는 방식을 취한다.
부하에는 또한 파일에 데이터를 추가하는 대량의 순차적 쓰기도 포함된다.  
  • 시스템은 반드시 복수의 클라이언트가 동일한 파일에 동시에 자료를 추가하는 것을 지원하도록 명확히 정의된 언어체계를 갖추고 있어야 한다 이러한 파일들은 종종 제작자와 소비자 사이의 연결고리(queue)나 다방향 병합(many-way merging)에 사용된다.
  • 신속한 반응속도(low latency) 보다는 고부하를 견뎌낼수 있는 대역(bandwith) 유지가 더 중요하다. 실제 대상이 되는 어플리케이션은 일부 개개 요청에 대한 응답시간을 엄격히 지켜야 하는 경우를 제외하고 대부분 데이터를 대용량 고속처리하는것에 더 큰 비중을 두고 있다.
 
2.2 Interface
 GFS는  POSIX와 같은 표준 API를 보유하고 있지는 못하지만 어느정도 친숙한 파일 시스템 인터페이스를 제공한다.
GFS는 스냅샷 기능과 레코드 추가 기능을 지원한다. 
스냅샷: 복사본을 간단히 만들 수 있는 기능
레코드 추가 기능은 복수의 클라이언트가 추가하려는 각 데이터의 내용을 보장하면서 동시에 모든 클라이언트가 하나의 파일에 그 데이터들을 추가할 수 있도록 해준다.
 이런 구조는 여러 곳에서 생성된 결과보고서를 다방향 병합하는 경우나, 복수의 클라이언트가 파일을 잠그지 않고 (lock) 동시에 데이터를 추가해야 하는 생산자-소비자 연결에 사용될 수 있다. 
 
2.3 Architecture

파일들은 고정된 크기의 조각(chunk)들로 나뉘어 저장된다.  각각의 조각은 서버 전체를 걸쳐 고유의 64비트 조각 번호 (chunk handle)을 마스터로부터 생성시 부여받게 되고 이 번호는 절대로 변경될 수 없다. 
마스터는 모든 파일 시스템의 메타데이터를 관리한다.  여기에는 네임스페이스, 접근 조절 정보, 파일 조각 매핑과 각 조각의 현재 위치등이 포함되며, 마스터는 또한 조각 임대(lease) 관리, 연결이 유실된 조각(orphaned chunk)의 유휴메모리 정리 (garbage collection), 조각 서버들간의 조각 이동과 같은 시스템 수준 동작을 관리한다.  마스터는 주기적으로 각각의 조각서버와 맥박신호(heartbeat message)를 교환함으로써 명령을 전달하고 각 서버의 상태를 수집한다.
GFS 클라이언트 코드는 이 파일시스템 API를 적용하고 있는 각각의 어플리케이션과 링크되어 어플리케이션전반에 걸친 마스터와 조각서버간의 통신에 관여하게 된다.  클라이언트는 마스터와 통신하며 메타데이터 관련 작업을 수행하지만 실제 데이터 관련 통신은 모두 조각서버로 직접 전달된다.  이시스템은 POSIX레벨의 API를 제공하지 않기 때문에 리눅스 v노드계층을 후크할 필요가 없다.
클라이언트나 조각서버 어느쪽도 파일 데이터를 캐쉬하지 않는다.  대부분의 어플리케이션은 거대한 파일의 스트림을 읽어들이거나 캐쉬하기에 너무 큰 사이즈의 데이터를 다뤄야 하기 때문에 클라이언트의 캐쉬는 거의 유용성이 없으므로, 클라이언트에서 캐슁 기능을 제거해서 시스템 전반의 동조화에 관련된 문제점을 해결할 수 있다. (메타데이터는 클라이언트 캐쉬에 저장딘다)  각각의 조각 파일은 로컬 파일로 저장되므로 리눅스의 버퍼캐쉬가 지속적으로 메모리에 데이터를 저장하기때문에 조각서버 역시 파일 데이터를 캐쉬에 저장할 필요가 없다.
 
2.4 Single Master
 master는 메타데이터만 클라이언트에게 제공하고 파일 제공은 하지 않는다. 이로서 병목현상을 해소한다.
가장 단순한 형태의 읽기 작업을 그림1과 함께 설명해보면, 우선 클라이언트는 지정된 조각 사이즈에 따라 어플리케이션이 배정한 파일의 이름을 분석하고 파일내의 조각 인덱스 오프셋을 계산한다. 그러고나서 마스터에게 파일이름과 조각인덱스를 포함한 요청을 전송하면 마스터는 해당 조각핸들과 복제의 위치를 반환하게되는데, 클라이언트는 이정보를 파일이름과 조각인덱스를 키로 삼아 캐쉬에 저장한다.
  클라이언트는 이후 복제중 하나 - 대부분 가장 가까운 복제 - 에 요청을 보낸다.  이 요청은 조각 핸들과 그 조각 내의 구체적인 바이트 범위를 포함하는데, 동일한 조각에 대한 읽기 작업은 캐쉬에 저장된 이 정보가 만료가 되거나 파일이 다시 열리기 (reopened) 전에는 마스터와의 통신이 필요없게 된다.
 
2.5 Chunk Size
 
비적극적인 공간배치 알고리즘 (lazy space allocation)을 사용하여 대형 사이즈의 조각을 사용함으로써 야기될수 있는 가장 큰 문제중 하나인 내부 파일 조각화에 의한 공간 낭비를 줄였다.
장점; 클라이언트가 조각 정보에 관해서 마스터와 통신해야 하는 횟수를 줄여준다. 클라이언트가 해당 조각 내에서 더 많은 작업을 수행할 수 있다. 고정된 TCP연결을 유지해야할 필요가 없어 네트웍의 부하를 줄일 수 있다. 전체 메타데이터의 크기를 작게 만들어 준다.
단점: 이 파일을 동시에 여러 클라이언트가 접근할 경우 이러한 조각을 저장하는 조각서버는 분쟁지역(hot spot)화 할 수 있다. 분쟁 지역 발생 문제는 GFS가 초기 일괄 처리 시스템 (batch-queue system)에 적용되었을때 발견되었는데,
 더 높은 복제율로 저장하도록 하고 각각의 일괄 처리 시스템들은 어플리케이션의 실행 시점을 미묘하게 다르게 갖도록 했다.  좀 더 근본적인 해결책으로는 클라이언트가 이런 분쟁지역이 발생할 경우 다른 클라이언트로부터 데이터를 읽어들이도록 하게 하는 것일 것이다.
 
2.6 Metadata
마스터에는 파일과 조각의 네임스페이스, 파일과 조각간의 매핑 정보, 그리고 각 조각의 복제들의 위치정보, 크게 이 세가지의 메타데이터가 저장된다.  
 
2.6.1 In-Memory Data Structures
최악의 경우 거대한 파일 시스템을 구성하기위해 메모리가 부족한 경우라 할지라도, 마스터에 추가로 메모리를 확장하는 것은 모든 메타데이터를 메모리에 저장함으로써 얻을 수 있는 간편함과 안정성, 속도, 가변성을 생각하면 저렴한 비용이라고 간주할 수 있을 것이다.
이러한 설계가 수백개이상의서버로구성된클러스터에서는흔하게발생할수있는 문제들 - 조각서버들이클러스터에추가되거나삭제되고,이름을바꾸거나오류발생,재기동등의문제 - 속에서도 마스터와조각서버간의동기를맞추는작업을간편하게할수있다.
 
2.6.3 Operation Log 부터 시작.
 작업 로그는 메타데이터에 대해 치명적일 수 있는 변경의 순차적 기록을 저장한다.
파일과 조각들은 버전을 포함해서 (4.5항 참조) 모두 생성된 논리적 시간대에 의해서 단일하고 영구적으로 구분된다.
작업로그는 원격 기기에 다시 복제되어 해당하는 로그 기록을 로컬과 원격 모두의 디스크에 갱신을 마친후에 클라이언트 작업에 응답하도록 한다.
마스터는 이 작업 로그를 다시 수행함으로써 파일시스템의 상태를 복구한다.  재기동 시간을 줄이기 위해서는 로그의 크기가 작도록 유지해야하는데, 마스터는 로그가 특정 크기를 넘어설때마다 기록을 해두고 (checkpoint) 복구시에는 이것을 로컬 디스크에서 읽어들여서 다시 수행해야 하는 로그 기록의 갯수를 최소화 한다.  이 기록은 메모리에 직접 저장할 수 있는 압축된 B트리 형태로 저장되어 추가적인 분석과정 없이도 네임스페이스 검색에 이용될 수 있다.
기록을 작성하는 동안에 발생한 오류는 복구코드가 자동으로 검색하여 불완전하게 종료한 기록들을 무시하기 때문에 전체 데이터의 무결성에 영향을 미치지 않는다.
 
2.7 Consistency Model
 GFS는 우리의 고도로 분산된 어플리케이션들을 완벽하게 지원하면서도 비교적 적용이 단순하고 효율적일수 있도록 그다지 엄격하지 않은 일관성 모델을 (relaxed consistency model) 갖추고 있다. 
 
2.7.1 Guarantees by GFS
 
파일 네임스페이스의 변경은 - 예를들어 파일의 생성과 같은 - 각각의 원자성을 가진다.  이것들은 마스터에의해서만 처리될수 있다: 네임스페이스의 잠금 기능이 원자성과 정확성을 보장한다
 데이터 갱신 이후의 파일 영역 상태는 그 갱신 작업의 종류와 갱신 성공 여부, 또 병렬로 진행된 또 다른 갱신작업의 유무에 따라 달라진다.  여기서 가능한 모든 경우를 테이블 1에 요약해 보았다. 
파일 영역은  일정(consistent) 상태,
정의(defined)
일정하지 않은 상태(inconsistent) 또한 이는 동시에 미정의상태(undefined)이 기도 하다.)
Stale replicas are garbage collected at the earliest opportunity.
 
5p
 
2.7.2 Implications for Applications
the relaxed consistency model
relying on appends rather than overwrites, checkpointing, and writing self-validating, self-identifying records.
it can filter them out using unique identifiers in the records, These functionalities for record I/O
 
3. SYSTEM INTERACTIONS
We designed the system to minimize the master’s involvement
in all operations.
 
3.1 Leases and Mutation Order
The master grants a chunklease to one of the replicas, which we call the primary.
the global mutation order is defined first by the lease grant order chosen by the
master, and within a lease by the serial numbers assigned
by the primary.
The lease mechanism is designed to minimize management
overhead at the master.

 
 
 
6p
 3.2 Data Flow
To avoid network bottlenecks and high-latency links (e.g.,
inter-switch links are often both) as much as possible, each
machine forwards the data to the “closest” machine in the
networkto pology that has not received it.
Finally, we minimize latency by pipelining the data transfer
over TCP connections.
Once a chunkserver receives some
data, it starts forwarding immediately. Pipelining is especially
helpful to us because we use a switched networkwit h
full-duplex links.
3.3 Atomic Record Appends
This is similar to writing
to a file opened in O APPEND mode in Unix without the
race conditions when multiple writers do so concurrently.
 
7p
distributed lock manager.
with traditional writes. In our workloads, such files often
serve as multiple-producer/single-consumer queues or contain
merged results from many different clients.
The client pushes the data to all replicas of the
last chunko f the file Then, it sends its request to the primary.
The primary checks to see if appending the record
to the current chunkw ould cause the chunkto exceed the
maximum size (64 MB)
If a record append fails at any replica, the client retries the
operation.
It only guarantees that the
data is written at least once as an atomic unit.
3.4 Snapshot
The snapshot operation makes a copy of a file or a directory
tree (the “source”) almost instantaneously, while minimizing
any interruptions of ongoing mutations.
4.1 Namespace Management and Locking
Therefore,
we allow multiple operations to be active and use locks over
regions of the namespace to ensure proper serialization.
GFS does not have a per-directory data structure
GFS
logically represents its namespace as a lookup table mapping
full pathnames to metadata.
8p
Since the namespace can have many nodes, read-write lock
objects are allocated lazily.
Also, locks are acquired in a consistent total order
to prevent deadlock: they are first ordered by level in the
namespace tree and lexicographically within the same level.
4.2 Replica Placement
The chunk replica placement policy serves two purposes:
maximize data reliability and availability, and maximize network b
andwidth utilization.
4.3 Creation, Re-replication, Rebalancing
Chunk replicas are created for three reasons: chunk creation,
re-replication, and rebalancing.
chunk creation - 1) below-average disksp ace utilization. 2) limit the number of “recent” creations(
creation itself is cheap, it reliably predicts imminent heavy write traffic), 3) spread replicas of a chunkacross racks.
re-replicates - a chunkserver becomes unavailable / Finally, to minimize the impact of failures on running applications,
rebalances - moves replicas for better disks pace and load balancing.
4.4 Garbage Collection
It does so only lazily during regular garbage collection at both the file and chunk levels.
4.4.1 Mechanism
the file is just
renamed to a hidden name that includes the deletion timestamp.
파일의 이름을 삭제 시간으로 바꾸고 히든파일로 만든다. 3일뒤에 삭제.
three days
orphaned chunks - HeartBeat message
4.4.2 Discussion
the main disadvantage:
Applications that repeatedly create and delete
temporary files may not be able to reuse the storage right
away.
9p
4.5 Stale Replica Detection
the master maintains a chunk version number
to distinguish between up-to-date and stale replicas.
The master removes stale replicas in its regular garbage
collection.
5. FAULT TOLERANCE AND DIAGNOSIS
5.1 High Availability
two simple yet effective
strategies: fast recovery and replication.
5.1.3 Master Replication
The master state is replicated for reliability.
Moreover, “shadow” masters provide read-only access to
the file system even when the primary master is down.
They are shadows, not mirrors.
 
10p
5.2 Data Integrity
each chunkserver must independently verify the integrity of its own copy by maintaining
checksums.
If a block does not match the recorded checksum, the chunkserver returns an error to the requestor
and reports the mismatch to the master
In response, the requestor will read from other replicas, while the master
will clone the chunk from another replica.
If we do not verify the first and last blocks before overwriting them
partially, the new checksums may hide corruption that exists
in the regions not being overwritten.
5.3 Diagnostic Tools
diagnostic logging
6. MEASUREMENTS
연구환경
one master, two master replicas, 16 chunkservers, and
16 clients.
 
11p
6.1.1 Reads
125 MB/s when the 1 Gbps link
The aggregate read rate reaches 94 MB/s (
because as the number of readers increases,
so does the probability that multiple readers simultaneously
read from the same chunkserver)
 
12.5 MB/s per client when its 100 Mbps
network
 

6.1.2 Writes
6.2 Real World Clusters
6.2.1 Storage
6.2.2 Metadata

prefix-compressed form
12p
6.2.3 Read and Write Rates

6.2.4 Master Load
therefore is not a bottleneckfor these workloads.
6.2.5 Recovery Time
40% of the number of chunkservers)
where each clone operation is allowed to consume at most
6.25 MB/s (50 Mbps). All chunks were restored in 23.2 minutes,
6.3 Workload Breakdown
6.3.1 Methodology and Caveats
13p
6.3.4 Master Workload

14p
7. EXPERIENCES
a variety of issues, some operational and some technical.
biggest problems were diskan d Linux related.
 ex. Linux 2.2 kernels - fsync()명령어. a single reader-writer lock 문제. mmap(), pread() 명령어
 
- conclusion
the qualities essential
GFS는 다수의 저가형 상용 하드디스크를 활용해서 분산 컴퓨팅 환경 구축을 위한 필수 품질을 구현했다.
design decisions
설계상의 결정은 구글의 특수한 설정에 맞도록 했지만, 많은 부분 대규모 분산 처리 시스템에 유효하다.
reexamining traditional file system -> different points in the design space
기존의 파일 시스템에 대한 재평가와 더불어 디자인 공간에서의 다른 점들을 찾았다.
다른점 - component failures > exception , huge files, append > read 
 -> file system interface to improve the overall system.
무정지 서비스 제공 fault tolerance - monitoring + replicating data + recovery +@ checksumming.
동시 접속 상에서의 퍼포먼스 보장 high aggregate throughput
기술적 기반 - separating file system control: master, chunkservers and clients.
no bottleneck
 
결론.
GFS는 저렴한 기기들로 구성된 파일 시스템의 필수 품질을 예증했다.
 
# Summary
 
ABSTRACT
  • file system interface extensions designed to support distributed applications
분산 어플리케이션 지원을 위한 파일 시스템 인터페이스 확장
Keywords
  • Fault tolerance, scalability, data storage, clustered storage
 
1. INTRODUCTION
  • First, component failures are the norm rather than the exception.
Therefore, constant monitoring, error detection, fault tolerance, and automatic recovery must be integral to the system.
  • Second, files are huge by traditional standards.
  • Third, most files are mutated by appending new data rather than overwriting existing data.
대부분의 파일들은 새로운 데이터를 추가하는 작업이 덮어쓰는 작업보다 많다.
Design assumptions and parameters such as I/O operation and blocksizes have to be revisited.
  • Fourth, co-designing the applications and the file system API benefits the overall system by increasing our flexibility.
  • Main Purpose: over 1000 storage nodes, over 300 TB of diskst orage, and are heavily accessed by hundreds of clients on distinct machines on a continuous basis.
 
2. DESIGN OVERVIEW
 2.1 Assumptions
  • inexpensive commodity components -> fail -> monitor & recover
  • We expect a few million files, each typically 100 MB or larger in size. (optimized for Multi-GB files)
 
 
 
 
 


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 트랜잭션 특성중의 하나다.

 


임백준 저자와 함께하는 데이터과학자를 꿈꾸는 히치하이커를 위한 안내서

1. 데이터 과학자란
• 데이터 분석가 : SQL로 데이터를 수집하는 사람들.
• 데이터엔지니어 : 데이터를 A지점에서 B지점으로 옮기는 사람들.
• 통계학자 : 통계를 가지고 데이터를 분석.
• 머신러닝 엔지니어 : 머신러닝을 하는 소프트웨어 엔지니어.
• 데이터 과학자란 위의 역할의 부분들을 공통분모로 갖고 있으면서, 데이터 문제를 갖고 해결할 수 있는 방법, 아이디어를 가지고 있는 사람.
2. 데이터 과학의 난제들.
• Data Scarcity : 쓸만한 데이터가 없다. 전세계적으로 10%정도의 데이터만 사용하고 있지만, 실제로 사용할 수 있는데이터는 부족하다.
• Cold Start Problem : 새로운 상품이나, 새로 등록한 사람에게 적용할 수 있는 데이터가 없다. 
• 비정형데이터 : 코드나 구조를 갖는 데이터가 아니라, 자연어나 공통적인 의미를 뽑아내거나 분석이 어려운 데이터들이 많다.
3. Technology Stack : 데이터 과학에서는 툴은 그저 툴이 뿐이다. 하지만 표준화할 필요는 있다. 
• Language : Python
• Library : Tensorflow, Scikit-learn, CUDA, Keras
• Editor : Pycharm
• Data Engineering : Apache Spark
4. 기본적인 통계에 대한 이해는 필요하다. 
• 추천 : Head First Statistics: 실생활 예제로 배우는 정말 쉬운 통계 이야기
5. 기술개념 (깊게 이해하지 않아도 소통이 가능한 정도는 알아둘 것.)
• 평균분산
• 표준분포
• 표준편차
• P value
• Precision / Recall
• F-score
• Regression
• Overfitting
• Gradient Descent 
• Stochastic
• Cost/Loss Function
• Back Propagation
• Drop out

6. Deep Learning이 만능열쇠다? 딥러닝의 문제점 
• Data hungry : 필요로 하는 결과를 위해서 데이터를 무지 필요로 함.
• 예측이나 답에 대해 도출한 방법에 대한 설명을 하지 못한다.
• Uncertainty : 불확실성을 제대로 처리할 수 없다. 어느정도 가능성을 가지고 얘기하는 지 알 수 없다. (예를 들면, 몇 % 확률로 암을 진단하는지.)
• One shot learning, Transfer learning,,,Bayesian Probability - 불확실성을 다루는 통계학
• Incremental Learning
• Neuroevolution
7. 데이터분석을 수행할 때 중요한 것들.
• Data curation
• Feature Engineering (Labeling), Feature generation
8. 데이터과학자가 갖어야 할 기술
• 프로그래밍
• 통계학
• 머신러닝
• 선형대수 (행렬, 역행렬,,,,)
• 지저분한 데이터를 다루는 능력. (대부분의 실제 데이터는 지저분하다. Kaggle에서 제공하는 데이터처럼 깔끔하지 않다.)
• 의사소통 능력 - 좋은 분석가는 스토리가 있다 (커뮤니케이션 능력)
9. 데이터과학자가 되기 위한 공부
• Andrew Ng 교수의 Cosera 강의
• 추천 Youtube - 3 Blue 1 Brown
• 추천 도서 : 빅데이터가 만드는 세상
• 추천 도서 : Hands on machine learning
• 추천 도서 : Hands-On Machine Learning with Scikit-Learn and TensorFlow
#임백준 #한빛미디어 #데이터과학

+ Recent posts