2008年11月29日 星期六

Cloud Computing

1.MapReduce
Map -> 將大量的資料先分割多份資料(dispatch),這些資料再送出去處理(map function)
Map可以大量被parallelize
Reduce -> 將map function所處理的結果,依據相同的key排序後,再重新整合起來
Reduce不容易被parallelize,但由於有多個不同的整體task(先Map再Reduce),所以不同的Reduce也是可以放在不同的server上執行,並不會犧牲太多的parallelism

JobTracker:用來處理由用戶丟進來的所有Job(Job會被分割成Map與Reduce),會monitor task與TaskTracker的狀況
TaskTracker:執行Mapper與Reducer

2.DFS:包含GFS, Hadoop, CloudStore
將檔案切割成固定大小的chunk(或block),檔案就是會切割成各個block存放在不同的datanode server中
使用block而非用檔案本身,主要是同一個檔放在不同的datanode可以增加IO速度
同一block可以會被replicate到不同datanode中,增加可用性
分namenode與datanode
namenode儲存所有檔名與各個block的對應,可能會有Single Point Failure
當block被讀出時,會被check block是否正確(使用CRC32),若有問題則會從另一個datanode中讀出(此時該block應該會被重新replicate一份吧?)
3.Table: BigTable, HBase, HyperTable
主要是用在儲存structure data
使用row-key, coulmn-family:qualfier, column-family:qualfier, timestamp為結構
row key即是row的值,代表一個資料

coulmn-family:qualfier的qualfier也是該column的值
coulmn-family需要先定義,表示有哪一些的column
row, column-family, timestamp都會被indexing
資料也會有version(同一個row可以有許多的version)
儲存的方式也是有一個master server與Tablet server
Master server儲存row range放在哪個tablet server中
當增加row時,會由master server決定要放在哪個tablet server中,但若是超過row數目,row range就會被split成兩個,一個留在原來的tablet server,另一個就會被移到另外的tablet server中
4.Coordination: Google Chubby, Hadoop ZooKeeper
多台機器form成一個coordination system
多台機器會挑選出一個出一個leader
每台機器的資料都是一致的,且存放在memory
read access會由當地機器處理
write access會由leader處理,並確保順序正確

5.Jute(bridge legacy data into map-reducible data)
6.HOD(Hadoop On Demand, For effective cluster sharing)
Torque
(Torque– Use the Torque node health mechanism to disable/fix ‘sick’ nodes• Great reduction in amount of support issues• Address problems in bulk)

Maui

Nagios– Usual stuff– Custom hooks into Torque

Simon– Yahoo!’s distributed cluster and application monitoring tools– Similar to Ganglia– On the roadmap to be open sourced

Hadoop相關

Hadoop相關

1.ZooKeeper (Yahoo, Apache)

2.CloudStore

3.Pig (Yahoo)

4.HBase (Powerset.com)

5.JACL (from IBM)

6.Mahout

7.Tashi

8.Hive