Spark on Angel同时支持yarn和local两种运行模型,从而方便用户在本地调试程序。
spark on Angel本质上是一个spark的application,但是多了一个附属的application。在任务提交成功后,集群上会出现两个独立的application,一个是spark application,一个是angel-PS application,两个application不关联,一个spark on Angel的作业删除,需要用户或者外部系统同时kill两个。

Sona部署流程

安装spark

  • 参考spark安装

安装sona

编译sona
编译环境依赖
* Jdk >= 1.8
* Maven >= 3.0.5
* Protobuf >= 2.5.0 需要和hadoop环境自带的protobuf版本保持一致。目前hadoop官方发布包使用的是2.5.0版本,所以推荐使用2.5.0版本,除非你自己使用更新的protobuf版本编译了hadoop。
    1. git clone https://github.com/Angel-ML/sona.git
    1. 编译:进入源码根目录
mvn clean package -Dmaven.test.skip=true
编译完成后,在源码根目录dist/target目录下会生成一个发布包:sona-0.1.0-bin.zip

编译时如果没有安装protobuf或者protobuf版本与angle的2.5.0不一致,会出现错误:

我安装官方文档要求安装的Protobuf版本为3.3>2.5.0,但是在编译的时候出现错误,提示如下:
Failed to execute goal com.github.igor-petruk.protobuf:protobuf-maven-plugin:0.6.3:run (default) on project angel-ps-core: Protobuf installation version does not match Protobuf library version

这里235服务器上是3.3版本的protobuf,因此在本机mac上编译,然后把发布包上传到服务器上供集群使用
如果是没有安装protobuf:

mac环境下做如下安装,我就解决了:
wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
tar -xzvf protobuf-2.5.0.tar.gz
pushd protobuf-2.5.0 && ./configure --prefix=/usr/local && make && sudo make install && popd

因为官方sona支持的spark版本是2.3.0,与我们所使用的集群版本2.2.1不一致,跑sona样例出现问题,找不到类,因此修改sona源码中spark版本为2.2.1,代码中有一处编译错误,修改如下

object DataTypeUtil {def sameType(left: DataType, right: DataType): Boolean =
//    if (SQLConf.get.caseSensitiveAnalysis) {if (SQLConf.CASE_SENSITIVE.defaultValue.get){equalsIgnoreNullability(left, right)} else {equalsIgnoreCaseAndNullability(left, right)}...}

pom文件修改如下:

<properties><scala.binary.version>2.11</scala.binary.version><scala.version>2.11.8</scala.version>
<!--        <spark.version>2.3.0</spark.version>--><spark.version>2.2.1</spark.version><angel.version>3.0.1</angel.version><breeze.version>0.13</breeze.version>...
</properties>
    1. 解压并解压发布包sona--bin.zip
发布包解压后,根目录下有四个子目录:
* bin:Angel任务提交脚本
* conf:系统配置文件
* data:简单测试数据
* lib:Angel jar包 & 依赖jar包
配置环境变量
  • 解压后的路径就是SONA_HOME路径
  • 把解压后的文件夹sona--bin上传到HDFS,具体就是放入你设置的SONA_HDFS_HOME路径下
  • 在sona项目/bin/spark-on-angel-env.sh脚本中设置环境变量:JAVA_HOME,HADOOP_HOME,SPARK_HOME,SONA_HOME,SONA_HDFS_HOME
其中,JAVA_HOME,HADOOP_HOME,SPARK_HOME,参考/etc/bashrc中的设置:
export JAVA_HOME=/usr/local/jdk1.8.0_131
export JRE_HOME=/usr/local/jdk1.8.0_131/jre
export SPARK_HOME=/data0/spark/spark-2.2.1-bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HADOOP_HOME=/usr/local/hadoop-2.7.3
export HIVE_HOME=/usr/local/hive-0.13.0export SONA_HOME=/data10/home/XXX_bigdata_push/zhongrui3/rsync/sona/sona-0.1.0
export SONA_HDFS_HOME=viewfs://c9/user_ext/XXX_bigdata_push/zhongrui3/depend/sona-0.1.0
  • 执行source ./spark-on-angel-env.sh,导入环境变量
注意:: 这个脚本会设置上述环境变量,同时重置系统的SONA_ANGEL_JARS以及SONA_SPARK_JARS的变量值
  • 配置jar包路径:spark.ps.jars=$SONA_ANGEL_JARS和–jars $SONA_SPARK_JARS

提交sona任务

Spark on angel 的任务本质上是一个spark的Application,完成Spark on Angel的程序编写打包后,
通过spark-submit脚本提交任务。
不过spark on angel提交的脚本有几点不同:

  • source ./spark-on-angel-env.sh
  • 配置spark.ps.jars=$SONA_ANGEL_JARS 和–jars $SONA_SPARK_JARS
  • spark.ps.instance,spark.ps.cores,spark.ps.memory是配置Angel PS的资源参数

任务提交后,YARN会出现两个Application,一个是Spark Application,一个是Angel-PS Application

运行样例(LR模型)
#! /bin/bash
- cd sona-<version>-bin/bin;
- ./SONA-example

SONA-example脚本的内容如下

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" \--files <lr.json_file_path> \--driver-memory 10g \--num-executors 10 \--executor-cores 2 \--executor-memory 4g \--class org.apache.spark.angel.examples.JsonRunnerExamples \./../lib/angelml-${SONA_VERSION}.jar \data:<input_path> \modelPath:<output_path> \jsonFile:./lr.json \lr:0.1

其中,spark.ps.instance,spark.ps.cores,spark.ps.memory是angel PS的参数
–files <lr.json_file_path>是用于上传本地json文件的路径,<lr.json_file_path>就是json文件的本地路径
jsonFile:./lr.json,这个参数表示使用你上传的json文件
–class参数用于指定要执行程序的主类和执行的jar包位置,后面的路径可以是本地路径

sona开发

需要引入的maven包如下:

  • spark相关的依赖包
    <dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.11</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-hive_2.11</artifactId><version>2.2.1</version><scope>provided</scope></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><version>2.2.1</version><scope>runtime</scope></dependency>
  • sona的依赖包
    <dependency><groupId>com.tencent.angel</groupId><artifactId>sona-dist</artifactId><version>0.1.0</version><scope>provided</scope></dependency>

编写代码,注意,scala的main入口函数定义在object对象里,执行:

mvn clean package

提交spark执行:

单机版:
spark-submit --class com.sina.XXX.dsp.SonaTest  ./dsp_sona-1.0-SNAPSHOT.jar
集群版:
spark-submit --master yarn --deploy-mode cluster --driver-memory 12g --executor-memory 2g --num-executors 10 --files $SPARK_HOME/conf/hive-site.xml  --class com.sina.XXX.dsp.SonaTest  ./dsp_sona-1.0-SNAPSHOT.jar

sona: Spark on Angel部署教程相关推荐

  1. sona:Spark on Angel任务启动流程分析

    本文主要分析腾讯的分布式机器学习平台angel3.0版本在spark上的启动流程,本文讲解的比较详细甚至啰嗦,所以建议新手同学认真阅读,不足之处还请大佬指教 ~~ 本文也有一些暂时还未理解十分透彻的地 ...

  2. sona:Spark on Angel大规模分布式机器学习平台介绍

    Angel是一个基于参数服务器(Parameter Server)开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优. Angel的核心设计理念围绕模型,将高维度的大模型切分到多 ...

  3. [Spark]PySpark入门学习教程---介绍(1)

    一 安装指引 (91条消息) [Hadoop] mac搭建hadoop3.X 伪分布模式_小墨鱼的专栏-CSDN博客https://zengwenqi.blog.csdn.net/article/de ...

  4. Hadoop+Spark 集群部署

    研究了几天 Hadoop+Spark 集群部署,虽然现在还是有点不懂(一脸懵B),想写下自己的总结,日后有新的发现再补充. 我安装时候的参考教程: http://www.powerxing.com/i ...

  5. kafka不使用自带zk_kafka 安装部署教程

    kafka 安装部署教程 1. 下载 官网链接 http://kafka.apache.org/downloads 浙大源 http://mirrors.tuna.tsinghua.edu.cn/ap ...

  6. 七丶青龙nvjdc部署教程+短信验证登录对接傻妞

    青龙nvjdc部署教程+短信验证登录对接傻妞Nolanjdc 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装教程 傻妞机器人安装教程 XDD安装教程 QQ交流:10 ...

  7. 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录

    阿东安装部署教程+青龙对接阿东及傻妞实现自动登录 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装 傻妞安装教程--+命令 QQ交流:1014549449 ----- ...

  8. 一丶宝塔+青龙面板安装部署教程及命令-依赖库

    一丶宝塔+青龙面板安装部署教程及命令-依赖库 QQ交流群:1014549449 直达 - 没有服务器的先自行购买,这里推荐腾讯云2H4G首年70 点击购买 建议装centos7.6安装宝塔,后期调试及 ...

  9. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议

    Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...

最新文章

  1. Mybatis-plus多表关联查询,多表分页查询
  2. SQL Server pivot行列转换案例分析
  3. JSP 活动元素 <jsp:directive.pageimport=“zero.space.ch03.Bookbean“/> 解读
  4. ubuntu14.04+gtsam安装(亲测)
  5. jQuery选择器理解
  6. 魔方机器人之上位机编程-------- 最无厘头错误(空格)
  7. 第三次课堂总结--付胤
  8. windows计算机桌面隐藏文件,成功隐藏Windows电脑文件的四种方法
  9. C语言排序函数qsort用法
  10. 51 单片机晶振电路原理
  11. python语句中str_python中str是什么意思
  12. win10小技巧(初)
  13. java展示图片_Java中显示图片的方法
  14. UVM—virtual sequencer and virtual sequence详解
  15. Y430P拆机:安装固态硬盘+内存+重装系统梳理
  16. 羊车门问题python_用Python实现羊车门问题
  17. Android中使用Webview SSL 自签名CA证书安全校验方案
  18. PYNQ-z2的学习过程
  19. Java8 ConcurrentHashMap的get()方法真的不需要加锁吗?
  20. 计算机网络专业调研报告前言,计算机网络专业调研报告材料.docx

热门文章

  1. (不入流的排序算法)------猴子排序
  2. UE4蓝图节点文档翻译【目录】--- Expandable Area
  3. Error creating bean with name ‘compositeCompatibilityVerifier‘ defined in class pathresource之类问题解决方案
  4. 以彼之道,还施彼身:Android 模拟定位
  5. 分子生物学 第五章 DNA损伤修复和突变
  6. LightOJ 1340 Story of Tomisu Ghost
  7. android gps服务,Android检测GPS服务和定位权限是否开启
  8. 软件研发流程规范统一方案
  9. 关于Flask通过局域网访问(局域网内任意设备通过ip:port访问)
  10. PCB布局布线(3)——PCB接地设计