hadoop預設對3個副本的儲存策略和執行策略:
阿新 • • 發佈:2019-02-05
1,首先要先了解下什麼是rack(機架)叢集,一個叢集有多個機架,一個機架有多個機器,一個機器一個datanode或namenode節點。通常一個機架內的機器之間的網路速度會高於跨機架機器之間的網路速度。
2,但是要同時保持副本儲存策略的容錯性和高效性,第一副本:放置在上傳檔案的DN上(就是執行‘hadoop fs -put 檔名’上傳檔案命令的機器上,本地檔案上傳到同一臺機器自然要快一點),如果是叢集外提交,則隨機挑選一臺;第二副本:放置在第一副本不同機架的不同節點上;第三副本,放置在第二副本相同機架的不同節點上;其他更多副本:隨機放置在節點中。
3,在高效性方面,一個大檔案被分成多個分片,也就是多個map任務分別在多個datanode節點上處理,這裡就牽扯到任務粒度。如果有m個map任務,不一定會在m個datanode 節點上並行執行。因為可能存在一個datanode上有多個分片\資料塊\map任務,所以應該準確的說m個map任務在n個datanode節點上並行執行(注意是並行執行,這樣同時處理才會快)。
4,本地計算,在2中也存在野種思想,就是把在哪天DN上傳的檔案就把次DN作為第一副本;再者就是資料儲存在那臺機器就由哪臺機器負責進行這部分資料的計算,這樣可以減少資料在網路上的傳輸,資料在哪裡我就在哪裡計算,做到不移動資料,在業界把這形容為“移動計算比移動資料更經濟”。