livy部署及应用

一、介绍

Livy把spark交互式批处理都搬到了web上,提供restful接口,Livy一方面接收并解析客户端提交的REST请求,转换成相应的操作,另一方面它管理着客户端所启动的spark集群

Livy会为用户运行多个session,每个session就是一个常驻的spark context也可以成为一个spark集群。用户通过restful接口在对应的spark context执行代码,Livy服务端通过RPC协议与Spark集群进行通信。根据交互方式不同,Livy将会话分成两种类型:

交互式会话(interactive session):交互式会话在其启动后可以接收用户所提交的代码片段,在远端spark集群中编译并执行。

批处理会话(batch session):用户可以通过Livy以批处理的方式启动Spark应用。

这两种方式与原生spark是类似的,其中交互式会话它们的主要不同点是,spark-shell会在当前节点上启动REPL来接收用户的输入,而Livy交互式会话则是在远端的Spark集群中启动REPL,所有的代码、数据都需要通过网络来传输。

二、安装部署

1、下载

Livy - Downloads

解压即可。

2、安装配置

livy只需要配置两个文件(livy-env.sh,livy.conf):

1、livy-env.sh

cp livy-env.sh.template livy-env.sh :

export JAVA_HOME=/home/work/tools/jdk1.8.0_151
export HADOOP_CONF_DIR=/home/work/hadoop3/hadoop-3.3.5/etc/hadoop
export SPARK_HOME=/home/work/hadoop3/spark-3.3.2-bin-hadoop3
export LIVY_SERVER_JAVA_OPTS="-Xmx2g"

#export LIVY_HOME=/home/work/hadoop3/apache-livy-0.7.1-incubating-bin

#export  HADOOP_USER_NAME=hdfs

2、livy.conf

cp livy.conf.template livy.conf :

livy.spark.master = yarn
livy.spark.deploy-mode = cluster
livy.server.session.timeout = 1h

livy.repl.jars = local:/home/work/hadoop3/apache-livy-0.7.1-incubating-bin/repl_2.11-jars/commons-codec-1.9.jar,local:/home/work/hadoop3/apache-livy-0.7.1-incubating-bin/repl_2.11-jars/livy-core_2.11-0.7.1-incubating.jar,local:/home/work/hadoop3/apache-livy-0.7.1-incubating-bin/repl_2.11-jars/livy-repl_2.11-0.7.1-incubating.jar

livy.server.yarn.poll-interval = 5s

# 配置 recovery 
livy.server.recovery.mode = recovery
livy.server.recovery.state-store = filesystem
livy.server.recovery.state-store.url = hdfs://hadoop01:9000/user/livy/recovery

配置参考:Apache Spark 和 Apache Hadoop 配置属性 - SQL Server Big Data Clusters | Microsoft Learn

3、spark-blacklist.conf

cp spark-blacklist.conf.template spark-blacklist.conf :

# Disallow overriding the master and the deploy mode.
spark.master
spark.submit.deployMode

# Disallow overriding the location of Spark cached jars.
spark.yarn.jar
spark.yarn.jars
spark.yarn.archive

# Don't allow users to override the RSC timeout.
livy.rsc.server.idle-timeout

4、log4j.properties

cp log4j.properties.template log4j.properties

3、启动

bin/livy-server start

查看启动日志: cat livy-work-server.out

访问:http://ip:8998/ui

三、同类产品对比

Livy结合了spark job server和Zeppelin的优点,并解决了spark job server和Zeppelin的缺点:

四、Livy执行流程

Livy server启动相应的session,然后提交作业到Yarn集群,当Yarn拉起ApplicationMaster进程后启动SparkContext,并连接到Livy Server进行通信。

后续执行的代码会通过Livy server发送到Application进程执行。

具体执行流程说明:

  • live-server启动,启动BatchSessionManagerInteractiveSessionManager

  • 初始化WebServer,通过ServletContextListener启动InteractiveSessionServletBatchSessionServlet

  • 通过http调用SessionServletcreateSession接口,创建session并注册到sessionManagerInteractiveSessionBatchSession会创建SparkYarnAppSparkYarnApp负责启动Spark作业,并维护yarnclient,获取作业信息、状态或kill作业。

  • BatchSession是以jar包的方式提交作业,运行结束后session作业就结束。

  • InteractiveSession会启动com.cloudera.livy.repl.ReplDriverReplDriver继承RSCDriver,初始化期间会通过RPC连接到livy-server,并启动RpcServer;其次会初始化Interpreter(支持PythonInterpreterSparkInterpreterSparkRInterpreter)。接收来自livy-server,并启动RpcServer;其次会初始化Interpreter(支持PythonInterpreterSparkInterpreterSparkRInterpreter)。接收来自livy-server的信息(代码),然后通过Interpreter执行,livy-server通过RPC请求作业结果。

五、应用实战

Livy的三套接口:

Livy提供三套管理任务的接口分别是:

  • 使用Using the Programmatic API,通过程序接口提交作业。需要继承com.cloudera.livy.Job接口编程,通过LivyClient提交;

  • 使用RestAPI的session接口提交代码段方式运行;

  • 使用RestAPI的batch接口提交jar包方式运行。

1、查看session

curl 'http://hadoop01.com:8998/sessions'

参考:

1)、https://michealkz.blog.youkuaiyun.com/article/details/123822382

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值