livy的部署和使用

Livy概述

Livy是Apache Spark的一个REST服务,通过Livy,可以实现在任意的平台上通过Http请求提交Spark任务。

  • 通过livy提交的spark任务,对原始的spark脚本没有任何入侵
  • livy支持多用户、多任务并行的和spark集群进行交互
  • 可以在python、scala、java中通过livy进行spark批任务的处理

Livy部署

Livy的部署只需要在spark集群的master节点上进行部署即可。
这里默认依赖的spark和hadoop都已经就位,并不需要从头安装。

下载livy

# 下载地址:http://livy.incubator.apache.org/download/
wget https://www.apache.org/dyn/closer.lua/incubator/livy/0.7.1-incubating/apache-livy-0.7.1-incubating-bin.zip

修改配置文件

  1. 修改livy.conf
cp livy.conf.template livy.conf & vim livy.conf

需要调整的基础信息如下:

#Livy会话所使用的Spark集群运行模式
livy.spark.master = yarn

#######其他可以根据自身项目需求进行设置,不想修改默认就好########

#Livy会话所使用的Spark集群部署模式
livy.spark.deploy-mode=cluster
#默认使用hiveContext
livy.repl.enable-hive-context = true
#开启用户代理
livy.impersonation.enabled = true
#设置session空闲过期时间
livy.server.session.timeout = 1h
#yarn/local本地模式或者yarn模式
livy.server.session.factory = yarn
  1. 修改livy-env.sh
cp livy-env.sh.template livy-env.sh & vim livy-env.sh

需要调整的基础信息如下:

#Spark安装目录
HADOOP_CONF_DIR=/opt/software/hadoop-3.0.0/etc/hadoop
#Hadoo配置目录
SPARK_HOME=/opt/software/spark-2.5.2-bin-without-hadoop

启动Livy

# 启动livy
./apache-livy-0.7.1-incubating-bin/bin/livy-server start

# 关闭livy
./apache-livy-0.7.1-incubating-bin/bin/livy-server stop

Livy使用

livy默认的接口为8998, 在配置文件没有显式的声明其他端口的时候,可以直接向当前的端口提交任务。

# 提交任务
curl -H "Content-Type: application/json" -X POST -d '{"driverMemory": "20G","numExecutors": 60,"executorCores": 4,"executorMemory": "25G","conf": {"spark.dynamicAllocation.enabled": "False","spark.default.arallelism": "2000","spark.sql.shuffle.partitions": "200","spark.memory.fraction": "0.8","spark.port.maxRetries": "256"},"file": "${file_path_on_hdfs}","args": ["--date=20220420"]}' http://${spark-master-url}:8998/batches/ | python -m json.tool

通过上述命令提交后,返回如下,会包含生成的livy-session的id。
livy-submit-return

# 获取指定batch_id的session状态
curl -X GET http://${spark-master-url}:8998/batches/${batch_id}/state | python -m json.tool
# 获取指定batch_id的session-log
curl -X GET http://${spark-master-url}:8998/batches/${batch_id}/log | python -m json.tool
# 中断指定batch_id的session,同时会中断application
curl -X DELETE http://${spark-master-url}:8998/batches/${batch_id} | python -m json.tool

livy的部署和使用
https://zermzhang.github.io/2022/04/20/linux/livy的部署和使用/
作者
知白
发布于
2022年4月20日
许可协议