![v2-3daecf3b5bfb6c0348ec2f9e1cc4bf3d_1440w.jpg?source=172ae18b](http://img-02.proxy.5ce.com/view/image?&type=2&guid=0331f18d-3f2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-3daecf3b5bfb6c0348ec2f9e1cc4bf3d_1440w.jpg?source=172ae18b)
无Spark Client环境的部署实现
首先,熟悉spark开发的人都知道spark的部署模式分为三种,分别为Local、Standalone、YARN,通过YARN又分为YARN-Client和YARN-Cluster ,Local模式一般就是在本地运行Spark任务,需要Spark环境的,Standalone模式是Spark自身的一种调度模式,也是需要Spark环境,YARN模式中,其实是将Spark JAR包提交到YARN上面,由YARN去开启Contioner然后去执行Spark的作业,这个其实只需要上传Spark Jar包和一些依赖包。不需要在部署Spark环境(充当一个Submit的功能,还占用节点资源)
首先,将Spark jar包和工程的build之后的jar以及工程依赖的jar包上传到HDFS上面,通过本地可以直接运行然后提交Spark 作业,代码已经放在本人Git中,地址如下:
https://github.com/bin-albin/sparkdeploy [另外提供了真实的项目实例(基于Spark Streaming的实时监控计算Pro)]使用方式也很简单,详见REDEME.MD
好的,自己的小玩意已经介绍完了,有兴趣的话可以试一下,下面介绍一下今天的主角:Apache Livy (目前在ASF孵化中)
最近发现了一个Spark周边项目 Live ,包含的功能很多都是围绕于Spark(1.6+),Livy目前版本是0.6.0-ASF孵化项目
Livy概述
Livy 是 Apache Spark的一个REST服务,Livy可以在任意平台上提交Spark作业
- Livy可以在WEB/Mobile中提交(不需要Spark客户端)可编程的、容错的、多租户的Spark作业,因此,多个用户可以并发的、可靠的与Spark集群进行交互
- 使用交互式Python和Scala
- Livy可以使用Scala或者Python语言,因此客户端可以通过远程与Spark集群进行通讯,此外,批处理作业可以在Scala、java、python中完成
- 不需要修改代码
- 对现在程序的代码修改不需要修改Livy,只需要在Maven构建Livy,在Spark集群中部署配置就可以
Apache Livy是什么?
Apache Livy是一个可以通过REST接口轻松的与Spark集群进行交互的服务,它可以很方便提交Spark作业或者Spark代码片段,同步或者异步的进行结果检索以及Spark Context上下文管理,Apache Livy还简化了Spark和应用程序服务器之间的交互,从而使Spark能够用于交互式Web /移动应用程序。其他功能包括:
- 由多个客户端长时间运行可用于多个Spark作业的Spark上下文
- 跨多个作业和客户端共享缓存的RDD或数据帧
- 可以同时管理多个Spark上下文,并且Spark上下文运行在群集上(YARN / Mesos)而不是Livy服务器,以实现良好的容错性和并发性
- 作业可以作为预编译的jar,代码片段或通过java / scala客户端API提交
- 通过安全的认证通信确保安全
Livy官网结构图:
![v2-1d8310025b2f80d0cfdecf07cae0b606_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=0331f18d-3f2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-1d8310025b2f80d0cfdecf07cae0b606_b.jpg)
Livy的安装运行至少是基于Spark1.6+,并且支持Scala 2.10和2.11,需要导入Livy环境变量如下:
export SPARK_HOME=/usr/lib/spark
export HADOOP_CONF_DIR=/etc/hadoop/conf
然后启动服务
./bin/livy-server
Livy默认情况下使用SPARK_HOME的配置,建议将Spark以YARN集群模式的方式提交应用程序,这样可以确保用户会话在YARN集群模式中合适的分配资源,在运行多个Livy服务器的时候不会导致机器过载
配置Livy
Livy在配置目录下使用一些配置文件,默认情况下是Livy安装下的conf目录。LIVY_CONF_DIR在启动Livy时,可以通过设置环境变量来提供备用配置目录。
Livy使用的配置文件是:
- livy.conf:包含服务器配置。Livy发行版附带一个默认配置文件模板,其中列出了可用的配置键及其默认值。
- spark-blacklist.conf:列出了用户不允许覆盖的Spark配置选项。这些选项将被限制为其默认值或Livy使用的Spark配置中设置的值。
- log4j.properties:Livy日志记录的配置。定义日志级别以及写入日志消息的位置。默认配置模板将打印日志消息到stderr。
一旦Livy服务器正在运行,您可以通过端口8998连接到它(这可以通过livy.server.port配置选项进行更改 )
从此再也不用编译、打包提交jar到远程服务器去执行了!
而且有数据平台构建能力的的团队,可以将该框架包装为服务,提供后前段进行提交spark作业,并且可以监控每个spark作业当时的任务进度!
希望本文对你有帮助!
感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。