代码拉取完成,页面将自动刷新
Spark on Angel同时支持YARN和Local两种运行模型,从而方便用户在本地调试程序。Spark on Angel的任务本质上是一个Spark的Application,但是多了一个附属的Application。在任务成功提交后,集群上将会出现两个独立的Application,一个是Spark Application, 一个是Angel-PS Application。两个Application不关联,一个Spark on Angel的作业删除,需要用户或者外部系统同时Kill两个。
安装Spark
安装Angel
SPARK_HOME
, ANGEL_HOME
, ANGEL_HDFS_HOME
三个环境变量配置环境变量
完成Spark on Angel的程序编写打包后,可以通过spark-submit的脚本提交任务。不过,有以下几个需要注意的地方:
#! /bin/bash
- cd angel-<version>-bin/bin;
- ./SONA-example
脚本内容如下:
#!/bin/bash
source ./spark-on-angel-env.sh
$SPARK_HOME/bin/spark-submit \
--master yarn-cluster \
--conf spark.ps.jars=$SONA_ANGEL_JARS \
--conf spark.ps.instances=10 \
--conf spark.ps.cores=2 \
--conf spark.ps.memory=6g \
--jars $SONA_SPARK_JARS\
--name "LR-spark-on-angel" \
--driver-memory 10g \
--num-executors 10 \
--executor-cores 2 \
--executor-memory 4g \
--class com.tencent.angel.spark.examples.basic.LR \
./../lib/spark-on-angel-examples-${ANGEL_VERSION}.jar \
input:<input_path> \
lr:0.1 \
./../lib/spark-on-angel-examples-${ANGEL_VERSION}.jar
注意要指定Angel PS的资源参数:spark.ps.instance,spark.ps.cores,spark.ps.memory
PSContext.getOrCreate(sc)
val psW = PSVector.dense(numFeatures) // weights
val psG = PSVector.duplicate(psW) // gradients of weights
println("Initial psW: " + psW.dimension)
for (i <- 1 to ITERATIONS) {
println("On iteration " + i)
val localW = psW.pull()
trainData.map { case (x, label) =>
val g = x.mul(-label * (1 - 1.0 / (1.0 + math.exp(-label * localW.dot(x)))))
psG.increment(g)
}.count()
VectorUtils.axpy(-lr / numFeatures, psG, psW)
psG.reset
}
println(s"Final psW: ${psW.pull().asInstanceOf[IntDoubleVector].getStorage.getValues.mkString(" ")}")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。