Storage for big web sites, MapReduce, peer-to-peer sharing
A lots of critical infracture is distributed
1.1. Purpose of Distributed System
to increase capacity via parallism, that’s CPU, disk and so on.
to tolerate faults via replication
to place computing physically close to external entities.
to achiece security via isolation: untrust code ans so on.
1.2. Chanllenges of Distributed System
Many concurrent parts, complex interactions
Must cope with partial failure
Tricky to realize performance potential
2. Lab
Lab1-MapReduce
Lab2-Raft for fault tolerance
Lab3-K/V Server
Lab4-Shared K/V service
3. Preview
Infrastracture of application
storage:focus on, useeful adstraction
communication: tool need to be used to create distributed system
computation: mapreduce
for storage and computation, out goal is to discover abstraction where use of simplyfing the interface of system(hide the distributed system, make syste look like non-distributed system)
topic
Implemenatation, Tool: RPC, Threads, Concurrency Control
Performance, Scalability: increasing number of people, increasing number of computer
Fault Tolerance
Availability:huge numbers of computer makes failure constant thing.
Recoverability:for example, save disk date for recovery.
Tool: non-volatile storage, replication
Consistency:for key-value, there are two operation: put(k, v), get(k). but in distributed system, the replica makes many version.
level of consistency
Strong consistency: make gurantee
Weak consistency: do not make gurantee
Don’t put replica(copy) in the same place
4. MapReduce
Purpose: Looking for a framework that would make it easy for non specialists to be able to write and run giant distributed computations.
Map function
run on each of input file(or chunk)
output a list of key value pair
for example, input: a b, output: <a,1> <b,1>
Reduce function
collect all output of maps
for example: each reduce deal with a word, result in<a, 2>, <b, 2>.
Output of MapReduce can be used as input of MapReduce, like PageRank
评论