2017-02-20 71 views
0

如何在同一時間運行2次spark提交? 我有一個簡單的火花(我的電腦上沒有額外的配置)與4核心分配。同時提交多個Spark應用程序(動態資源分配)

如果我試圖提交的應用2周的時間,第二個得到 「WARN TaskSchedulerImpl:初始作業不接受任何資源;檢查你的集羣用戶界面,以確保工人註冊,並擁有足夠的資源」

代碼: 從未來進口print_function

import sys 
from operator import add 

from pyspark.sql import SparkSession 

if __name__ == "__main__": 

    spark = SparkSession\ 
     .builder\ 
     .appName("test")\ 
     .getOrCreate() 

    rdd = spark.sparkContext.parallelize(xrange(1000000000), 100) 
    print(rdd.sample(False, 0.1, 81).count()) 

    spark.stop() 

我如何嘗試啓動它們: ./spark-submit --master火花:// myaddresshere:7077 --name 「APP1」 --conf火花。 shuffle.service.enabled = true - -conf park.shuffle.service.enabled = true /path_to_py_file.py

我知道我可以預先設置要使用的內核數量,但我的目的是動態分配資源。如果只有1個任務正在運行=>消耗100%,如果他們是4個任務=> 25%。

我試過多個選項,但沒有運氣。

任何提示將不勝感激。

+0

Spark動態分配只對執行程序級別有效,這意味着當任務在隊列中堆積時,它將分配更多的執行程序。如果可以分配額外的執行程序取決於其設置和可用資源。另外請記住,在本地運行時,驅動程序也需要內核。 – LiMuBei

回答

0

看起來您正在本地運行,因此沒有像Yarn這樣的資源管理器來分配資源。您的應用程序可能運行與

val conf = new SparkConf() 
    .setMaster(local[*]) 

告訴火花使用所有的內核..你不能使用動態值這裏將取決於未來的提交。

你要求的是一個資源管理器,它將在應用程序之間平均分配資源......我不知道任何確切提供的資源。

動態分配等配置將允許資源管理器根據需要提供應用資源,但對於2個應用(可能不會),這不一定是50%。

據我所知,除了「告訴」Spark外,還有多少執行程序可供使用,每個執行程序有多少個內核(使用spark-submit參數或spark-defaults配置)以便資源均勻分佈。

相關問題