728x90

DKU/분산처리 19

Distributed System 19

Apache Projects이전 글에서 작성된 MapReduce는 단일 처리에는 효율적이지만, 다단계 알고리즘에서는 비효율적이다.데이터 공유를 위한 효율적인 기본 기능이 없으며, 단계 간 상태는 분산 파일 시스템으로 저장되어 복제 및 디스크로의 저장으로 인해 속도가 느려지기 때문이다. Disk-based framework(e.g., MapReduce)는 중간 결과를 디스크에 저장하며, 각 쿼리마다 데이터를 디스크에서 다시 로드한다. 따라서 장애 복구가 용이하다. ETL(Extract, Transform, Load)와 같은 작업에 적합하다.Memory-based framework(e.g., Spark)는 중간 결과를 메모리에 유지하여 I/O 비용을 절감한다. 따라서 메모리 가용성에 민감하다. 데이터셋에 적..

DKU/분산처리 2024.12.15

Distributed System 18

Hadoop EcosystemBig data빅데이터는 방대한 양의 데이터를 의미하는 포괄적인 용어다.이 데이터를 효율적으로 처리하기 위한 프레임워크와 연구 개발 (R&D) 이니셔티브를 포함한다. 빅데이터의 3V는 다음과 같다.Volume: 데이터의 방대한 크기Velocity(속도): 데이터의 생성 속도 및 처리 속도 요구사항Variety(다양성): 다양한 데이터 소스와 형식빅데이터는 서로 다른 출처에서 발생하며, 크기와 형식도 다양하다.Velocity는 데이터 생성 속도 뿐만 아니라 데이터 처리 속도를 포함한다. Structured vs Unstructured Data구조적 데이터는 고도로 조직화된 데이터로, 주로 관계형 데이터베이스(relational database)나 데이터 웨어하우스(data wa..

DKU/분산처리 2024.12.15

Distributed System 17

SecurityDependability vs Security: 신뢰성과 보안신뢰할 수 있는 컴퓨터 시스템은 그 서비스를 제공할 것이라고 정당하게 믿을 수 있는 시스템이다. 신뢰성과 관련된 요구사항RequirementDescriptionAvailability(가용성)Readiness of usage: 사용준비Reliability(신뢰성)Continuity of service delivery: 서비스 제공의 유지Safety(안전성)Very low probability of catatrophes: 비극의 낮은 가능성Maintainability(유지보수성)How easy to be repaired: 얼마나 수리하기 쉬운가 이 외의 의도적인 실패는 일반적으로 보안 문제로 간주된다.CIA Triad: CIA 삼각형..

DKU/분산처리 2024.12.14

Distributed System 16

Fault Tolerance 이어서Failure Detection: 오류 감지프로세스가 실제로 충돌했는지를 신뢰성 있게 감지하는 방법일반적인 모델: 각 프로세스는 장애 감지 모듈을 장착하고 있으며, 프로세스 P가 다른 프로세스 Q 반응을 요청한다. Q가 반응하면, P는 Q가 살아있다고 간주하며, Q가 t 시간 내에 반응하지 않으면, P는 Q가 충돌했다고 의심한다.실질적인 구현: P가 t 시간 내에 Q로부터 heartbeat(정기적인 상태 확인 메시지)을 받지 못하면, P는 Q를 의심한다. 이후 Q가 P에게 메시지를 보내면, P는 Q에 대한 의심을 멈추며 P는 timeout 값 t를 늘린다. Q가 실제로 충돌했다면, P는 Q에 대한 의심을 계속 유지한다. Reliable Remote Procedure Ca..

DKU/분산처리 2024.12.13

Distributed System 15

Fault Tolerance 이어서Consensus: 합의하나 이상의 시스템이 값을 제안할 때, 시스템들이 어떻게 합의하여 하나의 값을 결정할까?전제 조건(Prerequisite)이 있는데, 결함 허용 프로세스 그룹에서는 모든 비결함 프로세스가 다른 비결함 프로세스와 동일한 명령을 동일한 순서로 실행해야된다는 것이다. 이 말은, 비결함 그룹 구성원들은 다음에 실행할 명령에 대해 합의해야된다는 것이다.Flooding-based Consensus 시스템에는 프로세스 그룹 P = {$P_1, ... P_n$}이 있고, Fail-stop 실패 의미론(신뢰할 수 있는 실패 감지 기능)을 가정한다. 클라이언트가  특정 프로세스 $P_i$에 접촉하여 명령 실행을 요청하면, 모든 $P_i$는 제안된 명령 목록을 유지한..

DKU/분산처리 2024.11.21

Distributed System 14

Fault ToleranceDependability: 신뢰성컴포넌트는 클라이언트에게 서비스를 제공한다. 그리고 서비스를 제공하기 위해 그 컴포넌트는 다른 컴포넌트의 서비스를 필요로 할 수 있다. 즉, 컴포넌트는 다른 컴포넌트에 의존할 수 있다는 것이다.다음은 신뢰성과 관련된 요구사항들이다.Availability(가용성): 사용 가능Reliability(신뢰성): 서비스의 연속적 제공Safety(안전성):  아주 낮은 재앙(catastrophes) 가능성Maintainability(유지보수성): 수리하기 용이컴포넌트 C가 시간 T = 0에서 정상적으로 작동한 상태에서 [0, t) 동안 정상적으로 작동할 확률을 Reliability R(t) 라고한다.Mean Time To Failure, MTTF (평균 고..

DKU/분산처리 2024.11.18

Distributed System 13

이전 글에서는 데이터 중심의 일관성 모델에 대해서 알아봤다.이번엔 클라이언트 중심 일관성 모델에 대해서 알아보자. Client-centric Consistency Models: 클라이언트 중심 일관성 모델데이터 중심 일관성 모델은 데이터 저장소에 대해 시스템 전체의 일관성 보장을 목표로 한다.하지만 클라이언트 중심 일관성 모델은 주로 동시 업데이트가 거의 없는 애플리케이션에 사용되기 때문에, 대부분의 연산은 데이터를 읽는데 중점을 둔다.따라서 매우 약한 일관성이 특징이다. 시스템 전반의 일관성을 유지하기 보다는, 특정 클라이언트의 요구에 집중함으로써 시스템 전체의 일관성을 피할 수 있는 방법을 보여준다. 대부분의 대규모 분산 시스템은 확장성을 위해 복제를 적용하지만, 약한 일관성만 지원한다.예들 들어, ..

DKU/분산처리 2024.11.11

Distributed System 12

Replication: 복제복제의 목적은 가용성(availability), 신뢰성(dependability), 또는 성능(performance)을 향상시키는 것이다.이때 복제 가시성(replica visibility)에 대한 정보가 없어도 이러한 목적을 달성할 수 있어야한다. 분산 시스템인만큼, 시스템 내에서 상태의 복제를 숨겨서 사용자나 애플리케이션이 복제를 인식하지 못하도록 하는 복제 투명성(replication transparency)이 중요하다.활성 복제(Active replication)는 여러 복제본이 동시에 활성 상태로 작동하여 요청을 처리한다.기본/대기 복제(Primary/Stand-by replication)는 하나의 기본 복제본이 활성 상태로 작동하고, 대기 복제본은 기본 복제본이 장애..

DKU/분산처리 2024.11.05

Distributed System 11

Coordination전 글에 이어서 coordination에 대해 더 알아보겠다. 분산 시스템에서 여러 프로세스가 특정 자원에 대한 독점적 접근을 원할 때, 각 프로세스는 다른 프로세스와 동시에 해당 자원에 접근하지 못하도록 상호 배제(Mutual exclusion)이 필요하다.허가 기반 해결 방법(Permission-based solution): 프로세스가 자신의 임계 영역에 들어가거나 자원에 접근하기를 원할 때, 다른 프로세스들로부터 허가를 받는 방식이다.토큰 기반 해결 방법(Token-based sloution): 공유 자원에 접근할 수 있는 권한을 나타내는 토큰을 소유한 프로세스만 자원에 접근 가능한 방식이다. 토큰을 가진 프로세스만 접근 권한을 가지므로 상호 배제가 보장된다.Permission..

DKU/분산처리 2024.11.05

Distributed System 10

Coordination중앙화된 시스템에서 '시간'은 모호하지 않다.프로세스 A가 시간을 요청한 후에 프로세스 B가 시간을 요청하면, 당연히 프로세스의 A의 시간이 과거일 것이다. 하지만 분산 시스템에서의 '시간'은 어떨까?분산 시스템에서의 '시간'은 많은 애플리케이션에 사용된다. 데이터 일관성 유지나, 이벤트 간의 인과관계 파악, 보안 같은 곳에 쓰인다.문제는 각 시스템이 '자신만의 시계'를 가지고 있으며, 글로벌 시계가 존재하지 않는다는 것이다. 또한 자신만의 시계인 로컬 시계는 동기화되지 않을 수 있다.글로벌한 상태를 유지하기 위해서는 이벤트가 발생한 순서를 알아야한다.이는 물리적 시간과 논리적 시간으로 나누어서 볼 수 있다.Physical Clocks순서대로 줄 세우는 게 아닌 정확한 시간을 따르는..

DKU/분산처리 2024.10.17
728x90