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的值,代表一個資料
資料也會有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處理,並確保順序正確
(Torque– Use the Torque node health mechanism to disable/fix ‘sick’ nodes• Great reduction in amount of support issues• Address problems in bulk)
沒有留言:
張貼留言