1. 程式人生 > >關於spark入門報錯 java.io.FileNotFoundException: File file:/home/dummy/spark_log/file1.txt does not exist

關於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  就讀取啟動命令的主機的檔案,即在哪臺機啟動就讀取哪臺機

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

---恢復內容結束---

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

廢話開始:

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  就讀取啟動命令的主機的檔案,即在哪臺機啟動就讀取哪臺機

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