關於spark入門報錯 java.io.FileNotFoundException: File file:/home/dummy/spark_log/file1.txt does not exist


不想看廢話的可以直接拉到最底看總結

廢話開始:

master:

master主機存在文件,卻報

執行spark-shell語句:  ./spark-shell  --master spark://master:7077 --executor-memory 1G --total-executor-cores 2

報錯:WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, slave02): java.io.FileNotFoundException: File file:/home/dummy/spark_log/file1.txt does not exist

明明指定了master主機,為什么會報錯slave02找不到文件呢

把文件改為file.txt  file2.txt還是同樣的錯誤,所以你就會覺得他是從slave02讀取文件的吧?

那就在slave02創建個aa.txt:

返回master執行

然后報錯

導入路徑找到不?這是很多新手就懵逼了

其實原因在於最初的執行spark-shell語句:  ./spark-shell  --master spark://master:7077 --executor-memory 1G --total-executor-cores 2

每個主機的executor默認是一個core ! 這里設置為2個,就會從其他主機拉取一個core

用jps查看3台主機的進程:

master:

slave01:

slave02:

CoarseGrainedExecutorBackend是什么?

我們知道Executor負責計算任務,即執行task,而Executor對象的創建及維護是由CoarseGrainedExecutorBackend負責的

總結:

在spark-shell里執行textFile方法時,如果total-executor-cores設置為N,哪N台機有CoarseGrainedExecutorBackend進程的,讀取的文件需要在這N台機都存在

如果設置為1,就讀取指定的master spark的文件

如果只執行   ./spark-shell  就讀取啟動命令的主機的文件,即在哪台機啟動就讀取哪台機

以上僅為個人小白的觀點,如有錯誤,歡迎糾正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM