Spark jobServer搭建+提交作業執行
阿新 • • 發佈:2018-12-25
安裝scala
根據spark版本,在官網下載對應的unix版tar檔案
配置環境變數
export PATH="$PATH:/usr/scala-2.10.6/bin"
立即生效命令
source /etc/profile
部署sbt
配置環境變數
export PATH="$PATH:/usr/sbt/"
建立啟動sbt的指令碼檔案
在sbt目錄下,建立sbt檔案
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /usr/sbt/bin/sbt-launch.jar "[email protected]"
檢視sbt版本,第一次啟動會自動下載檔案
sbt sbt-version
搭建jobServer
在github上下載對應spark版本的jobServer原始碼
在config目錄下,重新命名template(模板)檔案,local.conf 和 local.sh
修改local.sh中的配置
(INSTALL_DIR: jobServer安裝路徑)
bin目錄下執行
./server_package.sh local
編譯需要較長時間,編譯成功後,在生成的job-server目錄下啟動
./server_start.sh
在8090埠檢視
打包wordcount並提交執行
在原始碼目錄下,打包job-server-tests
sbt job-server-tests/package
上傳jar包,作為一個app,名為test
curl --data-binary @/usr/spark-jobserver-0.6.2/job-server-tests/target/scala-2.10/job-server-tests_2.10-0.6.2.jar master:8090/jars/test
臨時context方式(作業執行完成後刪除context)
非同步方式提交任務
jobserver會建立自己的SparkContext,會返回一個jobID供隨後的查詢
# curl -d "input.string = a b c a b see" 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample'
{
"status": "STARTED",
"result": {
"jobId": "2e943174-63e3-41f2-bf4e-e56ff85169a9",
"context": "6d262fce-spark.jobserver.WordCountExample"
}
}
通過jobid查詢結果
# curl master:8090/jobs/2e943174-63e3-41f2-bf4e-e56ff85169a9
{
"duration": "0.278 secs",
"classPath": "spark.jobserver.WordCountExample",
"startTime": "2017-07-19T01:05:12.863-04:00",
"context": "6d262fce-spark.jobserver.WordCountExample",
"result": {
"a": 2,
"b": 2,
"see": 1,
"c": 1
},
"status": "FINISHED",
"jobId": "2e943174-63e3-41f2-bf4e-e56ff85169a9"
}
同步方式提交任務(新增sync引數,值為true)
curl -d "input.string = a b c a b see" 'master:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample&sync=true'
{
"result": {
"a": 2,
"b": 2,
"see": 1,
"c": 1
}
}
常駐context方式
建立一個常駐context,叢集為其分配資源,一直處於執行狀態(jobserver重啟會終止context,釋放資源)
curl -d "" 'master:8090/contexts/test-context?num-cpu-cores=4&memory-per-node=512m'
在context中執行任務(同步)
curl -d "input.string = a b c a b see" "localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample&context=test-context&sync=true"