1. 程式人生 > >對分散式儲存和平行計算的一點思考

對分散式儲存和平行計算的一點思考

分散式儲存:
首先是檔案在HDFS上面以128M塊大小儲存(3份),這三塊是在不同節點的(機架感知),我覺的好處是容錯還有當計算是這個節點資源不夠可以去塊所在的另一節點執行,不用拉取資料。
可以通過fs.getfileblocklocation()獲取塊位置
平行計算:
1、MR使用預設的輸入格式,一個塊就是一個切片,切片數就是並行度,就是MapTask個數,所有資料塊同時計算,reduceTask數可以設定,reduce生成的檔案在reduce任務所在節點
2、spark讀不同的資料來源預設並行度是不同的,讀HDFS檔案預設也是一塊為一個分割槽,要理解RDD的彈性分散式資料集,對於一個job可以看下圖


每個stage中的分割槽數就是並行度,就是一個task,我們再提交spark任務的時候要指定excutor和每個excutor的cores個數,excutor個數乘以cores就是最大並行度,一個core執行一個task
一般要對spark任務重分割槽,官方來說分割槽數是最大並行度的2-3倍,充分利用資源
還有個job之間預設是序列的,如果讓job之間並行(用Executor實現多執行緒方式處理Job)可以看http://blog.51cto.com/10120275/1961130
3、Flink的後續補充