我正在閱讀 Hadoop 和 Spark 檔案以了解 spark 在 Hadoop 集群上的作業原理。根據 Hadoop 檔案,Hadoop 集群是一組具有計算和資料存盤能力的商品硬體,并且他們假設“移動計算比移動資料便宜”。
現在,當我使用 Spark 處理存盤在 HDFS 上的大檔案時。Spark 會隨機將該檔案中的資料重新分配到 Hadoop 集群,還是知道存盤資料磁區的節點會要求各個節點處理其資料?我收到了這個問題,因為沒有提到 spark 如何處理 Hadoop 集群上的資料磁區。
如果 spark 重新分配資料,那么這種重新分配開銷背后的邏輯是什么?
uj5u.com熱心網友回復:
TLDR:沒有 Spark 不會移動資料(在 HDFS 中)以完成計算
Spark 確實會嘗試將容器分配給資料所在的節點。(這被稱為資料區域性,資料在資料所在的同一節點上處理。)如果這些節點很忙,它將不得不在其他節點上分配容器并將資料發送到節點。(通過網路洗牌)移動到其他節點的資料是“磁盤上的中間檔案”(不是永久移動的,并且會隨著時間的推移被清理。)這些中間檔案非常方便,因為它們可以充當內部 RDD 快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511163.html
下一篇:嘗試將資料保存到hdfs時出錯
