關於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 就讀取啟動命令的主機的檔案,即在哪臺機啟動就讀取哪臺機
以上僅為個人小白的觀點,如有錯誤,歡迎糾正!