2016-05-12 100 views
0

我正在嘗試設置Spark JobServer(SJS)以在獨立Spark集羣上執行作業。我試圖在SPARK集羣的其中一個非主節點上部署SJS。我沒有使用碼頭工具,但試圖手動。StandAlone集羣中的Spark Job-Server配置

我很困惑SJS github中的幫助文檔,尤其是deployment部分。我是否需要編輯local.conf和local.sh來運行它?

有人能指出在火花集羣中設置SJS的步驟嗎?

謝謝! 基蘭

更新: 我創建了一個新的環境,在集羣中的一個節點部署jobserver:這裏是它的細節:

env1.sh:

DEPLOY_HOSTS="masked.mo.cpy.corp" 
APP_USER=kiran 
APP_GROUP=spark 
INSTALL_DIR=/home/kiran/job-server 
LOG_DIR=/var/log/job-server 
PIDFILE=spark-jobserver.pid 
JOBSERVER_MEMORY=1G 
SPARK_VERSION=1.6.1 
MAX_DIRECT_MEMORY=512M 
SPARK_HOME=/home/spark/spark-1.6.1-bin-hadoop2.6 
SPARK_CONF_DIR=$SPARK_HOME/conf 
SCALA_VERSION=2.11.6 

env1.conf

spark { 

    master = "local[1]" 
    webUrlPort = 8080 
    job-number-cpus = 2 

    jobserver { 
    port = 8090 
    bind-address = "0.0.0.0" 
    jar-store-rootdir = /tmp/jobserver/jars 
    context-per-jvm = false 
    jobdao = spark.jobserver.io.JobFileDAO 
    filedao { 
     rootdir = /tmp/spark-job-server/filedao/data 
    } 
    datadao { 
     rootdir = /tmp/spark-jobserver/upload 
    } 

    result-chunk-size = 1m 
    } 

    context-settings { 
    num-cpu-cores = 1 
    memory-per-node = 1G 
    } 
    home = "/home/spark/spark-1.6.1-bin-hadoop2.6" 
} 

回答

0

是的,你已經編輯了兩個文件,使它們適合你的c光澤。

部署的步驟說明如下:


  1. 複製config/local.sh.template<environment>.sh並根據需要編輯。

這個文件主要是用於由部署腳本,並通過server_start.sh腳本中使用的環境變量。最重要的是:部署主機(它是運行作業服務器的ip或主機名),用戶和執行組,JobServer內存(它將成爲驅動程序內存),spark版本和spark home。


  • 複印config/shiro.ini.templateshiro.ini和編輯適當。注意:僅當認證=時需要
  • 如果您要使用shiro身份驗證,那麼您需要執行此步驟。


  • 複印config/local.conf.template<environment>.conf和編輯適當。
  • 這是JobServer和JobServer將創建的上下文的主要配置文件。您可以在此文件中設置的屬性的完整列表可以在this link上看到。


  • bin/server_deploy.sh <environment>
  • 編輯配置文件之後,可以部署使用該腳本。該參數必須是您爲.conf.sh文件選擇的名稱。

    運行腳本後,JobServer將連接到在.sh文件中輸入的主機,並創建一個包含一些控制文件的新目錄。然後,每次需要更改配置條目時,都可以直接在遠程計算機上執行:.conf文件將以您選擇的名稱出現,.sh文件將重命名爲settings.sh

    請注意,如果您尚未在運行此腳本的計算機與遠程計算機之間配置基於SSH密鑰的連接,則會在執行期間提示您輸入密碼。

    如果你有遠程計算機上創建目錄的問題,你可以嘗試一下mkdir創建它們(他們必須在.sh文件的INSTALL_DIR配置條目匹配),而改變他們的所有者用戶和組匹配輸入.sh配置文件。


  • 在遠程服務器上,與server_start.sh啓動它在展開目錄並與server_stop.sh
  • 這是非常豐富的停止它。一旦你完成了所有其他的步驟,您可以通過運行該腳本server_start.sh在遠程計算機上啓動JobServer服務,你可以用server_stop.sh


    +0

    感謝@ Daniel-de-Paula的詳細步驟。但我發現,儘管如此,工作服務器並沒有啓動。我在上面的問題描述中包含了env1.sh和env1.conf。在啓動server_start.sh時,我看不到任何事情發生。我可以看到爲作業服務器啓動了一個新的PID。但8090端口沒有打開。因此,所有curl請求都無法通過服務器。任何想法缺少什麼? – Kiran

    +0

    @Kiran是否在目標計算機(即在'.sh'文件的第一行中配置的計算機)中啓動server_start.sh?也許你可以通過查看'$ LOG_DIR/jobserver'來調試(默認爲'/ var/log/jobserver') –

    +0

    @ Daneil-de-Paula:是的,我在目標機器上啓動它。這是我從一開始就做的:在本地系統中,sbt使用env1.conf和env1.sh構建了作業服務器。使用server_deploy.sh從本地系統部署到服務器。在目標系統中,啓動了火花主控和一個從屬實例。可以看到在8080端口上運行的羣集。現在嘗試啓動作業服務器,希望端口8090將會打開。但是netstat -l -n不顯示8090端口。但是我看到一個新的進程使用jobserver的新PID運行。 jobserver調試文件不指定是否出現問題。 – Kiran

    1

    停止你爲什麼不設置JOBSERVER_FG = 1,並嘗試運行server_start。 sh,這將在前臺運行該進程,並應將錯誤顯示爲stderr。