爲了更好地理解Apache Hadoop Spark中的大數據概念,我提出了一個問題。不知道在這個論壇上是否是脫離主題,但讓我知道。Jupyter筆記本執行器是否在Apache Spark中動態分發?
想象一下Apache Hadoop集羣包含8個由Yarn資源管理器管理的服務器。我上傳了一個文件到HDFS(文件系統),該文件配置了64MB的塊大小和3的複製計數。然後將該文件分割成64MB的塊。現在我們來想象塊被HDFS分發到節點1,2和3.
但是現在我正在用Jupyter筆記本編寫一些Python代碼。因此,筆記本啓動與此命令:
PYSPARK_DRIVER_PYTHON = jupyter PYSPARK_DRIVER_PYTHON_OPTS = 「筆記本」 pyspark --master紗線客戶--num-執行人3 --executor-鐵芯4 --executor存儲器16G
在筆記本內我從HDFS加載文件做一些分析。當我執行我的代碼時,我可以在YARN Web UI中看到我有3個執行者,以及這些作業是如何提交(分發)給執行者的。
有趣的部分是,我的執行者在啓動命令後立即修復了特定的計算節點(見上文)。例如節點6,7和8
我的問題是:
- 是我的假設是正確的,即執行節點被固定爲計算節點,一次我的HDFS塊將被轉移到執行人m從HDFS訪問(加載)文件?
- 或者,執行者是在數據所在的節點(節點1,2和3)中動態分配和啓動的。在這種情況下,我在YARN web-ui中的觀察必定是錯誤的。
我真的有興趣更好地理解這一點。